我已经编写了一个自定义视图,在屏幕中央显示文本,如下所示。
我也做了这样的话,如果你触摸绿色框,你可以旋转和缩放文本,如下所示。
这是问题所在。 每当我旋转文本然后松开,然后尝试再次旋转它无法检测到使用myRect.contains(X,Y)触摸了rect。 过了一段时间后,我发现它旋转后,触摸原始绿色框所在的位置,它可以让我再次旋转。
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 :(得分:1)
请记住,您正在旋转画布,而不是Rect。要使其工作,您必须首先在触摸位置应用反向旋转,然后计算myRect.contains(X,Y)。