2

目标是绘制 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;
            }
        });        
    }
}

我正在布局上添加球。有用 !

这是 Ball 的 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 的理解。

感谢帮助。

4

0 回答 0