Android:使用Touch移动2个或更多球

时间:2012-10-25 16:31:27

标签: android touch move

目标是绘制2点或更多点并在这些点之间划分线。然后,我们可以通过触摸移动它们。

无法在FrameLayout或其他地方通过触摸,2球或更多球移动。

这是我的java文件。

public class GraphActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_graph);

        FrameLayout main = (FrameLayout)findViewById(R.id.main_view);

        main.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent e) {
                if (e.getAction() == MotionEvent.ACTION_DOWN) {
                    float x = e.getX();
                    float y = e.getY();
                    ((FrameLayout)v).addView(
                        new Ball(((FrameLayout)v).getContext(),x,y,20));
                }
                return false;
            }
        });        
    }
}

我在布局上添加了球。它有效!

以下是球的java。

public class Ball extends View {
    private float x;
    private float y;
    private int r;
    private Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

    public Ball(Context context, float x, float y, int r) {
        super(context);
        mPaint.setColor(0xFFFF0000);
        this.x = x;
        this.y = y;
        this.r = r;

        this.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent e) {
                if (e.getAction() == MotionEvent.ACTION_MOVE) {
                    v.setX(e.getX());
                    v.setY(e.getY());
                    return true;
                }
                return false;
            }
        });        
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawCircle(x, y, r, mPaint);
    }    
}

在MotionEvent动作上尝试许多其他组合...无法猜测我在哪里理解了View或Motion。

感谢您的帮助。

0 个答案:

没有答案