android 创建新画布,创建一个新的view的基本框架

这篇博客介绍了如何在Android中扩展View类,通过重写onMeasure方法来计算自定义View的高度和宽度,并利用onDraw方法绘制视觉效果。文章强调了在onMeasure中调用setMeasuredDimension的重要性,以避免布局时出现异常。
摘要由CSDN通过智能技术生成

基本的View类代表一个全空的100×100像素的正方形。为了改变控件的大小和显示更炫的视觉效果,最具代表的,你需要重写onMeasure和onDraw方法。

在onMeasure方法里,新的View会依据给的边界条件来计算它要占据的高度和宽度。在onDraw方法里,通过在画布上画画来创建视觉界面。

接下来的代码片段给出了一个新的View类的框架代码:public class MyView extends View {

// Constructor required for in-code creation

public MyView(Context context) {

super(context);

}

// Constructor required for inflation from resource file

public MyView (Context context, AttributeSet ats, int defaultStyle) {

super(context, ats, defaultStyle );

}

//Constructor required for inflation from resource file

public MyView (Context context, AttributeSet attrs) {

super(context, attrs);

}

@Override

protected void onMeasure(int wMeasureSpec, int hMeasureSpec) {

int measuredHeight = measureHeight(hMeasureSpec);

int measuredWidth = measureWidth(wMeasureSpec);

// 必须调用setMeasuredDimension方法

// 否则当控件放置时会引发一个运行时异常。

setMeasuredDimension(measuredHeight, measuredWidth);

}

private int measureHeight(int measureSpec) {

int specMode = MeasureSpec.getMode(measureSpec);

int specSize = MeasureSpec.getSize(measureSpec);

[ ... 计算View的高度 ... ]

return specSize;

}

private int measureWidth(int measureSpec) {

int specMode = MeasureSpec.getMode(measureSpec);

int specSize = MeasureSpec.getSize(measureSpec);

[ ... 计算View的宽度 ... ]

return specSize;

}

@Override

protected void onDraw(Canvas canvas) {

[ ... Draw your visual interface ... ]

}

}

注意:onMeasure方法中调用setMeasuredDimension方法;你必须总是在你重写onMeasure方法时调用这个方法,否则,当父容器尝试放置控件时你的控件会引发一个异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值