簡體   English   中英

MotionEvent.ACTION_UP給出錯誤的坐標?

[英]MotionEvent.ACTION_UP gives wrong coordinates?

我正在嘗試使用onTouchEvent()創建自定義視圖。 我畫了一個圓圈,里面MotionEvent.ACTION_UP的的onTouchEvent()監聽器,我改變(X,Y)我想提請到一個新的(X,Y)的圓的坐標,我抬起我的手指坐標。

但是,當我運行該應用程序時,在抬起手指的地方沒有畫圓嗎? 它被拉到遠離我的手指移動的地方。 請查看下面的代碼,讓我知道出了什么問題。

注意:我在Galaxy Note3上測試了我的應用程序“也許對任何事情都有幫助”

代碼

public class CrazyEightsView extends View {

private Paint redPaint;
private int circleX; 
private int circleY;
private float radius;

public CrazyEightsView(Context context) {
    super(context);
    // TODO Auto-generated constructor stub

    redPaint = new Paint();
    redPaint.setAntiAlias(true);
    redPaint.setColor(Color.RED);
    circleX = 100;
    circleY = 100;
    radius = 30;
}

@Override
protected void onDraw(Canvas canvas) {
    // TODO Auto-generated method stub
    super.onDraw(canvas);
    canvas.drawCircle(circleY, circleX, radius, redPaint);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    // TODO Auto-generated method stub
    int eventAction = event.getAction();
    int X = (int) event.getX();
    int Y = (int) event.getY();

    switch (eventAction) {

    case MotionEvent.ACTION_DOWN:
        break;
    case MotionEvent.ACTION_MOVE:
        break;
    case MotionEvent.ACTION_UP:
        circleX = X;
        circleY = Y;
        break;
    }

    invalidate();
    return true;
}

}

只是您的canvas.drawCircle(circleY, circleX, radius, redPaint); 反向嘗試使用canvas.drawCircle(circleX, circleY, radius, redPaint);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM