Imageview显示网络图片

imageview显示网络图片,其实应该是一个很简单的问题,但是当你百度一下你会发现网上给出的答案其实并不能加载网络图片,原因是因为android4.0后请求网络资源不可以放在主线程中,需要另外在子线程中通过handler传递图片资源给imageview赋值。那么让我们看看改如何去做。
首先添加权限

<uses-permission android:name="android.permission.INTERNET"/>然后布局文件如下<LinearLayout
        android:id="@+id/wb_linearlayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#7DB6E9"
        android:orientation="horizontal">
        <ImageView 
            android:id="@+id/wb2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </LinearLayout>
    创建Activity在oncreate函数中得到ImageView wb = (ImageView) findViewById(R.id.wb2);
    //从远程action取数据 展示列表列
        class GetbitmapThread extends Thread {
            private String url;
            public GetbitmapThread(String url){
                this.url = url;
            }
            @Override
            public void run() {
                URL myFileUrl = null;
                Bitmap bitmap = null;
                try {
                     myFileUrl = new URL(url);
                } catch (MalformedURLException e) {
                     e.printStackTrace();
                }
                try {
                    HttpURLConnection conn = (HttpURLConnection) myFileUrl
                            .openConnection();
                    conn.setConnectTimeout(6000);
                    conn.setDoInput(true);
                    conn.setUseCaches(false);
                    //conn.setRequestMethod("POST");
                    conn.setRequestProperty("connection", "keep-alive");
                    //这是自己的加密格式,正常可以去掉
                    conn.setRequestProperty("Platform-Agent",
                            "AppleWebKit/537.36 (KHTML, like Gecko)");
                    conn.setChunkedStreamingMode(0);
                    conn.connect();
                    InputStream is = conn.getInputStream();
                    bitmap = BitmapFactory.decodeStream(is);
                    Message msg = new Message();
                    msg.what = 1;
                    msg.obj = bitmap;
                    //向handler发消息  
                    handler.sendMessage(msg);
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
/** 
         * 用Handler来更新UI 
         */  
        private Handler handler = new Handler(){
            @Override  
            public void handleMessage(Message msg){
                try{
                    if(msg.what==1){
                        Bitmap bm = (Bitmap)msg.obj;
                        wb .setImageBitmap(bm);
                    }
                }
                catch(Exception e){
                    //我看看是不是这块有问题 catch一下
                }
        }};
    }

url传网络图片的地址。这样就可以显示网络图片。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值