优化ImageView,在使用ListView或GridView的时候,每次更新图片的时候,在显示新的图片和旧的图片一样大小的时候,不需要去重新计算大小
2013-05-22 12:07
691 查看
OptimisedImageView.java外部引用原始文档
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | import android.content.Context; import android.graphics.drawable.Drawable; import android.os.Build.VERSION; import android.os.Build.VERSION_CODES; import android.util.AttributeSet; import android.widget.ImageView; public class OptimisedImageView extends ImageView { private boolean mIgnoreNextRequestLayout = false; public OptimisedImageView(Context context, AttributeSet attrs) { super(context, attrs); } @Override public void setImageDrawable(final Drawable newDrawable) { if (VERSION.SDK_INT < VERSION_CODES.ICE_CREAM_SANDWICH) { // The currently set Drawable final Drawable oldDrawable = getDrawable(); if (null != oldDrawable && oldDrawable != newDrawable) { final int oldWidth = oldDrawable.getIntrinsicWidth(); final int oldHeight = oldDrawable.getIntrinsicHeight(); /** * Ignore the next requestLayout call if the new Drawable is the * same size as the currently displayed one. * */ mIgnoreNextRequestLayout = oldHeight == newDrawable.getIntrinsicHeight() && oldWidth == newDrawable.getIntrinsicWidth(); } } // Finally, call up to super super.setImageDrawable(newDrawable); } @Override public void requestLayout() { if (!mIgnoreNextRequestLayout) { super.requestLayout(); } // Reset Flag so that the requestLayout() will work again mIgnoreNextRequestLayout = false; } } |
相关文章推荐
- Android在打开一个新的Activity浏览大图时使用ImageView/PhotoView的时候图片显示在屏幕上部的问题
- 使用GridView和ImageView组件实现图片显示
- 使用GridView和ImageView组件实现图片显示效果
- 举例说明android中Bitmap、ListView以及ImageView的综合使用---显示图片并获取图片的宽和高
- ListView图片优化(二)---弱引用关联---或者使用Volley下的NetworkImageView
- (原创)使用AsyncTask(带修改线程池方式)+自定义ImageLoader+LRU算法对图片三级缓存及其显示优化(只有在ListView滑动停止的时候才去网络请求获取图片数据)
- 图片显示 ImageView 要和显示的图一样大小
- Android中Gridview和ViewPager显示图片的优化处理(2)
- 如何使用GridView实现不同数量显示图片不同的大小
- android使用LruCache对listview加载图片时候优化处理
- 带有侧滑菜单的+ 通过retrofit获取数据,通过fresco框架加载图片,使用TabLayout + ViewPage + Fragment + ListView 显示数据
- Android深入浅出系列之实例应用—简单的手指拖动图片,图片滑来滑去显示应用Gallery和BaseAdapter以及ImageView的使用
- LISTVIEW嵌套GRIDVIEW的一些处理(点击GRIDVIEW的条目,能够显示他在LISTVIEW中的位置)(对这篇文章的优化处理,不每次都new onItemClickListener)
- android使用LruCache对listview加载图片时候优化处理
- 解决Android当中GridView的Item子控件中有ImageView图片大小不一致问题,动态设置ImageView控件大小
- ImageView使用和从内存读取图片显示
- 解决Android当中GridView的Item子控件中有ImageView图片大小不一致问题
- Android ListView异步加载图片乱序 使用NetworkImageView
- listview中的imageview获取网络图片重复显示的问题
- android中使用imageview显示Gif图片