WEB开发网
开发学院手机开发Android 开发 android 网络图片下载注意事项 阅读

android 网络图片下载注意事项

 2010-05-11 16:10:00 来源:WEB开发网   
核心提示:最近在开发一个软件,其中需要用到下载网络图片,android 网络图片下载注意事项,但是,在使用的过程中,一般我们会用以下的代码://获取connection,方法略conn = getURLConnection(url);is = conn.getInputStream();//获取Bitmap的引用Bitmap b

最近在开发一个软件,其中需要用到下载网络图片。但是,在使用的过程中,如果网络比较慢的话,则会出现下载不成功的问题。经过google搜索,终于解决了这个问题。

一般我们会用以下的代码:

//获取connection,方法略

conn = getURLConnection(url);

is = conn.getInputStream();

//获取Bitmap的引用

Bitmap bitmap = BitmapFactory.decodeStream(is)

但是网络不好的时候获取不了图片,推荐使用以下的方法:

//获取长度

int length = (int) conn.getContentLength();

if (length != -1) {

byte[] imgData = new byte[length];

byte[] temp=new byte[512];

int readLen=0;

int destPos=0;

while((readLen=is.read(temp))>0){

System.arraycopy(temp, 0, imgData, destPos, readLen);

destPos+=readLen;

}

bitmap=BitmapFactory.decodeByteArray(imgData, 0, imgData.length);

}

使用上面的方法的好处是在网速不好的情况下也会将图片数据全部下载,然后在进行解码,生成图片对象的引用,所以可以保证只要图片存在都可以下载下来。当然在读取图片数据的时候也可用java.nio.ByteBuffer,这样在读取数据前就不用知道图片数据的长度也就是图片的大小了,避免了有时候 http获取的length不准确,并且不用做数组的copy工作。

全部代码如下:

public synchronized Bitmap getBitMap(Context c, String url) {

URL myFileUrl = null;

Bitmap bitmap = null;

try {

myFileUrl = new URL(url);

} catch (MalformedURLException e) {

bitmap = BitmapFactory.decodeResource(c.getResources(),

com.jixuzou.moko.R.drawable.defaultimg);

return bitmap;

}

try {

HttpURLConnection conn = (HttpURLConnection) myFileUrl

.openConnection();

conn.setDoInput(true);

conn.connect();

InputStream is = conn.getInputStream();

int length = (int) conn.getContentLength();

1 2  下一页

Tags:android 网络 图片下载

编辑录入:coldstar [复制链接] [打 印]
赞助商链接