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

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

一、项目下载

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

二、示例介绍

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

    

    三、实现过程

    1.  添加框架到项目

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

    UniversalImageLoader源码分析之一、开发入门_第1张图片

    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源码分析》



你可能感兴趣的:(android,源码分析,示例)