我有这个扩展的类View
:
public class DrawingPanel extends View {
private Bitmap toDisk;
private int w;
private int h;
public DrawingPanel(Context context, AttributeSet attrs) {
super(context, attrs);
System.out.println("Drawing");
p0 = new Paint();
p0.setStyle(Style.STROKE);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
...
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
this.w = w;
this.h = h;
toDisk = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
super.onSizeChanged(w, h, oldw, oldh);
}
@Override
public void onDraw(Canvas canvas) {
canvas.drawColor(Color.WHITE);
canvas.drawPath(path0, p0);
canvas.setBitmap(toDisk);
}
}
我将此类用作布局中的子视图。在Graphical view
Eclipse 中,一切正常,所有视图都是可见的,但在模拟器中,我的类 ( DrawingPanel
) 隐藏了它下面的其他视图。当我删除这一行时:
canvas.setBitmap(toDisk);
所有视图将再次可见。还有一件奇怪的事情:当我把那行放在这样的onDraw
方法的第一行时:
@Override
public void onDraw(Canvas canvas) {
canvas.setBitmap(toDisk);
canvas.drawColor(Color.WHITE);
canvas.drawPath(path0, p0);
}
我DrawingPanel
和它下面的其他视图将是不可见的。我怎么解决这个问题?
我的目的是保存用户在画布上绘制的内容。