从带有缓存的URI android下载图像

时间:2016-06-16 12:23:03

标签: android caching download

我正在尝试从使用FirebaseUi获取的uri下载图像,因此我可以将此图像设置为导航抽屉布局中的headerView。

我想要一个缓存,所以只需要在照片后下载,然后只使用缓存照片。

gs.log("the file id is "+obj1.exportLinks['application/rtf']);

4 个答案:

答案 0 :(得分:1)

您可以使用Picasso(http://square.github.io/picasso/)加载和缓存图片。

Picasso.with(context)
.load("https://placeholdit.imgix.net/~text?txtsize=33&txt=350%C3%97150&w=350&h=150")
.placeholder(R.drawable.image_name_default)
.error(R.drawable.image_name_error)
.into(imageView);

这是加载图像的示例,以及在下载图像之前加载的传递占位符,如果下载失败则会加载错误图像。

  

还允许许多其他配置,例如内存缓存大小,   磁盘高速缓存大小,调整大小,使用http拦截器重试,最好的是启用调试,显示从缓存或网络加载的图像(setIndicatorsEnabled(true))。

答案 1 :(得分:0)

尝试从uri创建位图对象并缓存位图

Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), personPhoto);

要缓存位图,请阅读本文Caching Bitmaps

答案 2 :(得分:0)

最好使用毕加索库进行图像下载和缓存。

https://github.com/square/picasso

对于下载和缓存,您只需要编写一行代码 -

Picasso.with(getApplicationContext()).load(imageURL).placeholder(R.drawable.place_holder).into(imageView);

希望它能奏效:)

答案 3 :(得分:0)

您可以使用Picasso库自动缓存图像。

首先将库添加到应用程序的build.gradle:

compile 'com.squareup.picasso:picasso:2.5.2'

然后用它来下载并显示图像:

FirebaseAuth auth = FirebaseAuth.getInstance(FirebaseApp.getInstance());
if (auth.getCurrentUser() != null) {
    View hview = navigationView.getHeaderView(0);

    String personName = auth.getCurrentUser().getDisplayName();
    String personEmail = auth.getCurrentUser().getEmail();
    String personId = auth.getCurrentUser().getUid();
    Uri personPhoto = auth.getCurrentUser().getPhotoUrl();


    if (personPhoto != null) {
        ImageView imgView = (ImageView) hview.findViewById(R.id.header_imageView);
        // Download photo and set to image
        Context context = imgView.getContext();
        Picasso.with(context).load(personPhoto).into(imgView);
    }
}