实现宽高相同的ImageView
在ImageView类中,是通过OnMeasure()方法来测量宽高的。
@Override
protected void onMeasure(int widthMeasureSpec, int widthMeasureSpec) {
super.onMeasure(widthMeasureSpec, widthMeasureSpec);
}
形参 widthMeasureSpec, widthMeasureSpec中存储着宽和高的数据。
//获取View宽度
int width = MeasureSpec.getSize(widthMeasureSpec);
//获取宽度/高度的定义模式 //match_parent wrap_content 具体的dp数
int mode = MeasureSpec.getMode(widthMeasureSpec);
在ImageView类中,宽度和高度的测量是将这两个形参传入到父类的onMeasure()中,由父类进行处理。
因此 只需重写该函数,向父类的onMeasure()中,传入两个相同的形参,就可以自动的实现等宽或等高。