2012-05-28 64 views
0

以下代碼是測試應用程序中用於擴展surfaceView的類的實際代碼。Android:SurfaceView停止在第三根手指上繪圖

@Override 
public void onDraw(Canvas canvas) 
{  
    canvas.drawCircle(touched_x, touched_y, 50, myPaint); 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) 
{ 
    touched_x = event.getX(); 
    touched_y = event.getY(); 
    return true;  
} 

它基本上繪製你的手指去的地方。測試它的跟蹤與否。

添加第二根手指,仍然可以追蹤您的第一根手指。但添加一個第三,它只是停止。這不關你從那裏做什麼。除非你刪除所有的手指,並重新開始它不會跟蹤。

現在這是一個問題,因爲它有時認爲一個手指是三個!我可以克服手指之間的這種測試距離,但仍然無法解決問題。

當第三根手指碰撞並凍結跟蹤。它不會調用action.Cancel。

它是至關重要的,我知道第一根手指何時何地被釋放。

但是它認爲最後的事件是MotionEvent.ACTION_MOVE。不是MotionEvent.ACTION_UPMotionEvent.ACTION_CANCEL

目前由於一個手指可以是三個。我的應用程序看起來像是無法加載給定的圖像滾動。

+0

你能證明你的代碼,你處理3手指觸摸? – alaster

+0

我不處理它,我不在乎第三根手指。除了它是停止第一根手指。 – Doomsknight

回答

0

發佈了更多的代碼。我沒有遇到任何問題。也許你忘記在某些情況下使視圖無效或出現錯誤? 有我完整的代碼和它的作品:

float x1 = -100, y1; 

@Override 
protected void onDraw(Canvas canvas) { 
    Paint paint = new Paint(); 
    paint.setAntiAlias(true); 
    canvas.drawColor(Color.WHITE); 

    paint.setColor(Color.RED); 
    canvas.drawCircle(x1, y1, 30, paint); 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    x1 = event.getX(); 
    y1 = event.getY(); 

    invalidate(); 
    return true; 
} 

也許你有你的設備上bugs,但這是不可能的..

+0

即時通訊使用One X.它在三星平板電腦上正常工作。可能是一個錯誤。 – Doomsknight