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;
            }
        });        
    }
}

レイアウトにボールを追加しています。できます !

ボールの 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 アクションで他の多くの組み合わせを試しています...ビューまたはモーションの理解を失った場所を推測できません。

手伝ってくれてありがとう。

4

0 に答える 0