图片预加载优化
来源:互联网 发布:硬盘linux系统安装教程 编辑:程序博客网 时间:2024/06/14 17:13
最近app 做优化的,其实优化的点很多,在图片方面,一开始进入酒店详情的时候,对于酒店的大图,由于图片太大,要对图片做预加载处理,这样我门进酒店的详情页 才不会出现加载延迟,
具体的方案是在跳转的时候进行预存:
String hotelBigURL = wiseHotelInfoViewModel.hotelBasicInfo.hotelBigURL; if (!StringUtil.emptyOrNull(hotelBigURL)) { hotelDetailCacheBean.mImageBundle.setPreLoadLargeImageUrl(hotelBigURL); DisplayImageOptions.Builder builder = new DisplayImageOptions.Builder(); builder.cacheInMemory(true).cacheOnDisc(true).bitmapConfig(Bitmap.Config.RGB_565); DisplayImageOptions options = builder.build(); ImageLoader.getInstance().loadImage(hotelBigURL, new ImageSize(DeviceUtil.getWindowWidth(), DeviceUtil.getWindowWidth()), options, new ImageLoadingListener() { @Override public void onLoadingStarted(String s, View view) {} @Override public void onLoadingFailed(String s, View view, FailReason failReason){} @Override public void onLoadingComplete(String s, View view, Bitmap bitmap){} @Override public void onLoadingCancelled(String s, View view) {} }); }
将大图的url 按照手机的屏幕的宽和高作为key 提前存储在ImageLoader 中
在展示的时候,从缓存中拿,
public static void showDynamicImageView(final ImageView imageView, final String imageUrl, final int id) { try { if (imageView == null) { return; } ImageSize dynamicImageSize = new ImageSize(DeviceUtil.getWindowWidth(), DeviceUtil.getWindowWidth()); Bitmap hotelSloganBt = HotelUtils.getHotelBitmapFromCache(imageUrl, dynamicImageSize); if (hotelSloganBt != null) { imageView.setVisibility(View.VISIBLE); imageView.setImageBitmap(hotelSloganBt); } } catch (Exception e) { e.printStackTrace(); } }
这里面的
Bitmap hotelSloganBt = HotelUtils.getHotelBitmapFromCache(imageUrl, dynamicImageSize);
是从ImageLoader 中拿取;
public static Bitmap getHotelBitmapFromCache(String imageUrl, ImageSize imageSize) { if (TextUtils.isEmpty(imageUrl)) { return null; } String memoryCacheKey = MemoryCacheUtils.generateKey(imageUrl, imageSize); List<Bitmap> memBp = MemoryCacheUtils.findCachedBitmapsForImageUri(memoryCacheKey, ImageLoader.getInstance().getMemoryCache()); if (memBp != null && memBp.size() > 0) { Bitmap bitmap = memBp.get(0); if (bitmap != null && !bitmap.isRecycled()) { return bitmap; } else { File f = DiskCacheUtils.findInCache(imageUrl, ImageLoader.getInstance().getDiscCache()); if (f == null) return null; return BitmapFactory.decodeFile(f.getAbsolutePath()); } } return null; }
基本思想是,当缓存起来了,直接从缓存中获取
阅读全文
0 0
- 图片预加载优化
- 图片加载优化~
- Android 图片加载优化
- Android 加载图片优化
- tableview加载图片优化
- tableview加载图片优化
- Fresco加载图片优化
- Android图片加载优化
- Android-图片加载优化
- 优化图片的加载
- Android图片加载优化
- 前端图片加载优化
- 前端优化之图片预加载和延迟加载
- 关于android 图片加载优化
- listview异步图片加载优化
- Android网络图片加载优化
- ios uitableview加载图片优化
- 网站优化(改变图片加载)
- tampermonkey实现CSDN阅读模式
- HDU-6052 To my boyfriend 思维
- 直线段的扫描算法——数值微分法
- ofbiz Java事件处理器
- 1.3.RISC和CISC的区别
- 图片预加载优化
- java动态生成类
- WPF布局容器
- 页面里回车到下一控件的焦点
- DPDK 收发包处理流程(一)(网卡驱动注册)
- JavaScript实战-DOM操作实例之全选功能
- 【华为机试】求最小公倍数
- TCP/IP-物理层
- Java面向对象三大特征:封装、继承、多态