首页 > 技术文章 > Android获取网络图片

hyyweb 2016-11-30 15:57 原文

/**
 * 
 * 访问网络的操作,必须放在工作线程中完成
 *
 */
public class MainActivity extends Activity {
    static List<HashMap<String, String>> list;
    static List<String> userList2 = new ArrayList(); 
    private static final int LOADSUCCESS=0x1;
    private static ImageView iv;
    private static TextView tv;
    private final myhandler handler=new myhandler(this);
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        iv=(ImageView) findViewById(R.id.imageView1);
        new Thread(new Runnable() {
            public void run() {
                try {
                    URL url=new URL("https://files.cnblogs.com/files/hyyweb/welcome.bmp");
                    InputStream in=url.openStream();
                    Bitmap bitmap=BitmapFactory.decodeStream(in);
                    String result="";
                    Message message= handler.obtainMessage(LOADSUCCESS, bitmap);
                    handler.sendMessage(message);
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }

    private static class myhandler extends Handler{
        
        private final WeakReference<MainActivity> weakReference;
        public myhandler(MainActivity mainActivity){
            weakReference=new WeakReference<MainActivity>(mainActivity);
        }
        
        public void handleMessage(Message msg) {
            MainActivity mainActivity=weakReference.get();
            if(mainActivity!=null){
                switch (msg.what) {
                case LOADSUCCESS:
                    MainActivity.iv.setImageBitmap((Bitmap) msg.obj);
                    break;
                }
            }
        }
    }

}

 

推荐阅读