我将来自url的图像加载到Activity 1中的imageview中(使用滑动)。当我切换到活动2时,我断开网络连接,我需要在另一个imageview中加载相同的图像。我该怎么做到这一点?这可以通过使用滑动某处缓存的图像来完成吗?
答案 0 :(得分:1)
在你的Activity1
中将ImageView转换为位图
imageView.buildDrawingCache();
Bitmap bmp = imageView.getDrawingCache();
Intent intent = new Intent(this, Activity2.class);
intent.putExtra("img", bmp);
在Activity2中
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("img");
imageView.setImageBitmap(bitmap);
答案 1 :(得分:0)
使用glide创建自己的缓存文件夹并将图像缓存到其中,而不是使用glide缓存图像。它可以在整个应用程序中轻松访问
Glide.with(yourImageView.getContext())
.load("your url")
.asBitmap()
.placeholder(R.drawable.place_holder)
.error(R.drawable.place_holder)
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {
//Create a folder for caching and add images from here
}
});
答案 2 :(得分:0)
我用这个,对我有用:
添加如下所示的OnClickListener:
Glide.with(this)
.load("URL HERE")
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(Image);
Image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent= new Intent(context,FullScreenImage.class);
intent.putExtra("image_url", "URL HERE" );
startActivity(intent);
}
});
然后在新活动中:
public class FullScreenImage extends AppCompatActivity {
ImageView myImage;
String url = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_full_screen_image);
url = getIntent().getStringExtra("image_url");
myImage = findViewById(R.id.myImage);
Glide.with(this).load(url)
.placeholder(R.drawable.ic_image_send_24dp)
.error(R.drawable.ic_image_send_24dp)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(myImage);
}
}
PS:在使用滑行功能时,不要忘记在两个活动中都使用.diskCacheStrategy(DiskCacheStrategy.ALL)
。