首先获取到存储图片的网络地址,然后将此地址用ImageLoader进行加载得到图片,然后在启动页进行判断是否要更新启动页图片
ImageLoader的具体操作如下:
1.MyApplication中的ImageLoader的初始化:
public static void initImageLoader(Context context) {
File cacheDir = StorageUtils.getOwnCacheDirectory(context,
"imageloader/Cache");// 获取到缓存的目录地址
Log.d("cacheDir", cacheDir.getPath());
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisc(true)
.imageScaleType(ImageScaleType.IN_SAMPLE_INT)
.bitmapConfig(Bitmap.Config.RGB_565)// 防止内存溢出的,图片太多就这这个。还有其他设置
// 如Bitmap.Config.ARGB_8888
.showImageOnLoading(R.drawable.guid) //默认图片
.showImageForEmptyUri(R.drawable.guid) //url爲空會显示该图片,自己放在drawable里面的
.build();
// 创建配置ImageLoader(所有的选项都是可选的,只使用那些你真的想定制),这个可以设定在APPLACATION里面,设置为全局的配置参数
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
context)
// .memoryCacheExtraOptions(480, 800) // max width, max
// height,即保存的每个缓存文件的最大长宽
// .discCacheExtraOptions(480, 800, CompressFormat.JPEG, 75,
// null) // Can slow ImageLoader, use it carefully (Better don't
// use it)设置缓存的详细信息,最好不要设置这个
.threadPoolSize(3)
// 线程池内加载的数量
.threadPriority(Thread.NORM_PRIORITY - 2)
.denyCacheImageMultipleSizesInMemory()
// .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 *
// 1024)) // You can pass your own memory cache
// implementation你可以通过自己的内存缓存实现
// .memoryCacheSize(2 * 1024 * 1024)
// /.discCacheSize(50 * 1024 * 1024)
.discCacheFileNameGenerator(new Md5FileNameGenerator())// 将保存的时候的URI名称用MD5
// 加密
// .discCacheFileNameGenerator(new
// HashCodeFileNameGenerator())//将保存的时候的URI名称用HASHCODE加密
.tasksProcessingOrder(QueueProcessingType.LIFO)
// .discCacheFileCount(100) //缓存的File数量
.discCache(new UnlimitedDiscCache(cacheDir))// 自定义缓存路径
// .defaultDisplayImageOptions(DisplayImageOptions.createSimple())
// .imageDownloader(new BaseImageDownloader(context, 5 * 1000,
// 30 * 1000)) // connectTimeout (5 s), readTimeout (30 s)超时时间
.writeDebugLogs() // Remove for release app
.build();
// Initialize ImageLoader with configuration.
ImageLoader.getInstance().init(config);// 全局初始化此配置
}
2.在需要的地方添加此句:
ImageLoader.getInstance().displayImage(Url,imageView_guid);
ImageLoader.getInstance().loadedImage(Url,Imageloadsize,new Listener);//此句中的Listener可自由选择根据自己的需求
重点:
更换启动页(动态)
public void getImageView(){
String Url=deviceinformationsp.getString("GuidUrl", "");
if(current_Id>old_Id || GetDateOrTime.compare_date(old_UpdateTime, current_UpdateTime,"yyyy-MM-dd HH:mm:ss") == -1){
ImageLoader.getInstance().displayImage(GuidUrl,imageView_guid);//从服务器上获取图片
}else if(current_Id==old_Id && GetDateOrTime.compare_date(old_UpdateTime, current_UpdateTime,
"yyyy-MM-dd HH:mm:ss") ==0 ){
ImageLoader.getInstance().displayImage(Url,imageView_guid);//存在本地缓存的图片
}
else{
imageView_guid.setBackgroundResource(R.drawable.guid);//默认图片
}
}
此段是根据ID和更新时间来判断是不是要更换启动页背景