旋转Android视图

时间:2011-12-05 20:09:15

标签: android animation view canvas rotation

我想旋转API级别为8的Android视图。例如,我想将EditText旋转90度,以便当用户将文本输入左对齐的EditText时,第一个字符位于底部(旋转90度)度)和后续字符向上输入。

我首先尝试使用持续时间为0的动画,但您仍然看到该字段旋转。不幸的是,这是一个非首发。如果我能找到一种完全隐藏动画的方法,这种方法看起来最简单。

然后我尝试在onDraw中旋转画布,这对于正方形视图非常有用,但对于不是正方形的画面则不那么好(我不控制EditText的尺寸)。我尝试了剪切和翻译画布的各种尝试,但是当我可以在文本输入开始时让光标进入视图时,一旦有人开始输入更多内容(通常内容会消失在视图之外),它会做奇怪的事情。 。

我还尝试在onMeasure中制作View square,然后在onDraw中旋转画布,然后将View尺寸放回到后续的onMeasure中。前两个步骤很有效。但是第三步产生了如上所述的类似结果:在用户开始输入更多文本之前,事情看起来还不错,此时字段文本会做出奇怪的事情(通常会消失)。

是否有人能够在没有动画的情况下成功旋转非方形Android视图(例如EditText),API级别为8或更低?

1 个答案:

答案 0 :(得分:0)

我花了相当多的时间尝试在API级别8上完全旋转视图,我认为不可能让它正常工作。仅供参考,它在Android 3.2上无法正常工作,尽管View类中有setRotation(int angle)方法。例如,对于VideoView,这将无法正常工作。

那时P.S似乎我设法让旋转的东西适用于VideoView以外的任何东西。您是否覆盖了onTouchEvent方法?如果你没有你的视图将不会收到触摸事件,因为旋转画布只会使视图绘制旋转但它仍将在旧区域接收触摸事件。您必须手动将旋转矩阵应用于触摸事件坐标,以便将它们偏移到正确的位置。