Picasso加载本地文件不显示问题解决
最近在写项目中如何设计图片库,随意选择了Glide(4.8.0)和Picasso(2.71828)作为切换对象,而后在Picasso遇到了少量坑,记录以下:
简单说明以下:
Glide和Picasso在传入图片路径的时候,大致都支持以下格式:
- 网络地址:如
https://img.songma.com/wenzhang/20181216/piyh3nkjdlc117.png
- 本地文件:
/sdcard/image/xxx.png
- 本地文件的uri格式:
file:////sdcard/image/xxx.png
- File类型:
new File("/sdcard/image/xxx.png")
- 其余格式,如
uri、byte
数组等等
以上格式传入的时候在不同的手机版本中Glide都可以显示出图片来,但是在Picasso,我自己测试的/sdcard/image/xxx.png
、file:////sdcard/image/xxx.png
、new File("/sdcard/image/xxx.png")
、Uri.parse("file:////sdcard/image/xxx.png")
、Uri.fromFile(file)
这几种格式在华为meta10 pro手机上都无法显示,只有网络地址的可以显示。
这个问题研究了半天,各种网上查资料,大部分都说的是直接传入/sdcard/image/xxx.png
这种格式不能显示,这个起因我是知道的,没有说明为什么传入file类型或者者增加了file:////sdcard/image/xxx.png
格式的也无法显示,忽然想到之前做相册图片裁剪时遇到的7.0以上uri安全问题,测试了一下果然如此。处理方案如下:
public void showImage(Context context, ImageView imageView, String url) { Uri loadUri = null; if (url.startsWith("http")) { //网络图片 loadUri = Uri.parse(url); } else { //本地文件 if (url.startsWith("file://")) { //文件的方式 if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N) { //Android 7.0系统开始 使用本地真实的Uri路径不安全,使用FileProvider封装共享Uri url = Uri.parse(url).getPath(); } } File file = new File(url); if (file != null && file.exists()) { //本地文件 if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N) { //Android 7.0系统开始 使用本地真实的Uri路径不安全,使用FileProvider封装共享Uri loadUri = FileProvider.getUriForFile(context, context.getPackageName() + ".fileprovider", file); } else { loadUri = Uri.fromFile(file); } } else { //可能是资源路径的地址 loadUri = Uri.parse(url); } } Picasso.get().load(loadUri).into(imageView);}
尽管Picasso也挺好的,但是两个用起来以及在兼容性、实用性上面,自我感觉还是Glide使用者顺手。(性能方面不做比较)
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Picasso加载本地文件不显示问题解决
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Picasso加载本地文件不显示问题解决