android获取网络图片简单实现
在我们平时做项目的时候肯定少不了要从网络上获取图片的资源,此篇文章就讲一讲从网络上获取图片,我们要考虑的问题是
- 1.获取怎样的url
- 2.用什么方法获取(以前有学习web开发的同学考虑一下ajax或者从后台获取交互数据的方法在此是否适用)
- 3.获取到的数据是否就是图片资源,是否还要解析
- 4.直接用主线程是否适用
- 5.怎样将最终得到的图片资源显示到activity中
URL url = new URL(path);
HttpURLConnection huc = (HttpURLConnection) url
.openConnection();
huc.setRequestMethod("GET");
huc.setConnectTimeout(5000);
int responsecode = huc.getResponseCode();
if (responsecode == 200) {
InputStream is = huc.getInputStream();
Bitmap bm = BitmapFactory.decodeStream(is);
}
- 4.如果在需要在子线程中实现2.3两步
- 5.将最终获取的图片显示到activity中
:当一个程序第一次启动时,Android会同时启动一个对应的主线程(Main Thread),主线程主要负责处理与UI相关的事件,如:用户的按键事件,用户接触屏幕的事件以及屏幕绘图事件,并把相关的事件分发到对应的组件进行处理。所以主线程通常又被叫做UI线程。
比如说从网上获取一个图片,在一个ImageView中将其显示出来,这种涉及到网络操作的程序一般都是需要开一个线程完成网络访问,但是在获得图片后,是不能直接在网络操作线程中调用ImageView的相关方法的,因为其他线程中是不能直接访问主UI线程成员 。
如果在子线程中改变主线程的内容操作系统会担心数个线程同时操作一个控件而导致的不安全,所以限制子线程不得直接访问主UI线程成员的
故而:用到了Handler
private Handler h = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case SHOW_IMAGE:
Bitmap bitmap = (Bitmap) msg.obj;
iv_imeages.setImageBitmap(bitmap);
break;
default:
break;
}
};