簡體   English   中英

將緩存圖像從一個活動傳遞到另一個活動

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM