|
android下面图片更新是需要启动多个子线程来进行的,而android下面是并不是线程安全的,所以thread这里是用不了的,只能用runnable接口。
废话不多说了 直接上代码。
1、下载线程 继承runnable接口 public class DownloadImage implements Runnable {
private ImageView p_w_picpathView;
private String p_w_picpathUrl;
private Bitmap bitmap;
//构造的时候传入要更新的ImageView ,同时传入图片的URL
public DownloadImage(ImageView p_w_picpathView, String p_w_picpathUrl) {
super();
this.p_w_picpathView = p_w_picpathView;
this.p_w_picpathUrl = p_w_picpathUrl;
}
public Handler handler = new Handler();
Runnable updateResults = new Runnable() {
@Override
public void run() {
updateUI();
}
};
public void run() {
HttpGet httpRequest = null;
URL url;
try {
url = new URL(p_w_picpathUrl);
httpRequest = new HttpGet(url.toURI());
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = (HttpResponse) httpclient
.execute(httpRequest);
HttpEntity entity = response.getEntity();
BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity);
InputStream instream = bufHttpEntity.getContent();
bitmap = BitmapFactory.decodeStream(instream);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
handler.post(updateResults);
}
public void updateUI(){
p_w_picpathView.setImageBitmap(bitmap);
}
} |
2、主程序
ImageView p_w_picpathView = (ImageView)findViewById(R.id.p_w_picpath);
String p_w_picpathUrl = "http://www.qqzhi.com/show/UploadPic/2010-5/2010521102357899.jpg";
new Thread(new DownloadImage(p_w_picpathView, p_w_picpathUrl)).start();
这些添加在oncreate()里面就实现了图片的更新了
3、配置文件AndroidManifest
<uses-permission android:name="android.permission.INTERNET"/>
获取访问网络权限
4、布局文件
<ImageView
android:id="@+id/p_w_picpath"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x = "100px"
android:layout_y = "100px"
android:src="@drawable/icon"
/> |
OK,要实现的功能就完全实现了,你可以定义N个变量(就是你需要更新的图片),目前我测试一次更新20幅消耗时间1s。
希望能对大家有所帮助,有兴趣可以一起讨论!
----------------------------
原文链接:https://blog.51cto.com/alloxa/499424
程序猿的技术大观园:www.javathinker.net
[这个贴子最后由 flybird 在 2020-04-07 10:06:02 重新编辑]
|
|