方形View和ViewGroup

来源:互联网 发布:mac os x10.5下载 编辑:程序博客网 时间:2024/06/11 09:54

首先看一下方形ImageView,其他的方形View相同

public class PolaroidSquaredImageView extends ImageView {    public PolaroidSquaredImageView(Context context) {        super(context);    }    public PolaroidSquaredImageView(Context context, AttributeSet attrs) {        super(context, attrs);    }    @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        super.onMeasure(widthMeasureSpec, heightMeasureSpec);        //这里是根据高度来固定正方形的边长        setMeasuredDimension(getMeasuredHeight(), getMeasuredHeight());        //下面是根据宽度来固定正方形的边长        //setMeasuredDimension(getMeasuredWidth(), getMeasuredWidth());    }

再看一下正方形的LinearLayout

public class PolaroidSquaredLinearLayout extends LinearLayout {    public PolaroidSquaredLinearLayout(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    public PolaroidSquaredLinearLayout(Context context) {        super(context);    }    public PolaroidSquaredLinearLayout(Context context, AttributeSet attrs) {        super(context, attrs);    }    @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        int width = MeasureSpec.getSize(widthMeasureSpec);        int height = MeasureSpec.getSize(heightMeasureSpec);        int size = Math.min(width, height);        // 这里是以高度为正方形的边长. 以宽度为边长类似        super.onMeasure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),                MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY));    }}
0 0
原创粉丝点击