Glide.with(this)
.load(“https://unsplash.it/200/200?random&22”)
.preload();
预加载后显示
Glide.with(this.getApplicationContext())
.load(“https://unsplash.it/200/200?random&22”)
.into(mImage);
- submit()方法:类似Glide3中的downloadOnly
new Thread(new Runnable() {
@Override
public void run() {
try {
final Context context = getApplicationContext();
FutureTarget target = Glide.with(context)
//.asDrawable()
.asFile()
.load(url)
.submit();
//final Drawable drawable = target.get();
final File imageFile = target.get();
runOnUiThread(new Runnable() {
@Override
public void run() {
mTextview.setText(imageFile.getPath());
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
- listener()方法
Glide.with(this.getApplicationContext())
.load(url)
.listener(new RequestListener() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) {
mTextview.setText(“加载失败”);
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) {
mTextview.setText(“加载成功”);
return false;
}
})
.into(mImage);
- 图片变换(圆角等)
RequestOptions options3 = new RequestOptions();
//options3.centerCrop();
// options3.fitCenter();
options3.circleCrop();
Glide.with(this.getApplicationContext())
.load(“https://unsplash.it/200/200?random&55”)
.apply(options3)
.into(mImage);
自定义模块
在Glide3中定义了自定义模块之后,还必须在AndroidManifest.xml文件中去注册它才能生效,而在Glide 4中是不需要的,因为@GlideModule这个注解已经能够让Glide识别到这个自定义模块了(记得Build -> Rebuild Project)!
package tsou.com.simple.glide4test.glidemodule;
import android.content.Context;
import com.bumptech.glide.Glide;
import com.bumptech.glide.GlideBuilder;
import com.bumptech.glide.Registry;
import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.load.DecodeFormat;
import com.bumptech.glide.load.engine.cache.ExternalPreferredCacheDiskCacheFactory;
import com.bumptech.glide.module.AppGlideModule;
/**
-
Created by Administrator on 2017/12/22 0022.
-
在Glide3中需要在AndroidManifest.xml中配置
-
-
Glide4,只要有@GlideModule注解就好
*/
@GlideModule
public class MyAppGlideModule extends AppGlideModule {
public static final int DISK_CACHE_SIZE = 500 * 1024 * 1024;
public static final String DISK_CACHE_NAME = “huangxiaoguo”;
@Override
public void applyOptions(Context context, GlideBuilder builder) {
super.applyOptions(context, builder);
/**
将所有Glide加载的图片缓存到SD卡上,
默认硬盘缓存大小都是250M,这里改为500
- */
//builder.setDiskCache(new ExternalCacheDiskCacheFactory(context));
/**
ExternalCacheDiskCacheFactory的默认缓存路径
是在sdcard/Android/data/包名/cache/image_manager_disk_cache目录当中
*/
//builder.setDiskCache(new ExternalCacheDiskCacheFactory(context, DISK_CACHE_SIZE));
/**
-
更改缓存最总文件夹名称
-
是在sdcard/Android/data/包名/cache/DISK_CACHE_NAME目录当中
*/
//此方法在Glide4已过时
// builder.setDiskCache(new ExternalCacheDiskCacheFactory(context, DISK_CACHE_NAME, DISK_CACHE_SIZE));
builder.setDiskCache(new ExternalPreferredCacheDiskCacheFactory(context, DISK_CACHE_NAME, DISK_CACHE_SIZE));
/**
-
Glide也能使用ARGB_8888的图片格式
-
虽然图片质量变好了,但同时内存开销也会明显增大
*/
builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888);
}
@Override
public void registerComponents(Context context, Glide glide, Registry registry) {
super.registerComponents(context, glide, registry);
}
}
- 默认缓存路径
- 设置缓存路径为SD卡
Glide3替换成Glide4(Generated API)
在自定义模块完成以后,就可以使用Glide的模式啦!请看:
//使用Generated API(类似Glide3用法)
//使用GlideApp,首先确保你的代码中有一个自定义的模块,
// 并且给它加上了@GlideModule注解,也就是自定义模块
GlideApp.with(this.getApplicationContext())
.load(url)
.placeholder(R.drawable.ic_launcher_background)
.error(R.mipmap.load_error)
.skipMemoryCache(true)//清除缓存
.diskCacheStrategy(DiskCacheStrategy.NONE)//表示既缓存原始图片,也缓存转换过后的图片
.override(Target.SIZE_ORIGINAL)
.circleCrop()//切圆
.into(mImage);
把之前Glide替换成GlideApp,就可以使用Glide3的方式进行使用了!是不是很方便!
定制自己的API
定制自己的API需要借助@GlideExtension和@GlideOption这两个注解。创建一个我们自定义的扩展类
package tsou.com.simple.glide4test.glidemodule;
import com.bumptech.glide.annotation.GlideExtension;
import com.bumptech.glide.annotation.GlideOption;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.RequestOptions;
import tsou.com.simple.glide4test.R;
/**
- Created by Administrator on 2017/12/25 0025.
*/
@GlideExtension
public class MyGlideExtension {
/**
- 将这个类的构造函数声明成private,这是必须要求的写法
*/
最后
希望大家能有一个好心态,想进什么样的公司要想清楚,并不一定是大公司,我选的也不是特大厂。当然如果你不知道选或是没有规划,那就选大公司!希望我们能先选好想去的公司再投或内推,而不是有一个公司要我我就去!还有就是不要害怕,也不要有压力,平常心对待就行,但准备要充足。最后希望大家都能拿到一份满意的 offer !如果目前有一份工作也请好好珍惜好好努力,找工作其实挺累挺辛苦的。
这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
由于篇幅有限,这里以图片的形式给大家展示一小部分。可以点击GitHub免费获取
好好努力,找工作其实挺累挺辛苦的。
这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
由于篇幅有限,这里以图片的形式给大家展示一小部分。可以点击GitHub免费获取
[外链图片转存中…(img-uwlFtIhi-1645097803967)]