安卓使用ImageView控件获取网络图片是我们在开发应用程序中常常用到的一个功能,我们来分享一下是怎么实现这一功能的。

这个例子是点击Button按钮,就会按照制定url地址找到图片的位置,并下载绑定到对应的ImageView控件上。

整体思路:在xml文件中定义一个Button控件和一个ImageView控件,然后在活动中的Button控件的OnClick事件中开启一个线程,这个线程会调用获取网络图片的方法,在获取网络图片的方法中,使用图片工厂得到图片的路径返回一个位图对象,把这个位图对象作为一个消息的内容来传递,在handler中接收到这个消息的内容并绑定为ImageView的图片,其中获取网络数据的方式为GET方式,以读入流的形式进行。

activity_main.xml文件:

         <Button android:id="@+id/button"android:layout_height="wrap_content"android:layout_width="fill_parent"android:text="获取网络图片"/><ImageView android:id="@+id/imageview"android:layout_width="wrap_content"android:layout_height="wrap_content"/>

MainActivity.java文件:

 private ImageView getImageview;private Button getButton;private final String IMAGE_URL="http://img.hen2.com/201509/source_img/150_G_1442562155435.jpg";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);getButton = (Button) findViewById(R.id.button);getImageview = (ImageView) findViewById(R.id.imageview);getButton.setOnClickListener(new View.OnClickListener() {    @Overridepublic void onClick(View v) {new Thread(runa).start();}});}// 获取网络图片public void setView(String path) {String picturepath = path;byte[] data = null;try {data = getImage(picturepath);Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);// BitmapFactory:图片工厂!Looper.prepare();// 必须调用此方法,要不然会报错Message msg = new Message();msg.what = 0;msg.obj = bitmap;handler.sendMessage(msg);} catch (Exception e) {Toast.makeText(getApplicationContext(), "获取图片错误", 1).show();}}//定义一个handler给imageview绑定图片private Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {if (msg.what == 0) {getImageview.setImageBitmap((Bitmap) msg.obj);}}};//定义一个Runnable,调用获取网络图片的方法private Runnable runa = new Runnable() {@Overridepublic void run() {setView(IMAGE_URL);}};// 获取网络图片的数据public static byte[] getImage(String picturepath) throws Exception {URL url = new URL(picturepath);HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 基于http协议的连接对象conn.setConnectTimeout(10000);// 10秒(源码有问题,把10(10毫秒)改为了10000(10秒)现在正确了)conn.setRequestMethod("GET");// 大写if (conn.getResponseCode() == 200) {InputStream ins = conn.getInputStream();return read(ins);}return null;}//流工具public static byte[] read(InputStream ins) throws Exception {ByteArrayOutputStream outstream = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int length = 0;while ((length = ins.read(buffer)) > -1) {outstream.write(buffer, 0, length);}outstream.close();return outstream.toByteArray();}

安卓控件使用系列17:ImageView获取网络图片相关推荐

  1. 安卓控件使用系列2:TextView实现图文(图片和文字)混排

    使用TextView实现图文混排是有些开发者并没有实现过,下面来介绍一下如何实现. 整体思路:首先定义根据资源文件的变量名返回资源文件ID的方法,定义指向图片资源文件变量名html格式的字符串,写一个 ...

  2. 安卓控件使用系列5:EditText输入表情图片

    EditText中如何输入自定义的表情图片呢,我们将实现的方法给大家分享一下. 这个例子是实现点击按钮,在文本控件中随机显示几个预订表情中的一个. 整体思路:产生一个随机数,用随机数和字符串拼成一个图 ...

  3. 安卓APP_ 控件(4)—— ImageView

    摘自:安卓APP_ 控件(4)-- ImageView 作者:丶PURSUING 发布时间: 2021-03-29 21:52:06 网址:https://blog.csdn.net/weixin_4 ...

  4. DevExpress控件使用系列--ASPxTreeList

    DevExpress控件使用系列--ASPxTreeList 控件功能 结合列表控件及树控件的优点,在列表控件中实现类型树的多层级操作  官方说明 http://documentation.devex ...

  5. ListView控件学习系列2-编辑ListView(Edit,Update,Insert,Delete)

    目录: ListView控件学习系列1-了解ListView控件 ListView控件学习系列2-编辑ListView ListView控件学习系列3-ListView选择,排序,分页 ListVie ...

  6. jquery出现“为了有利于保护安全性,IE已限制此网页运行可以访问计算机的脚本或 ActiveX 控件。请单击这里获取选项...”的解决办法

    为了有利于保护安全性,IE已限制此网页运行可以访问计算机的脚本或 ActiveX 控件.请单击这里获取选项... 方法一: 在本地调试html页,如果其中包含js或flash,IE经常会提示" ...

  7. Silverlight控件应用系列索引

    Silverlight 控件应用系列 最后更新日期:2009-10-18 1.控制器类[Controls] 展开 闭合 日历组件(Calendar) 子窗体组件(ChildWindow) 非模式窗体组 ...

  8. 今天你写控件了吗?----ASP.net控件开发系列之(一)开篇

    今天你写控件了吗?----ASP.net控件开发系列之开篇 早段时间,同事之间很流行打CS,所以那段时间的问候变成了"今天你杀XX了吗?" 控件开发也许是程序员最能发掘自己创造力的 ...

  9. .net控件开发系列

    此系列我将尽我所能写下去吧,跟大家分享学习控件开发.也希望大家对我多提意见,让我们共同进步                              net控件开发系列 1.net组件开发系列(-)之 ...

最新文章

  1. 老毛子固件插件_原地升值?newifi 3 路由器刷入高恪固件教程
  2. 北大数学确实强!阿里数学竞赛决赛,入围人数加起来超过清华和南大之和;还有13位中学选手,最小14岁...
  3. 有关phpmailer的详细介绍及使用方法
  4. 关于ios调用银联sdk编译遇到的各种问题
  5. 三菱goto怎么用_GOTO语句使用方法
  6. xpath 取标签下所有文字内容_GNE 预处理技术——如何移除特定标签但是保留文字到父标签...
  7. 魔改部署自己专属的合成大西瓜(三:上线篇<踩坑篇>)
  8. 团队文化中的害群之马
  9. jquery on()方法off()方法
  10. 2.程序员的自我修养---编译和链接
  11. android 6 root 工具,安卓手机ROOT ROOT工具
  12. xapp1025仿真
  13. CF1095A Repeating Cipher
  14. 程序员的情怀《从前慢》木心
  15. 电磁场与电磁波_您的大脑在电磁场上
  16. Taily老段的微信公众号,欢迎交流学习
  17. 《CSS世界》读书笔记:line-height
  18. python中\r 的意义
  19. 小米刷机OTA、 Recovery、 FASTBOOT三种方法直接的区别和联系
  20. 当心收入被支出吞噬(zt)

热门文章

  1. 【JSOI2016】飞机调度
  2. 全球及中国电子式儿科呼吸机行业项目投资战略及规划动向预测报告2021-2027年版
  3. [基因遗传算法]进阶之五:实践VRPTW
  4. nor flash调试与使用总结
  5. 转:要自信,不要成为心理上的奴隶
  6. 原来懂Docker 和 K8s ,找工作可以这么吃香!
  7. 【图像分割】直方图的自适应阈值方法分割前景与背景【含Matlab源码 2144期】
  8. 云计算的基础架构:并行计算+资源虚拟化
  9. 搜索搜索引擎常用的18大学术搜索引擎
  10. 用html5编写五星红旗图案,HTML5画出五星红旗 | 编程知识库