Android自定义控件之酷狗音乐皮肤界面缩放预览

来源:互联网 发布:mac电池健康度怎么看 编辑:程序博客网 时间:2024/04/30 07:57

这里写图片描述
这里写图片描述

酷狗音乐的这个皮肤预览功能,是将整个界面缩小,就是将canvas缩小。public class ScaleRelativeLayout extends RelativeLayout {    float scale = 1;    float mViewHeight;    float mScreenWidth, mScreenHeight;    public ScaleRelativeLayout(Context context) {        this(context,null);    }    public ScaleRelativeLayout(Context context, AttributeSet attrs) {        super(context, attrs);    }    @Override    protected void dispatchDraw(Canvas canvas) {        canvas.save();        canvas.translate(0, (mScreenHeight - mViewHeight) / 2);        canvas.scale(scale, scale, mScreenWidth / 2, mScreenHeight / 2);        super.dispatchDraw(canvas);        canvas.restore();    }    @Override    protected void onSizeChanged(int w, int h, int oldw, int oldh) {        if (mScreenHeight != 0) {            scale = (mViewHeight - getPaddingTop() - getPaddingBottom())                    / mScreenHeight;        }        super.onSizeChanged(w, h, oldw, oldh);    }    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        setMeasuredDimension(getDefaultSize(0, widthMeasureSpec),                getDefaultSize(0, heightMeasureSpec));        mViewHeight = getMeasuredHeight();        mScreenHeight = ScreenUtils.getScreenHeight(getContext());        mScreenWidth = ScreenUtils.getScreenWidth(getContext());        super.onMeasure(MeasureSpec.makeMeasureSpec((int) mScreenWidth,                MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(                (int) mScreenHeight, MeasureSpec.EXACTLY));    }}

参考:Android自定义控件

原创粉丝点击