我正在尝试从使用FirebaseUi获取的uri下载图像,因此我可以将此图像设置为导航抽屉布局中的headerView。
我想要一个缓存,所以只需要在照片后下载,然后只使用缓存照片。
gs.log("the file id is "+obj1.exportLinks['application/rtf']);
答案 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);
}
}