>>分享Android开发相关的技术 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 24549 个阅读者 刷新本主题
 * 贴子主题:  android异步更新UI 回复文章 点赞(0)  收藏  
作者:sunshine    发表时间:2020-05-15 08:53:06     消息  查看  搜索  好友  邮件  复制  引用

    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-05-31 14:59:03 重新编辑]
  Java面向对象编程-->第一个Java程序
  JavaWeb开发-->JSP中使用JavaBean(Ⅱ)
  JSP与Hibernate开发-->映射组成关系
  Java网络编程-->通过JDBC API访问数据库
  精通Spring-->Vue简介
  Vue3开发-->组合(Composition)API
  Android在SDcard建文件夹(在Android中移动文件必用)
  Android之TabHost
  通过Https访问的Not trusted Server Certificate的问题的解决...
  android 手势操作GestureDetector
  android cts 相关
  android异步更新UI
  编译Irrlicht On Android
  Android Adapter使用范例
  Android OpenGL ES2.0学习:基础三角形案例
  UI渲染优化
  Android仿Volley手写属于自己的万能网络访问框架
  Android Service学习之AIDL, Parcelable和远程服务-学习Andr...
  Android开发学习笔记:浅谈WebView-IT的点点滴滴
  uniapp安卓ios百度人脸识别、活体检测、人脸采集APP原生插件
  Android 代码混淆技术
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。