2013-09-27 117 views
1

当我目前正与一组的ToggleButtons与多个国家的背景资源和旋转动画工作。一切工作正常,直到一个切换按钮被按下,在这种情况正在发生:安卓:背景绘制不旋转旋转切换按钮

  1. 当按钮被聚焦,它得到重新绘制,但在原来的状态,因为它是在旋转0
  2. 当该按钮被释放,它试图用真实值背景重新绘制新背景,但是由于使用原始切换按钮高度作为宽度,所以图像宽度被裁剪。
  3. 当按钮被再次聚焦,它发生了同样的问题:1)。
  4. 当按钮被释放时,它得到正确重绘。

到目前为止,我现在问题是,原来的drawables不旋转,因此这种行为。我目前的解决方案是为每个旋转使用三个不同的切换按钮(90°,0°,-90°),动画和隐藏当前按钮,然后显示新按钮(使用相同的drawable并使用XML旋转它们标签),但我觉得是一种累赘......

下面是用于90°动画XML:

<rotate 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/linear_interpolator" 
    android:fromDegrees="0" 
    android:toDegrees="90" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:duration="250" 
    android:fillAfter="true" 
    android:fillEnabled="true" > 
</rotate> 

的XML的切换按钮背景:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/record_button_on_pressed" 
    android:state_checked="true" android:state_pressed="true"/> 
<item android:drawable="@drawable/record_button_pressed" android:state_checked="true" 
    android:state_focused="false"/> 
<item android:drawable="@drawable/record_button_on_press" 
    android:state_checked="false" android:state_pressed="true"/> 
<item android:drawable="@drawable/record_button" android:state_checked="false" 
    android:state_focused="false"/> 
</selector> 

而且用于旋转视图的代码:

RotateAnimation rotate = (AnimationUtils.loadAnimation(this, 
    R.anim.rotation90deg); 
startStopRecording.startAnimation(rotate); 

希望你们能帮助我。

+1

一些代码会有帮助。 –

+0

你可以展示你如何做旋转?如果您旋转按钮,那么绘图板也应该旋转。 – Eluvatar

+0

drawable正确旋转,但是当执行焦点或状态更改时,视图显示错误。还在原始问题上添加了相应的代码。 – vicmns

回答

0

看来我用错了方法。 Pre 3.0动画不会为当前视图设置动画,但会创建此视图的位图并为其设置动画;所以最终,转换后的视图只是一个图像,而不是我得到的行为。

反正,通过使用机器人动画师,我能够旋转,并保持旋转的按钮(实际的视图),以便(当被按下时)的按钮被正确地绘制的。一个小缺点是,你必须放弃所有前3.0 Android设备。但是,如果您确实需要支持此版本,则可以使用NineOldAndroid项目。