安卓控件使用系列17:ImageView获取网络图片
安卓使用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获取网络图片相关推荐
- 安卓控件使用系列2:TextView实现图文(图片和文字)混排
使用TextView实现图文混排是有些开发者并没有实现过,下面来介绍一下如何实现. 整体思路:首先定义根据资源文件的变量名返回资源文件ID的方法,定义指向图片资源文件变量名html格式的字符串,写一个 ...
- 安卓控件使用系列5:EditText输入表情图片
EditText中如何输入自定义的表情图片呢,我们将实现的方法给大家分享一下. 这个例子是实现点击按钮,在文本控件中随机显示几个预订表情中的一个. 整体思路:产生一个随机数,用随机数和字符串拼成一个图 ...
- 安卓APP_ 控件(4)—— ImageView
摘自:安卓APP_ 控件(4)-- ImageView 作者:丶PURSUING 发布时间: 2021-03-29 21:52:06 网址:https://blog.csdn.net/weixin_4 ...
- DevExpress控件使用系列--ASPxTreeList
DevExpress控件使用系列--ASPxTreeList 控件功能 结合列表控件及树控件的优点,在列表控件中实现类型树的多层级操作 官方说明 http://documentation.devex ...
- ListView控件学习系列2-编辑ListView(Edit,Update,Insert,Delete)
目录: ListView控件学习系列1-了解ListView控件 ListView控件学习系列2-编辑ListView ListView控件学习系列3-ListView选择,排序,分页 ListVie ...
- jquery出现“为了有利于保护安全性,IE已限制此网页运行可以访问计算机的脚本或 ActiveX 控件。请单击这里获取选项...”的解决办法
为了有利于保护安全性,IE已限制此网页运行可以访问计算机的脚本或 ActiveX 控件.请单击这里获取选项... 方法一: 在本地调试html页,如果其中包含js或flash,IE经常会提示" ...
- Silverlight控件应用系列索引
Silverlight 控件应用系列 最后更新日期:2009-10-18 1.控制器类[Controls] 展开 闭合 日历组件(Calendar) 子窗体组件(ChildWindow) 非模式窗体组 ...
- 今天你写控件了吗?----ASP.net控件开发系列之(一)开篇
今天你写控件了吗?----ASP.net控件开发系列之开篇 早段时间,同事之间很流行打CS,所以那段时间的问候变成了"今天你杀XX了吗?" 控件开发也许是程序员最能发掘自己创造力的 ...
- .net控件开发系列
此系列我将尽我所能写下去吧,跟大家分享学习控件开发.也希望大家对我多提意见,让我们共同进步 net控件开发系列 1.net组件开发系列(-)之 ...
最新文章
- 老毛子固件插件_原地升值?newifi 3 路由器刷入高恪固件教程
- 北大数学确实强!阿里数学竞赛决赛,入围人数加起来超过清华和南大之和;还有13位中学选手,最小14岁...
- 有关phpmailer的详细介绍及使用方法
- 关于ios调用银联sdk编译遇到的各种问题
- 三菱goto怎么用_GOTO语句使用方法
- xpath 取标签下所有文字内容_GNE 预处理技术——如何移除特定标签但是保留文字到父标签...
- 魔改部署自己专属的合成大西瓜(三:上线篇<踩坑篇>)
- 团队文化中的害群之马
- jquery on()方法off()方法
- 2.程序员的自我修养---编译和链接
- android 6 root 工具,安卓手机ROOT ROOT工具
- xapp1025仿真
- CF1095A Repeating Cipher
- 程序员的情怀《从前慢》木心
- 电磁场与电磁波_您的大脑在电磁场上
- Taily老段的微信公众号,欢迎交流学习
- 《CSS世界》读书笔记:line-height
- python中\r 的意义
- 小米刷机OTA、 Recovery、 FASTBOOT三种方法直接的区别和联系
- 当心收入被支出吞噬(zt)