这里我们重点理解ImageView的属性android:scaleType,即ImageView.setScaleType(ImageView.ScaleType)。android:scaleType是控制图片如何resized/moved来匹对ImageView的size。ImageView.ScaleType / android:scaleType值的意义区别:

CENTER /center按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示

CENTER_CROP / centerCrop按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)

CENTER_INSIDE / centerInside将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽

FIT_CENTER / fitCenter把图片按比例扩大/缩小到View的宽度,居中显示

FIT_END / fitEnd 把图片按比例扩大/缩小到View的宽度,显示在View的下部分位置

FIT_START / fitStart把图片按比例扩大/缩小到View的宽度,显示在View的上部分位置

FIT_XY / fitXY把图片不按比例扩大/缩小到View的大小显示

MATRIX / matrix 用矩阵来绘制




getView里面
if (max_position != position) {
holder.image.setImageBitmap(bitmap);
holder.image.setScaleType(ScaleType.CENTER);
} else {
holder.image.setScaleType(ScaleType.MATRIX );
//获得Bitmap的高和宽
int bmpWidth=bitmap.getWidth();
int bmpHeight=bitmap.getHeight();
//产生resize后的Bitmap对象
Matrix matrix=new Matrix();
matrix.setScale(1.05f, 1.05f);
Bitmap resizeBmp=Bitmap.createBitmap(bitmap, 0, 0, bmpWidth, bmpHeight, matrix, true);
holder.image.setImageBitmap(resizeBmp);
}

private int max_position;
public void notifyDataSetChanged(int position) {
max_position = position;
notifyDataSetChanged();
}

也可以直接

if (max_position != position) {
holder.image.setImageBitmap(bitmap);
holder.image.setScaleType(ScaleType.CENTER_INSIDE);
} else {
holder.image.setImageBitmap(bitmap);
holder.image.setScaleType(ScaleType.CENTER_CROP);
}



更多相关文章

  1. 在LinearLayout中嵌套RelativeLayout来设置Button的位置(xml文件)
  2. Android中由于设置的背景图片太大导致OOM
  3. android操作系统默认的图片
  4. Spinner弹出位置变化
  5. 2013.04.03——— android 图片缓存之二LruCache介绍
  6. Android获取屏幕宽度与高度

随机推荐

  1. android以后台service的方式获取GPRS数据
  2. Android问答
  3. 如何开发一个适配Android和iOS双平台的Re
  4. Android多进程使用及其带来的问题
  5. Android 5.0后截屏,无需root
  6. Android实现字幕滚动的方法
  7. 如何搭建Repo服务器端
  8. Android NDK入门理解
  9. Android 控件Edittext详解
  10. android耳机状态的检测