【Android】给定URL显示网络图片的实现方法

来源:互联网 发布:vegas pro for mac 编辑:程序博客网 时间:2024/05/01 07:51
遇到问题(需求):开始编码用的适配器是SimpleAdapter,但后来发现,SimpleAdapter只能加载事先放在res/drawable里的图片,不能加载Bitmap,或者是Drawable


解决方法:说一下思路,主要是实现一个returnBitMap()的方法,具体实现网络图片转换成bitmap。然后set到布局文件的图片上即可。

思路搜索参考了一下几种解决方案,总结的如下可用方案:)

 
---------------------------------------------实现-------------------------------------------------
Step1:
1、创建Activity,本例中以ViewWebImageActivity说明;
2、ViewWebImageActivity中的代码如下:
String imageUrl = "……"; //……就是你需要显示的网络图片
Bitmap bmImg;  
ImageView imView; 
Button button1;  
@Override  
public void onCreate(Bundle savedInstanceState) {  
super.onCreate(savedInstanceState);  
setContentView(R.layout.main);  
imView = (ImageView) findViewById(R.id.imview);  
imView.setImageBitmap(returnBitMap(imageUrl));  
}  
public Bitmap returnBitMap(String url) {  
URL myFileUrl = null;  
Bitmap bitmap = null;  
try {  
myFileUrl = new URL(url);  
} catch (MalformedURLException e) {  
e.printStackTrace();  
}  
try {  
HttpURLConnection conn = (HttpURLConnection)
myFileUrl.openConnection();  
conn.setDoInput(true);  
conn.connect();  
InputStream is = conn.getInputStream();  
bitmap = BitmapFactory.decodeStream(is);  
is.close();  
} catch (IOException e) {  
e.printStackTrace();  
}  
return bitmap;  
}
3、其中,returnBitMap(String url) 方法就是具体实现网络图片转换成bitmap。
 
Step2:
1、修改你的main.xml文件如下:
< ?xml version="1.0" encoding="utf-8"?>
< LinearLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
< ImageView
android:id="@+id/imview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
/>
< /LinearLayout>
Step3:
在你的AndroidManifest.xml文件的< /manifest>节点上面添加< uses-permission android:name="android.permission.INTERNET" />,这是由于Android有很多的权限限制,否则图片是不能在你的模拟器上显示的。