将缓存图像从一个活动传递到另一个活动

时间:2017-09-25 06:24:16

标签: android caching android-glide

我将来自url的图像加载到Activity 1中的imageview中(使用滑动)。当我切换到活动2时,我断开网络连接,我需要在另一个imageview中加载相同的图像。我该怎么做到这一点?这可以通过使用滑动某处缓存的图像来完成吗?

3 个答案:

答案 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)