私は拡張するこのクラスを持っています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);
}
}
このクラスをレイアウトの子ビューとして使用します。EclipseではGraphical view
すべて問題なく、すべてのビューが表示されますが、エミュレーターではクラス ( DrawingPanel
) がその下にある他のビューを非表示にします。この行を削除すると:
canvas.setBitmap(toDisk);
すべてのビューが再び表示されます。そしてもう1つの奇妙なこと:その行をonDraw
メソッドの最初の行に次のように入れると:
@Override
public void onDraw(Canvas canvas) {
canvas.setBitmap(toDisk);
canvas.drawColor(Color.WHITE);
canvas.drawPath(path0, p0);
}
その下にある私DrawingPanel
のビューと他のビューは見えなくなります。どうすればこの問題を解決できますか?
私の目的は、ユーザーがキャンバスに描いたものを保存することです。