本文主要是自己学习的笔记,想学习的建议直接去看HenCoder视频教学地址。
作业内容:将下半部分实现与上半部分相同的效果

作业原地址:课程作业地址。
交作业地址:交作业。
实现代码:
/**
* 重写 onMeasure(),调整尺寸,让 ImageView 总是正方形
*/
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
// 先用 getMeasuredWidth() 和 getMeasuredHeight() 取到 super.onMeasure() 的计算结果
int width = getMeasuredWidth();
int height = getMeasuredHeight();
// 然后通过计算,让宽度和高度一致
width = Math.min(width, height);
height = Math.min(width, height);
// 再用 setMeasuredDimension(width, height) 来保存最终的宽度和高度
setMeasuredDimension(width, height);
}
布局中的图片宽高都是match_parent,scaleType是centerCrop,这里要修改宽高为其中小的那一个,所以要在onMeasure中先调用super.onMeasure, 获得之前的宽高,然后修改。注意:不要忘记调用setMeasuredDimension
感谢HenCoder
网友评论