今天碰到一个需求:A界面点击用户头像logo, 能够在B界面放大预览。B界面预览图片使用的是Glide。有多种办法,记录如下:
1. 傻瓜办法(不推荐):获取用户头像控件(一般是ImageView)的Bitmap, 传递到B界面再用Glide展示
1 | imageView.buildDrawingCache(); |
办法1不推荐原因是Intent传递Bitmap很容易造成OOM。据说Bitmap不能大于40K,我没有验证过。
2. 推荐方案:我们知道显示的图片要么是来自于网络要么是来自本地。网络图片我们用intent传递url过去,本地图片传递文件名。不管是哪种,都传递的是字符串。现在看下接收端怎么处理
1 | 1.本地图片:假设url为 showLocalPic:ic_logo_64 |
注意:使用文件名获取对应资源ID办法: int imgResId = getResources().getIdentifier(mImgUrl, “drawable”, getPackageName());
这里的 drawable 还可以是 xml, layout等等