在代码中旋转按钮(或文本内部)

时间:2011-12-21 11:53:19

标签: android button rotation

我必须通过编码随机旋转一个按钮(或里面的文字,它是相同的)。 API级别中是否有任何button.setRotate(x)低于11?

1 个答案:

答案 0 :(得分:4)

好的,看看,答案是:它很复杂。

您可以使用旧动画框架旋转按钮,例如像这样:

Button button = (Button) findViewById(R.id.button);

// rotation from 0 to 90 degrees here
RotateAnimation a = new RotateAnimation(0, 90);
a.setFillAfter(true);
a.setDuration(0);
button.startAnimation(a);

这里的问题是按钮看起来是旋转的,但无法正确点击。触发点击事件的坐标是按钮在旋转之前所在区域的坐标。

由于这不是一个非常好的解决方案,最好的办法是编写一个自定义视图,扩展Button类并在onDraw()中旋转按钮画布。在这种情况下,您还必须覆盖onMeasure()。有关如何做的介绍,请参阅Custom Components

除此之外,您可以尝试拦截按钮父布局中的单击事件,并在按钮当前坐标内发生单击时触发相应的事件。虽然这有点“hacky”。​​