キャンバス内にある画像の境界を取得して、タッチされたかどうかを検出する必要がありますが、キャンバスを回転すると、getbounds() は同じ値を維持します。キャンバスの回転後に正しい値を取得するにはどうすればよいですか?
//CODE ON VIEW CLASS:
canvas.save();
canvas.rotate(rotation, Xpos, Ypos);
secHandImg.setBounds(left,top,right,bottom);
secHandImg.setAntiAlias(true);
secHandImg.draw(canvas);
circleHandImg.setBounds(left,top,right,bottom);
circleHandImg.setAntiAlias(true);
circleHandImg.draw(canvas);
canvas.restore();
//CODE ON FRAGMENT CLASS:
public boolean onTouch(View view, MotionEvent event) {
Rect imageBounds = MyClass.secHandImg.getBounds();
int action = event.getAction();
final int x = (int)event.getX();
final int y = (int)event.getY();
if(action == MotionEvent.ACTION_DOWN) {
if(x >= imageBounds.left && x < (imageBounds.left + imageBounds.width())
&& y >= imageBounds.top && y < (imageBounds.top + imageBounds.height())){
//THIS DON´T WORK IF CANVAS ROTATES
imageBoundsTouch = true;
}
}
ここに私の問題をよりよく説明するための画像があります: