您的位置:首页 > 其它

[翻译]Droid-Fu介绍二: WebImageView and WebGalleryAdapter

2011-05-27 10:26 731 查看
这是第二篇讨论Droid-Fu的文章,主要介绍两个非常便捷的组件: WebImageViewWebGalleryAdapter.

WebImageView

许多移动应用大量使用基于Web的内容,尤其是照片,头像和其他图像。 问题是:你必须下载后才能显示出来,这意味着:

下载的操作必须是异步的,否则界面将会卡住

在下载处理过程中,必须显示进度,这样用户才会有更好的体验

下载的过程非常消耗手机资源,因此通常都会考虑缓存下载的图片

看起来显示一个图片是相当痛苦的一个过程。幸运的是Droid-Fu提供了一个非常简单的类解决此问题:WebImageView

这里有个例子显示WebImageView的效果:第一个图片显示了WebImageView正在处于加载状态,第二个图片显示了加载完毕后的效果。









使用 WebImageView

如果你还没有下载Droid-Fu的jar包的话,赶快下载。然后,在你的布局文件中,增加如下的内容:

01
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
02
<
LinearLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
03
xmlns:droidfu
=
"http://github.com/droidfu/schema"
04
android:orientation
=
"vertical"
05
android:layout_width
=
"fill_parent"
06
android:layout_height
=
"fill_parent"
07
android:gravity
=
"center"
08
android:background
=
"#FFF"
09
>
10
11
<
com.github.droidfu.widgets.WebImageView
android:id
=
"@+id/webimage"
12
android:layout_width
=
"75dip"
13
android:layout_height
=
"75dip"
14
android:background
=
"#CCC"
15
droidfu:autoLoad
=
"true"
16
droidfu:imageUrl
=
"http://www.android.com/images/opensourceprojec.gif"
17
droidfu:progressDrawable
=
"..."
18
/>
19
20
</
LinearLayout
>
所有的参数都是可选的,这样你可以先定义你自己的view,然后调用WebImageView.loadImage()触发加载图片的操作。很简单是吧!

缓存

Droid-Fu的WebImageView从web上获取图片是由 ImageLoader
实现的。ImageLoader自身包含两层缓存。当你使用WebImageView加载一个图片的时候,首先查询第一层的内存缓存,如果找到目标,立刻返回;如果没有找到,就会查询第二层的文件缓存。Droid-Fu使用应用的缓存目录,因此你不需要考虑缓存维护的事宜。如果还是没找到,那么WebImageView最终将会从web上下载该图片。

目前缓存的实现是采用Google Collections MapMaker,它的容量会随着可用内存的变化而变化。什么都不用管,只要将需要缓存的内容放到缓存中,如果缓存空间不够,会回收其他的缓存内容。

WebGalleryAdapter

WebGalleryAdapter 是Android的Gallery的一个Adapter实现类,而且他完全是即插即用:创建gallery,设置一个WebGalleryAdapter实现类,并且将图片的url地址传递给他。无论用户在gallery做什么样的操作,这些图片都会自动的从web上下载,并且拥有缓存和进度只是这样的特性。

原文地址:http://brainflush.wordpress.com/2009/11/23/droid-fu-part-2-webimageview-and-webgalleryadapter/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: