0

縦にたくさんの十字を描くクラスがあります。これを行う方法を学びたいので、次の簡単な例で試してみます。

public class Draw extends View {
    Paint paint = new Paint();

    public Draw(Context context) {
        super(context);
        paint.setColor(Color.BLACK);
    }

    @Override
    public void onDraw(Canvas canvas) {
        int x = 1;
        for(int i = 0; i < 100; i++){

    if (i%2 == 0) x = 2;
    else x=1;
            canvas.drawLine(0, 0 + x*i*20, 20, 20 + x*i*20, paint);
            canvas.drawLine(20, 0 + x*i*20, 0, 20 + x*i*20, paint);
        }
    }

}

スクロールしたい。

MotionEvent.ACTION_MOVE で onTouchEvent を実装しました。

public class DrawActivity extends Activity {

    private Draw dv;
    private float xDistance, yDistance, lastX, lastY;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        dv = new Draw(this);
        setContentView(dv);

    }

    public boolean onTouchEvent(MotionEvent event) {

        int action = MotionEventCompat.getActionMasked(event);

        switch (action) {

        case (MotionEvent.ACTION_MOVE):
            final float curX = event.getX();
            final float curY = event.getY();
            xDistance += Math.abs(curX - lastX);
            yDistance += Math.abs(curY - lastY);
            lastX = curX;
            lastY = curY;
            if (xDistance > yDistance)
                return false;

        default:
            return super.onTouchEvent(event);

        }
    }

}

しかし、それは機能しません。キャンバスをスクロールするにはどうすればよいですか?

4

1 に答える 1

0

View を拡張しているので、その scrollX 値を更新 (またはそれ自体を格納) し、描画の内容をその値で変換する必要があります。

于 2013-07-25T21:15:59.997 に答える