您的位置:首页 > 移动开发 > Android开发

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

2017-10-25 09:51 363 查看




酷狗音乐的这个皮肤预览功能,是将整个界面缩小,就是将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自定义控件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐