我正在尝试学习开发者页面上给出的一个安卓示例。它提供了两种在画布上绘制的方法。第一种方法是使用一个叫做CustomDrawableView的类,代码如下:
public class CustomDrawableView extends View {
private ShapeDrawable mDrawable;
public CustomDrawableView(Context context) {
super(context);
int x = 10;
int y = 10;
int width = 300;
int height = 50;
mDrawable = new ShapeDrawable(new OvalShape());
mDrawable.getPaint().setColor(0xff74AC23);
mDrawable.setBounds(x, y, x + width, y + height);
}
protected void onDraw(Canvas canvas) {
mDrawable.draw(canvas);
}
}
接下来由主类调用:
CustomDrawableView mCustomDrawableView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCustomDrawableView = new CustomDrawableView(this);
setContentView(mCustomDrawableView);
}
但是教程指出:
如果你想从XML布局中绘制这个自定义的drawable而不是从Activity中绘制,那么CustomDrawable类必须重写View(Context,AttributeSet)构造函数,它在通过XML膨胀实例化视图时被调用。然后像这样向XML添加一个CustomDrawable元素:
<com.example.shapedrawable.CustomDrawableView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
我已经成功运行了第一个示例,但如果我想采用第二个选项,我不知道我的代码应该是什么样子的。可能我要从@ Override View开始,但是我卡住了。
我想这样做的原因是因为我想创建一个只覆盖屏幕一部分的画布,这样我就可以在另一部分放置按钮和文本。