用Fresco加载图片发现加载不出来,开始怀疑是图片的问题,但用 imageView.setImageBitmap是可以正常展示,但由于业务需求,需要对图片进行放大缩小效果,故必须使用Fresco加载,后来发现该图片名含有%3a、%2f这类符号,发现该类符号是在浏览器和插件中显示非标准的字母和字符,它们分别对应的是:和/,所以这张图片应该是从网上获取的。找到问题了,就把该类字符全部替换掉。
/**
* \/:*?*<>| 这些字符用URL编码形式表示的ASCII字符,
* 在浏览器和插件中显示非标准的字母和字符,如%3a、%2f等,含有这些
* 字符串的文件名、用fresco是加载不出来的
* modify by
*/
public class UrlEncodeUtil {
/**
* 将含有的特殊字符替换掉
* 如果不含有特殊字符,返回""
*/
public static String replaceSpecialChar(String path){
// \/:*?*<>|这几个字符分别对应的URL编码形式表示的ASCII字符
String regEx = "%5c|%2f|%3a|%2a|%3f|%3c|%3e|%7c";
Pattern p = Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(path);
if (m.find()){
return m.replaceAll("").trim();
}
return "";
}
}