Android -- Glide 框架

Glide是面向Android的快速高效的开源媒体管理和图像加载框架,将媒体解码,内存和磁盘缓存以及资源池化包含在一个简单易用的界面中。

[1] Handling Bitmaps

①. Bitmaps是很容易耗尽 App 的内存预算的。

Pixel phone 照相机像素达到4048 * 3036 px,
所使用的 Bitmaps configuration 是ARGB_8888,
默认 Api 级别是 9 或者更高(Android 2.3 及以上),
则加载一张照片到内存中需要的存储空间为 4048 * 3036 * 4个字节 = 48 MB

②. 如何规避 Bitmaps 消耗内存
适当管理线程,尽量不要在 UI 线程加载 Bitmaps ;否则,会降低 App 的性能,使得 App 响应变慢,甚至可能出现 ANR.
加载大量 Bitmaps 时使用磁盘缓存和内存管理;否则,App 界面的响应性和流动性会受到影响.

③. 建议

use the Glide library to fetch, decode, and display bitmaps in your app

[2] Glide 框架

①. Glide 使用基于自定义 HttpUrlConnection 的堆栈,而且还包括实用程序库插入到 Google 的 Volley项目或 Square 的 OkHttp 库。
Glide 的主要重点是尽可能平滑和快速地滚动任何类型的图像列表,但 Glide 对于几乎任何需要获取,调整大小和显示远程图像的情况也是有效的。
②. Glide 的使用

[1] 在 build.gradle 添加依赖
 compile 'com.github.bumptech.glide:glide:4.0.0'

[2] 在 Activity 中
@Override public void onCreate(Bundle savedInstanceState) {
  ...
//一张图片
  ImageView imageView = (ImageView) findViewById(R.id.my_image_view);
  GlideApp.with(this).load("http://goo.gl/gEgYUd").into(imageView);
}

// 一组图片
@Override public View getView(int position, View recycled, ViewGroup container) {
  final ImageView myImageView;
  if (recycled == null) {
    myImageView = (ImageView) inflater.inflate(R.layout.my_image_view, container, false);
  } else {
    myImageView = (ImageView) recycled;
  }

  String url = myUrls.get(position);

  GlideApp
    .with(myFragment)
    .load(url)
    .centerCrop()
    .placeholder(R.drawable.loading_spinner)
    .into(myImageView);

  return myImageView;
}

[3] 总结

期待有一天,我的 github 上有我自己开源的框架,只为分享,只为共同实现知识的共享。感谢!
Glide
Android

你可能感兴趣的:(Android -- Glide 框架)