1

私はまだ Android を学んでいます。サンプル ペイント アプリケーションをダウンロードしてそれをいじり、Android がグラフィックス/ドローアブル/ペイントを処理する方法について少し学ぶことにしました。私が持っているコードには、左上隅に緑と赤の「V」が表示され、タッチした場所に赤い点が続きます。ただ、画面が毎回描き直されてしまい、お絵かきツールとしては使えないことがわかりました。表面にバケツの白いペンキを垂らしてから、円を描き直しているかのようです。指をたどる赤い点が跡を残すようにするにはどうすればよいですか? これがコードです。

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnTouchListener;
import android.view.ViewGroup.LayoutParams;

public class MainActivity extends Activity implements OnTouchListener  {
private float x;
private float y;
private int moveX;
Paint paint = new Paint();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    MyCustomPanel view = new MyCustomPanel(this);

    ViewGroup.LayoutParams params = 
                        new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT,
                                                   LayoutParams.FILL_PARENT);
    addContentView(view, params);
    view.setOnTouchListener(this);

}
private class MyCustomPanel extends View {

    public MyCustomPanel(Context context) {
        super(context);

    }
    @Override
    public void onDraw(Canvas canvas) {

        paint.setColor(Color.GREEN);
        paint.setStrokeWidth(6);

        canvas.drawLine(moveX,10,50,50,paint);
        paint.setColor(Color.RED);

        canvas.drawLine(50, 50, 90, 10, paint);
        canvas.drawCircle(50, 50, 3, paint);
        moveX++;
        canvas.drawCircle(x,y,3,paint);
    }
}
public boolean onTouch(View v, MotionEvent event) {
    x = event.getX();
    y = event.getY();
    v.invalidate();
    return true;
}
}
4

1 に答える 1