0

以下は、フレーム内に3つの新しいビューを作成した私のプログラムです。2つの異なるビューをクリックすると、ビューの間に線を引きたいと思います。私はこれを行う方法を理解しようとしています...

    Ball ball1=new Ball(this,100,100,45);
    Ball ball2=new Ball(this,400,100,45);
    Ball ball3=new Ball(this,250,350,45);
    FrameLayout frame1=(FrameLayout) findViewById(R.id.main_view);
    frame1.addView(ball1);
    frame1.addView(ball2);
    frame1.addView(ball3);

      frame1.setOnTouchListener(new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            switch(event.getAction()){
            case MotionEvent.ACTION_DOWN: {
                float x = event.getX();
                float y = event.getY();
                System.out.println("x:"+x+"y:"+y);
                if (x>55 && x<142 && y>55 && y<142) 
                    {
                    System.out.println("working1 "+count);
                    Toast toast = Toast.makeText(getBaseContext(), "Works fine", Toast.LENGTH_SHORT);
                    toast.show();
                }
4

2 に答える 2

0

2つのビューの間に線を引くため。

線を引くビューのクラスを作成します。

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

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

    @Override
    public void onDraw(Canvas canvas) {
            canvas.drawLine(0, 50, 350, 50, paint);
    }

}

ここで、レイアウトにこの行を追加するアクティビティから。このクラスのオブジェクトを作成し、このビューをレイアウトに追加します。

あなたの要件によると、このようにしてみてください。

DrawView drawView; drawView = new DrawView(this);

frame1.addView(ball1);
                            // add that view here
frame1.addView(drawView);
frame1.addView(ball2);
                            // same way here
frame1.addView(ball3);

詳細については、例を参照してください

于 2012-11-29T05:39:22.653 に答える
0

ある条件でonDraw()に線を引き、onTouch()メソッドのアクティビティでこの条件を設定するだけです。次に、条件を変更したビューでinvalidateを呼び出します。

于 2012-11-29T11:59:43.177 に答える