only the original thread that created a view
2015-07-17 14:49
274 查看
本来准备写一个简单的通过url获取网络图片setimage到imageview上去
没想到还是有一些小bug
先把源码供上
xml布局就是一个imageview
我一只告诉自己要用主线程更新ui
我在子线程里面获取数据,用一个handler接受获取数据成功的回调信息msg,然后更新ui,把bitmap设为全局的变量,这样就对了。
没想到还是有一些小bug
先把源码供上
package com.example.seturlbitmapdemo; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import android.annotation.SuppressLint; 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.widget.ImageView; @SuppressLint("HandlerLeak") public class MainActivity extends Activity { protected static final int COMPLETED = 0; Bitmap bitmap; String url = "http://192.168.1.164/Upload_Files/262/339/201507/5582e259-9e70-478c-91b9-1f787fa11c77.jpg"; private ImageView iv; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == COMPLETED) { iv.setImageBitmap(bitmap); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv = (ImageView) findViewById(R.id.imageView1); getPic(iv,url); } private void getPic(final ImageView iv,final String url) { new Thread(new Runnable() { @Override public void run() { try { HttpURLConnection conn = (HttpURLConnection) new URL(url) .openConnection(); conn.connect(); InputStream is = conn.getInputStream(); bitmap = BitmapFactory.decodeStream(is); is.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } Message msg = new Message(); msg.what = COMPLETED; handler.sendMessage(msg); } }).start(); } }
xml布局就是一个imageview
我一只告诉自己要用主线程更新ui
我在子线程里面获取数据,用一个handler接受获取数据成功的回调信息msg,然后更新ui,把bitmap设为全局的变量,这样就对了。
相关文章推荐
- 【翻译】如何创建Ext JS暗黑主题之一
- 【翻译】如何创建Ext JS暗黑主题之一
- CentOS6.5 配置防火墙+允许指定ip访问端口
- Spring中手动增加配置文件中占位符引用的变量
- CSS中设置margin:0 auto; 水平居中无效的原因分析
- 如何使用opencv的c++接口来读取、写结构体数组到yml文件中
- python编码(汉字)
- eclipse save action不起作用
- iOS 黑魔法 __attribute__(转摘)
- HoughLinesP opencv for java
- jQuery的replaceWith()函数用法详解
- jQuery 遍历 json 方法大全
- Android应用内即时切换语言
- 程序员的2015年9个计划
- IP 地址获取
- 数组与指针
- 微软学习网站
- GIT基本用法
- 【gitlab安装问题集】yum安装报错"Couldn't resolve host 'mirror.centos.org'"
- 回文质数