>>分享Android开发相关的技术 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 19046 个阅读者 刷新本主题
 * 贴子主题:  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网络编程-->通过JavaMail API收发邮件
  精通Spring-->绑定CSS样式
  Vue3开发-->通过Axios访问服务器
  Android内核开发:图解Android系统的启动过程
  Android实用测试方法之Monkey与MonkeyRunner
  Android JSON网络数据交换
  android cts 相关
  Android自动化测试之Robotium学习
  Android ExpandableListView 使用范例
  Android网络开发-创建请求队列
  回眸Android发展历史
  Android 消息推送
  Android多线程断点续传
  Android Lint分类及常见错误
  UI渲染机制以及优化
  Android 内容提供者(Content Provider)
  Android - 监听WebView加载失败的处理
  Android无侵入式引导提示-一键式启动
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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