您的位置:首页 > 其它

UniversalImageLoader源码分析之一、开发入门

2014-12-24 22:43 190 查看
前言:前几天分析了一个比较简单的图片开源项目SmartImageView,但是在项目开发中SmartImageView还是太轻量级了,在优化方面做的还不够,当然我们可以自己写出漂亮的框架,但是有点需要注意的是毕竟我们不能拿用户作为我们的测试,开发中还是要以最小的时间写出最优的代码的。闲扯远了,这里接着上次继续分析图片的开源框架,继续分析UniversalImageLoader。

一、项目下载

该项目是目前开发中应用最多的图片项目之一了,依然是托管在GitHub上。下载链接

二、示例介绍

在该示例中,在Activity中间有个ImageView,在下方有个Button,点击Button通过UniversalImageLoader加载图片并展示到屏幕中。



三、实现过程

1. 添加框架到项目

将UniversalImageLoader作为库添加到项目,或者打成Jar包的形式引入工程,很初级的东西,其他博客中也很多提及这里不再细说。下图所示,左图是将UniversalImageLoader作为库,右图是将该库添加到示例项目中。



2. AppLIcation类编写

编写UILApplication继承Application在onCreat()方法初始化ImageLoader的全局配置。

public class UILApplication extends Application {
@Override
public void onCreate() {
super.onCreate();

initImageLoader(getApplicationContext());
}

public static void initImageLoader(Context context) {
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
.threadPriority(Thread.NORM_PRIORITY - 2)
.denyCacheImageMultipleSizesInMemory()
.diskCacheFileNameGenerator(new Md5FileNameGenerator())
.diskCacheSize(50 * 1024 * 1024) // 50 Mb
.tasksProcessingOrder(QueueProcessingType.LIFO)
.writeDebugLogs() // Remove for release app
.build();
// Initialize ImageLoader with configuration.
ImageLoader.getInstance().init(config);
}
}

可以看到这里配置有sdcard文件名加密、sdcard缓存大小、打印日志等等,当然这里可以根据需求配置,然后在Manifest.xml中设置Application。

<application
android:name=".UILApplication"
<span style="white-space:pre">	</span>......
</application>


3. Options配置

Options配置为在加载某张图片时候的配置:

/** 初始化Options设置 */
private void initOptions() {
options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_launcher)
.showImageOnFail(R.drawable.ic_launcher).cacheInMemory(true)
.cacheOnDisk(true).bitmapConfig(Bitmap.Config.RGB_565).build();
}


4. 加载图片

在按钮的点击事件中加载图片:

@Override
public void onClick(View v) {
String uri = "http://ww2.sinaimg.cn/large/49aaa343jw1dgwd0qvb4pj.jpg";
ImageLoader.getInstance().displayImage(uri, iv, options);
}


5. 添加权限

因为有访问网络和缓存到sdcard的操作,所以要添加相应的权限:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


OK,到此Demo示例已经编写完毕,下一篇将讲解图片加载的过程分析。

四、下载传送门

UniversalImageLoader示例代码

五、系列资源

SmartImageView源码分析
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: