-1

Androidアクティビティのxmlレイアウトに線を引きたいのですが、使用したコードは、

public class MainActivity extends Activity {
    DrawView drawView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                 WindowManager.LayoutParams.FLAG_FULLSCREEN);
         requestWindowFeature(Window.FEATURE_NO_TITLE);

         drawView = new DrawView(this);
         setContentView(R.layout.activity_main);    
         drawView.requestFocus();

    }
 }

public class DrawView extends View implements OnTouchListener{
    List<Point> points = new ArrayList<Point>();
    Paint paint = new Paint();

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

        setFocusable(true);
        setFocusableInTouchMode(true);

        this.setOnTouchListener(this);
        paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setStyle(Paint.Style.STROKE);
        paint.setStrokeWidth(4);
        paint.setColor(Color.BLACK);
   }

    @Override
    public void onDraw(Canvas canvas) {
        Path path = new Path();
        boolean first = true;
        for(Point point : points){
            if(first){
                first = false;
                path.moveTo(point.x, point.y);
            }
            else{
                path.lineTo(point.x, point.y);
            }
        }
        canvas.drawPath(path, paint);
    }

    public boolean onTouch(View view, MotionEvent event) {
        if(event.getAction() != MotionEvent.ACTION_UP){
            Point point = new Point();
            point.x = event.getX();
            point.y = event.getY();
            points.add(point);
            invalidate();
            Log.d(TAG, "point: " + point);
            return true;
        }
        return super.onTouchEvent(event);
    }

    class Point {
        float x, y;
        float dx, dy;

        @Override
        public String toString(){
            return x + ", " + y;
        }
    }
}

上記のコードを使用すると、線を引くことができません。XML でビューを使用するか、プログラムで線を描画するのに最適な方法は何ですか?

4

1 に答える 1