[英]Passing Cache Image from one Activity to another Activity
我將圖像從 url 加載到活動 1 中的圖像視圖中(使用滑行)。 當我切換到活動 2 時,我斷開了網絡連接,並且需要在另一個圖像視圖中加載相同的圖像。 我應該如何實現這一目標? 這可以通過使用 glide 緩存在某處的圖像來完成嗎?
在您的活動 1
將 ImageView 轉換為位圖
imageView.buildDrawingCache();
Bitmap bmp = imageView.getDrawingCache();
Intent intent = new Intent(this, Activity2.class);
intent.putExtra("img", bmp);
在活動 2
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("img");
imageView.setImageBitmap(bitmap);
不是使用 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
}
});
我使用這個,這對我有用:
添加一個 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)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.