有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android垂直滚动

我有一门课,用垂直的方式画很多十字架。我想学习如何做到这一点,所以我在这个简单的例子中尝试:

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实现了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);

        }
    }

}

但它不起作用。如何滚动画布


共 (1) 个答案

  1. # 1 楼答案

    因为您正在扩展视图,所以应该更新它的scrollX值(或存储自身),并根据其值转换图形内容