2014-05-09 50 views
0

我寫了一個自定義視圖,它在屏幕的中心顯示文本,如下所示。 enter image description here旋轉的Android畫布會導致myRect.contains(X,Y)不起作用

我也做到了這一點,如果你觸摸綠色框,你可以旋轉和縮放文本,如下所示。 enter image description here

繼承人的問題。 每當我旋轉文本並放手,然後嘗試再次旋轉它不能檢測到使用myRect.contains(X,Y)觸摸矩形。 經過一段時間後,我發現旋轉後,觸摸原始綠色框的位置,它允許我再次旋轉。

OnTouchEvent顯然是在繪製正確的位置後正確計算Rects位置。我只能弄清楚爲什麼觸摸座標看起來像是在引用舊的位置。

這是我的onDraw()方法。

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 

    canvas.save(); 
    canvas.rotate((float)mAngle, mBorderRect.centerX(), mBorderRect.centerY()); 
    canvas.drawRect(mBorderRect, mTextBorderPaint); 
    canvas.drawText(mText, mBorderRect.left, mBorderRect.bottom, mTextPaint); 
    canvas.drawRect(mResizeRect, mBGPaint); 
    canvas.restore(); 

} 
+0

嗨,你可以發佈解決方案的例子嗎?目前我的問題與您的相同,但我不太清楚如何首先在觸摸位置上反轉。感謝 – Ricky

回答

1

請記住,您正在旋轉畫布,而不是Rect。爲了實現這個功能,您必須首先在觸摸位置上應用反轉,然後計算myRect.contains(X,Y)。

+0

這是其中的一個「Duh!」時刻對我來說,謝謝。那工作。 –

+0

如果你不介意,可以幫我解決這個問題嗎? http://stackoverflow.com/questions/23801019/rotating-one-of-the-canvas-causes-rect-containsx-y-not-to-work 感謝 – Ricky

+0

@Ricky我從來沒有發現一個完美的解決方案我的問題。我問了另一個問題(下面的鏈接)。在評論中,一個人提出了一些不適合我的工作,因爲我正在做一些非常具體的事情,但它可以爲你工作http://stackoverflow.com/questions/23689111/finding-a-point-after-android-帆布旋轉#評論36406211_23689111 –