您的位置:首页 > 移动开发 > Android开发

Android-相同BitmapDrawable在不同ImageView显示问题

2014-05-19 14:44 585 查看
这个问题首先在内存中有一份BitmapDrawable对象,在界面中有两个大小不一样的ImageView(A和B),在显示同一份BitmapDrawable时,先显示大的ImageView-A,再显示小的ImageView-B,这样开始没有问题,结果在调用显示方法让A重新显示这张图片,结果这张图片在A中显示变小了。

其实网上也有相关网友遇到这样的问题,例如用ImageView A做了个按钮,(用id引用drawable中的图片a),并做了个半透明效果(通过setAlpha),当用户Touch这个A时才不透明。现在我在另一处地方也需要用到图片a(不需要半透明行为),也是建立了一个新ImageView
B并用id引用。然后你看看最终显示效果,会发现A和B保持着同样的外观,也就是要么A跟B一样不透明,要么B跟A一样半透明。

如果想了解更多可以看这个网址:http://www.cnblogs.com/lbeing/archive/2011/06/13/2080168.html,在这篇文章中了解到,谷歌在设计drawable对象的时候,为了避免浪费内存,相同图片的drawable会共享一个Constant
state对象,所以在图片已经变小了,如果你要显示在大的ImageView上面,它记录的是小图片的Constant state状态。所以你只要调用mutate()方法,就可以解决这个问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: