Android读取服务器图片

来源:互联网 发布:淘宝认证出现bad apple 编辑:程序博客网 时间:2024/06/15 02:54
我们首先在服务器存放一张图片,链接为
http://115.159.217.226/xy.png


package com.xiaoyu.schoolelive.activities;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.ImageView;import com.xiaoyu.schoolelive.R;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;public class testActivity extends AppCompatActivity {    private String str;    private MyHandler handler1;    class MyHandler extends Handler{        @Override        public void handleMessage(Message msg) {            ImageView imageView = (ImageView)findViewById(R.id.image);            imageView.setImageBitmap((Bitmap)msg.obj);        }    }    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_test2);        handler1 = new MyHandler();        Button button = (Button) findViewById(R.id.test);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                new Thread(new Runnable() {                    @Override                    public void run() {                        try {                            String path = "http://115.159.217.226/xy.png";                            //2:把网址封装为一个URL对象                            URL url = new URL(path);                            //3:获取客户端和服务器的连接对象,此时还没有建立连接                            HttpURLConnection conn = (HttpURLConnection) url.openConnection();                            //4:初始化连接对象                            conn.setRequestMethod("GET");                            //设置连接超时                            conn.setConnectTimeout(8000);                            //设置读取超时                            conn.setReadTimeout(8000);                            //5:发生请求,与服务器建立连接                            conn.connect();                            //如果响应码为200,说明请求成功                            if(conn.getResponseCode() == 200)                            {                                //获取服务器响应头中的流                                InputStream is = conn.getInputStream();                                //读取流里的数据,构建成bitmap位图                                Bitmap bm = BitmapFactory.decodeStream(is);                                Message msg = new Message();                                msg.obj = bm;                                handler1.sendMessage(msg);                                handler1.sendMessage(msg);                            }                        } catch (Exception e) {                            e.printStackTrace();                        }                    }                }).start();            }        });    }}
总体的思想就是向服务器请求图片,获得服务器响应中的流,并将流中的数据读取,通过bitmap构成位图,利用handler异步更新UI

原创粉丝点击