Glide,Google推荐的图片加载库
来源:互联网 发布:软件配置管理计划书 编辑:程序博客网 时间:2024/04/29 22:31
Glide是 Google推荐的图片加载库,它可以支持来自url,Android资源,文件,Uri中的图片加载,同时还支持gif图片的加载,以及各种图片显示前的bitmap处理(例如:圆角图片,圆形图片,高斯模糊,旋转,灰度等等),缓存处理,请求优先级处理,动画处理,缩略图处理,图片大小自定义等等.可谓是非常的强大
首先,我们要添加依赖
compile 'com.github.bumptech.glide:glide:3.7.0'()
然后给大家提供一些实际应用实例,附代码
Example 1:加载网络图片
/** * Created by Greathfs on 2016/6/6. */public class TestGlideActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); String url = "http://www.qq745.com/uploads/allimg/141106/1-141106153Q5.png"; ImageView targetView = (ImageView) findViewById(R.id.iv_target); Glide.with(this). load(url). asBitmap(). //强制处理为bitmap into(targetView);//显示到目标View中 }}
Example 2:加载资源图片
public class TestGlideActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); int resourceId = R.drawable.test; ImageView targetView = (ImageView) findViewById(R.id.iv_target); Glide.with(this). load(resourceId). asBitmap(). into(targetView); }}
public class TestGlideActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); File file = new File(Environment.getExternalStorageDirectory(), "test.jpg"); ImageView targetView = (ImageView) findViewById(R.id.iv_target); Glide.with(this). load(file). asBitmap(). into(targetView); }}
/** * Created by Greathfs on 2016/6/6. */public class TestGlideActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); Uri uri = Uri.parse("android.resource://" + this.getPackageName() + "/" + R.drawable.test); ImageView targetView = (ImageView) findViewById(R.id.iv_target); Glide.with(this). load(uri). asBitmap(). into(targetView); }}
Example 5:加载GIF图片
public class TestGlideActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); ImageView targetView = (ImageView) findViewById(R.id.iv_target); Glide.with(this). load(R.drawable.smail). asGif().//注意:这里显示的指明了要加载的是gif图片,当然即使不指明,glide也会自己判断. into(targetView); }}
public class TestGlideActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); ImageView targetView = (ImageView) findViewById(R.id.iv_target); Glide.with(this). load(R.drawable.test). asBitmap(). placeholder(R.drawable.bg_loading).//加载中显示的图片 error(R.drawable.bg_error).//加载失败时显示的图片 into(targetView); }}
Example 7:淡入显示效果
public class TestGlideActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); ImageView targetView = (ImageView) findViewById(R.id.iv_target); Glide.with(this). load(R.drawable.test). placeholder(R.drawable.bg_loading).//加载中显示的图片 error(R.drawable.bg_error).//加载失败时显示的图片 crossFade().//淡入显示,注意:如果设置了这个,则必须要去掉asBitmap into(targetView); }}
public class TestGlideActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); ImageView targetView = (ImageView) findViewById(R.id.iv_target); Glide.with(this). load(R.drawable.test). placeholder(R.drawable.bg_loading).//加载中显示的图片 error(R.drawable.bg_error).//加载失败时显示的图片 crossFade().//淡入显示,注意:如果设置了这个,则必须要去掉asBitmap into(targetView); }}
Example 8:图片的裁剪
public class TestGlideActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); ImageView targetView = (ImageView) findViewById(R.id.iv_target); targetView.setScaleType(ImageView.ScaleType.FIT_CENTER); Glide.with(this). load(R.drawable.test). placeholder(R.drawable.bg_loading).//加载中显示的图片 error(R.drawable.bg_error).//加载失败时显示的图片 crossFade(1000).//淡入淡出,注意:如果设置了这个,则必须要去掉asBitmap override(80,80).//设置最终显示的图片像素为80*80,注意:这个是像素,而不是控件的宽高 centerCrop().//中心裁剪,缩放填充至整个ImageView into(targetView); }}
/** * Created by Greathfs on 2016/6/6. */public class TestGlideActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); ImageView targetView = (ImageView) findViewById(R.id.iv_target); targetView.setScaleType(ImageView.ScaleType.FIT_CENTER); Glide.with(this). load(R.drawable.test). placeholder(R.drawable.bg_loading).//加载中显示的图片 error(R.drawable.bg_error).//加载失败时显示的图片 crossFade(1000).//淡入淡出,注意:如果设置了这个,则必须要去掉asBitmap override(80,80).//设置最终显示的图片像素为80*80,注意:这个是像素,而不是控件的宽高 centerCrop().//中心裁剪,缩放填充至整个ImageView skipMemoryCache(true).//跳过内存缓存 into(targetView); }}
DiskCacheStrategy.NONE:什么都不缓存
DiskCacheStrategy.SOURCE:仅缓存原图 (全分辨率的图片)
DiskCacheStrategy.RESULT:仅缓存最终的图片,即修改了尺寸 或者 转换后的图片
DiskCacheStrategy.ALL:缓存所有版本的图片,默认模式
public class TestGlideActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); ImageView targetView = (ImageView) findViewById(R.id.iv_target); targetView.setScaleType(ImageView.ScaleType.FIT_CENTER); Glide.with(this). load(R.drawable.test). placeholder(R.drawable.bg_loading).//加载中显示的图片 error(R.drawable.bg_error).//加载失败时显示的图片 crossFade(1000).//淡入淡出,注意:如果设置了这个,则必须要去掉asBitmap override(80, 80).//设置最终显示的图片像素为80*80,注意:这个是像素,而不是控件的宽高 centerCrop().//中心裁剪,缩放填充至整个ImageView skipMemoryCache(true).//跳过内存缓存 diskCacheStrategy(DiskCacheStrategy.RESULT).//保存最终图片 into(targetView); }}
Example 11:
缓存设置
在GlideModule 中,我们可以设置磁盘缓存的位置,磁盘缓存的大小和内存缓存的大小,同时还可以设置图片的显示质量.
要是用GlideModule ,需要创建它的实现类,然后在manifests中申明实现类的全类路径:
<meta-data android:name="com.example.greathfs.httputilsdemo.image.glide.module.SimpleGlideModule" android:value="GlideModule" />GlideModule 的实现类,需要实现applyOptions方法:
/** * 所以你知道要创建一个额外的类去定制 Glide。 * 下一步是要全局的去声明这个类,让 Glide 知道它应该在哪里被加载和使用。 * Glide 会扫描 AndroidManifest.xml 为 Glide module 的 meta 声明。 * 因此,你必须在 AndroidManifest.xml 的 <application> 标签内去声明这个SimpleGlideModule。 * Created by mChenys on 2016/6/10. */public class SimpleGlideModule implements GlideModule { public static DiskCache cache; @Override public void applyOptions(Context context, GlideBuilder builder) { // 在 Android 中有两个主要的方法对图片进行解码:ARGB8888 和 RGB565。前者为每个像素使用了 4 个字节, // 后者仅为每个像素使用了 2 个字节。ARGB8888 的优势是图像质量更高以及能存储一个 alpha 通道。 // Picasso 使用 ARGB8888,Glide 默认使用低质量的 RGB565。 // 对于 Glide 使用者来说:你使用 Glide module 方法去改变解码规则。 builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888); //设置缓存目录 File cacheDir = PathUtils.getDiskCacheDir(context, CacheConfig.IMG_DIR); cache = DiskLruCacheWrapper.get(cacheDir, DiskCache.Factory.DEFAULT_DISK_CACHE_SIZE);// 250 MB builder.setDiskCache(new DiskCache.Factory() { @Override public DiskCache build() { return cache; } }); //设置memory和Bitmap池的大小 MemorySizeCalculator calculator = new MemorySizeCalculator(context); int defaultMemoryCacheSize = calculator.getMemoryCacheSize(); int defaultBitmapPoolSize = calculator.getBitmapPoolSize(); int customMemoryCacheSize = (int) (1.2 * defaultMemoryCacheSize); int customBitmapPoolSize = (int) (1.2 * defaultBitmapPoolSize); builder.setMemoryCache(new LruResourceCache(customMemoryCacheSize)); builder.setBitmapPool(new LruBitmapPool(customBitmapPoolSize)); } @Override public void registerComponents(Context context, Glide glide) { }}
设置加载缩略图
通过设置缩略图,我们可以在显示目标图片之前先展示一个第分辨率或者其他图片,当全分辨率的目标图片在后台加载完成后,
Glide会自动切换显示全像素的目标图片.
设置缩略图有2种方式:
通过thumbnail(float)指定0.0f~1.0f的原始图像大小,例如全像素的大小是500*500,如果设置为thumbnail为0.1f,即目标图片的10%,显示的缩略图大小就是50*50;
public class TestGlideActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); ImageView targetView = (ImageView) findViewById(R.id.iv_target); Glide.with(this). load(R.drawable.test). placeholder(R.drawable.bg_loading).//加载中显示的图片 error(R.drawable.bg_error).//加载失败时显示的图片 crossFade(1000).//淡入淡出,注意:如果设置了这个,则必须要去掉asBitmap override(80, 80).//设置最终显示的图片像素为80*80,注意:这个是像素,而不是控件的宽高 centerCrop().//中心裁剪,缩放填充至整个ImageView skipMemoryCache(true).//跳过内存缓存 diskCacheStrategy(DiskCacheStrategy.RESULT).//保存最终图片 thumbnail(0.1f).//10%的原图大小 into(targetView); }}通过thumbnail(DrawableRequestBuilder)方式来指定缩略图,该缩略图可以使用load的所有方式(网络,文件,uri,资源)加载.
public class TestGlideActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); ImageView targetView = (ImageView) findViewById(R.id.iv_target); //缩略图请求 DrawableRequestBuilder<String> thumbnailRequest = Glide .with(this) .load("http://www.qq745.com/uploads/allimg/141106/1-141106153Q5.png"); Glide.with(this). load(R.drawable.test).// placeholder(R.drawable.bg_loading).//加载中显示的图片// error(R.drawable.bg_error).//加载失败时显示的图片// crossFade(1000).//淡入淡出,注意:如果设置了这个,则必须要去掉asBitmap override(80, 80).//设置最终显示的图片像素为80*80,注意:这个是像素,而不是控件的宽高 centerCrop().//中心裁剪,缩放填充至整个ImageView skipMemoryCache(true).//跳过内存缓存 diskCacheStrategy(DiskCacheStrategy.RESULT).//保存最终图片 thumbnail(thumbnailRequest).//设置缩略图 into(targetView); }}
动画处理
通过animate()方法可以设置xml文件定义的4种补间动画(alpha、scale、translate、rotate)
例如:
res\anim\left_in.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="@android:integer/config_mediumAnimTime" android:fromXDelta="-50%p" android:toXDelta="0"/> <alpha android:duration="@android:integer/config_mediumAnimTime" android:fromAlpha="0.0" android:toAlpha="1.0"/></set>使用方式:
public class TestGlideActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); ImageView targetView = (ImageView) findViewById(R.id.iv_target); Glide.with(this). load(R.drawable.test). asBitmap(). animate(R.anim.left_in).//加载xml文件定义的动画 into(targetView); }}处理此外,还可以通过animate指定属性动画:
public class TestGlideActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); ImageView targetView = (ImageView) findViewById(R.id.iv_target); ViewPropertyAnimation.Animator animationObject = new ViewPropertyAnimation.Animator() { @Override public void animate(View view) { //设置属性动画 ObjectAnimator moveIn = ObjectAnimator.ofFloat(view, "translationX", -500f, 0f); ObjectAnimator rotate = ObjectAnimator.ofFloat(view, "rotation", 0f, 360f); ObjectAnimator fadeInOut = ObjectAnimator.ofFloat(view, "alpha", 1f, 0f, 1f); ObjectAnimator moveTop = ObjectAnimator.ofFloat(view, "translationY", 0f, -2000, 0f); AnimatorSet animSet = new AnimatorSet(); //先左进,然后旋转伴随淡入效果,最后移动向上 animSet.play(rotate).with(fadeInOut).after(moveIn).before(moveTop); animSet.setDuration(5000); animSet.start(); } }; Glide.with(this). load(R.drawable.test). asBitmap(). animate(animationObject).//加载属性动画 into(targetView); }}
- Google推荐的图片加载库Glide
- Glide,Google推荐的图片加载库
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- Google推荐的图片加载库Glide介绍
- android adb源码分析(3)
- C#控制台 console.writeline中占位符的示例
- bash破壳漏洞反弹shell
- 高并发数据结构Disruptor解析(4)
- APP开发之初:自定义NavigationController,拦截所有push方法.
- Glide,Google推荐的图片加载库
- SharePoint 2013 Using PeopleEditor in Custom list or Custom Web Parts
- CentOS 7 关闭 SElinux
- 手把手教你配置苹果APNS推送服务
- Java抽象类
- 题目975 关于521
- 在线web表单设计器
- Java浅尝
- 数据结构实验之查找七:线性之哈希表