[英]Glide pre loaded image
我正在使用滑行加载本地图像。 在第一个活动中,我加载了五张大尺寸图像,而在第二个活动中又加载了相同的图像,但是问题是我已经在第一个活动中下载了图像,并且可以在缓存中使用,但是加载时花了第二个活动的时间。 我的第一个活动代码
Glide
.with(getApplicationContext())
.load(path)
.asBitmap()
.thumbnail(0.1f)
.diskCacheStrategy(DiskCacheStrategy.RESULT)
.priority(Priority.HIGH)
.override(180, 180);
和第二项活动
Glide
.with(context)
.load(path)
.asBitmap()
.thumbnail(0.1f)
.diskCacheStrategy(DiskCacheStrategy.RESULT)
.priority(Priority.HIGH)
.override(180, 180).into(viewHolder.img_android);
请注意,所有图像的大小均大于5 mb。 当我第一次打开第二个活动时,图像需要花一些时间才能加载,然后再次打开时加载得如此之快。 所以我想在第一次活动时预加载所有图像。 这怎么可能。 我的第一个活动代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.third);
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(R.drawable.iamge_1);
list.add(R.drawable.iamge_2);
list.add(R.drawable.iamge_3);
list.add(R.drawable.image_5);
list.add(R.drawable.iamge_4);
list.add(R.drawable.image_6);
loadImages(list);
findViewById(R.id.button3).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(First.this, Second.class);
startActivity(i);
}
});
}
public void loadImages(ArrayList<Integer> list) {
for ( int i = 0; i < list.size(); i++) {
Glide
.with(getApplicationContext())
.load(list.get(i))
.asBitmap()
.thumbnail(0.1f)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.priority(Priority.HIGH)
.override(133, 133);
}
}
第二活动代码:
private void initViews() {
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.card_recycler_view);
recyclerView.setHasFixedSize(true);
RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getApplicationContext(), 2);
recyclerView.setLayoutManager(layoutManager);
ArrayList<Integer> androidVersions = prepareData();
DataAdapter adapter = new DataAdapter(getApplicationContext(), androidVersions);
recyclerView.setAdapter(adapter);
}
public ArrayList<Integer> prepareData() {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(R.drawable.iamge_1);
list.add(R.drawable.iamge_2);
list.add(R.drawable.iamge_3);
list.add(R.drawable.image_5);
list.add(R.drawable.iamge_4);
list.add(R.drawable.image_6);
return list;
}
和适配器:
@Override
public DataAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.recycler_item, viewGroup, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(DataAdapter.ViewHolder viewHolder, int i) {
Glide
.with(context)
.load(android.get(i))
.asBitmap()
.thumbnail(0.1f)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.priority(Priority.HIGH)
.override(133, 133).into(viewHolder.img_android);
}
@Override
public int getItemCount() {
return android.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private TextView tv_android;
private ImageView img_android;
public ViewHolder(View view) {
super(view);
img_android = (ImageView) view.findViewById(R.id.img_android);
}
}
您可以使用
.placeholder(R.drawable.your_image) // for default image.
根据您的要求,阅读使用缓存策略
DiskCacheStrategy.NONE不缓存任何内容, 如前所述
DiskCacheStrategy.SOURCE仅缓存原始的全分辨率图像。 在上面的示例中,该像素为1000x1000像素
DiskCacheStrategy.RESULT在降低分辨率(可能还有转换)之后仅缓存最终映像(默认行为)
DiskCacheStrategy.ALL缓存映像的所有版本
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.