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()方法,就可以解决这个问题。
其实网上也有相关网友遇到这样的问题,例如用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()方法,就可以解决这个问题。
相关文章推荐
- Android Bitmap太大导致ImageView不显示的问题
- Android Bitmap太大导致ImageView不显示的问题
- Android Bitmap太大导致ImageView不显示的问题
- Android 同一个ImageView显示不同的图片(LevelDrawable)
- Android 拍照并显示在ImageView中(解决图片压缩失真的问题)
- Android中的ImageView的getDrawableCache获取背景图片的时候注意的问题
- Android中同一个ImageView中根据状态显示不同图片
- Android开发:同一ImageView显示不同图片
- android——获取ImageView上面显示的图片bitmap对象
- Android:用@drawable/image的不同扩展名问题
- Android问题集(二)——TextView在点击时显示不同颜色,Button点击效果
- 解决Android ImageView用setImageDrawable方法图片缩小的问题
- 【Android 问题集锦】关于android ImageView前景图片显示很小的问题
- android 同一个ImageView显示不同的图片--->level-list
- android 构建 Drawable对象 TextView和ImageView一起显示
- android 怎么把网络图片生成一个Bitmap显示在ImageView中
- 关于Android ImageView 图片显示的几个问题
- Android应用开发——Animation Drawable ImageView显示动画
- Android中同一个ImageView中根据状态显示不同图片
- 安卓学习笔记(一)Android ImageButton、ImageView控件属性设置 图片显示问题