【发布时间】:2010-11-20 23:17:56
【问题描述】:
在我的 android 应用程序中,我想使用从 URL 指定的图像更新 ImageView。此 URL 已作为 AsyncTask 的一部分通过 API 获取。
我已将 ImageView 定义如下:
<ImageView
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:layout_height="wrap_content"
android:id="@+id/product_image"
android:src="@drawable/no_product_image"
android:layout_marginRight="6dip"
android:layout_width="wrap_content"
/>
这样,在加载数据时,ProgressDialog 后面会出现一个空白图像。
作为 AsyncTask 的 doInBackground 的一部分,在获取产品详细信息后,我调用:
private void createProductScreen(Product product){
Log.i(TAG, "Updating product screen");
//Set the product image
ImageView imgView =(ImageView)findViewById(R.id.product_image);
Drawable drawable = loadImageFromWeb(product.getImageUrl());
imgView.setImageDrawable(drawable);
Log.i(TAG, "Set image");
}
图片从网络加载如下:
private Drawable loadImageFromWeb(String url){
Log.i(TAG, "Fetching image");
try{
InputStream is = (InputStream) new URL(url).getContent();
Drawable d = Drawable.createFromStream(is, "src");
Log.i(TAG, "Created image from stream");
return d;
}catch (Exception e) {
//TODO handle error
Log.i(TAG, "Error fetching image");
System.out.println("Exc="+e);
return null;
}
}
当它运行时,我在日志中看到 "Created image from stream",但没有看到 "Set image" 并且永远不会调用 AsyncTask 的 onPostExecute .
是否有人对此问题有任何想法或将图像从空白图像更新为产品图像的更好方法?
【问题讨论】:
-
androidhive.info/2012/07/android-loading-image-from-url-http 关注此帖。我认为您需要添加一些自定义类和可以实现加载图像或图像的函数。