ANDROID - 使用每个手指移动x和y坐标创建一个新的Oval类

时间:2012-12-15 01:36:46

标签: java android motionevent

我想这样做:

    • 当我触摸屏幕时,我想为触摸的x,y坐标
    • 创建一个新的椭圆
    • 当我在屏幕上拖动手指时,我想为拖动过程中手指所在的每个x,y坐标创建新的椭圆。
    • 当我触摸并且我的手指在屏幕上(长按)时,我想删除我创建的每个椭圆
  1. 我可以做第一步,但我不知道怎么做2.和3.

    这是我尝试的代码:

    public class BouncingBallView extends View implements OnGestureListener{
    
    private List<Oval> ovals = new ArrayList<Oval>();
    private GestureDetector gestureScanner;
    
    public BouncingBallView(Context context) {
        super(context);
        setBackgroundColor(Color.WHITE);
        gestureScanner = new GestureDetector(this);
    }
    
    @Override
    protected void onDraw(Canvas canvas) {
        for(Oval o: ovals) { //prints every oval
            o.graph(canvas);
        } 
    }
    
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        //1. this works:
        float x = event.getX();
        float y = event.getY();
        Oval oval = new Oval(x, y, this);
        ovals.add(oval);
        invalidate();
        return super.onTouchEvent(event);
    }
    
    @Override
    public boolean onDown(MotionEvent arg0) {
        return false;
    }
    
    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float x,
            float y) {
        //2. this doesn't work:
        Oval oval = new Oval(x, y, this);
        ovals.add(oval);
        invalidate();
        return true;
    }
    
    @Override
    public void onLongPress(MotionEvent arg0) {
        //3. this doesn't work:
        ovals.clear();
        invalidate();
    }
    
    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float x,
            float y) {
        //2. this doesn't work:
        Oval oval = new Oval(x, y, this);
        ovals.add(oval);
        invalidate();
        return true;
    }
    
    @Override
    public void onShowPress(MotionEvent arg0) {
        // TODO Auto-generated method stub
    
    }
    
    @Override
    public boolean onSingleTapUp(MotionEvent arg0) {
        // TODO Auto-generated method stub
        return false;
    }
    

    }

    你可以看到,我不使用“gestureScanner”参数,也许我应该,但我不知道在哪里以及如何!

    请帮帮我! THX!

0 个答案:

没有答案