android从零开始(五)读取网络图片

来源:互联网 发布:国税数据质量整改 编辑:程序博客网 时间:2024/04/28 08:25

本文的目标是学习对网络图片的读取。

1、界面设计:

这里写图片描述
界面包括一个用于输入网络图片地址的TextView,一个Button用于提交用户请求。
界面代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="${relativePackage}.${activityClass}" >    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/hello_world" /><EditText android:id="@+id/imagepath"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="http://img05.tooopen.com/images/20140919/sy_71272488121.jpg"    /><Button android:id="@+id/submit"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="@string/submit"/><ImageView android:id="@+id/imageView"    android:layout_height="wrap_content"    android:layout_width="wrap_content"/>"</LinearLayout>

2.功能实现:

package pub.tobest.netimage;import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.os.Handler.Callback;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;public class MainActivity extends Activity {    EditText mEditText;    Button submitButton;    ImageView mImageView;    Handler handle;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        Callback callBack=new Callback() {            @Override            public boolean handleMessage(Message msg) {                // TODO Auto-generated method stub                byte[] data=(byte[])msg.obj;                Bitmap bitMap=BitmapFactory.decodeByteArray(data, 0, data.length-1);                mImageView.setImageBitmap(bitMap);                return true;            }        };         handle=new Handler(callBack);    }    private void initView() {        // TODO Auto-generated method stub        mEditText=(EditText) findViewById(R.id.imagepath);        submitButton=(Button) findViewById(R.id.submit);        mImageView=(ImageView) findViewById(R.id.imageView);        submitButton.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                // TODO Auto-generated method stub                new Thread(new Runnable() {                    @Override                    public void run() {                        // TODO Auto-generated method stub                        try {                            URL url=new URL(mEditText.getText().toString());                            HttpURLConnection conn=(HttpURLConnection) url.openConnection();                            conn.setReadTimeout(1000);                            conn.setRequestMethod("GET");                            InputStream inputStream=null;                            if(conn.getResponseCode()==200){                                 inputStream=conn.getInputStream();                            }                            ByteArrayOutputStream bOutPutStream=new ByteArrayOutputStream();                            byte[] data=new byte[1024];                            int len=0;                            while((len=inputStream.read(data))!=-1){                                bOutPutStream.write(data,0,data.length-1);                            }                            byte[] bytes=bOutPutStream.toByteArray();                            Message msg=new Message();                            msg.obj=bytes;                            handle.sendMessage(msg);                        } catch (Exception e) {                            // TODO Auto-generated catch block                            e.printStackTrace();                        }                    }                }).start();            }        });    }}

3.总结:

对网络图片的读取,主要使用到HttpURLConnection类和InputStream、OutputStream类。

0 0