我目前正在处理一组带有多个状态背景资源和旋转动画的 ToggleButtons 。一切正常,直到按下切换按钮,发生这种情况:
到目前为止,我现在的问题是原始的drawables没有旋转,因此这种行为。我目前的解决方案是为每个旋转使用三个不同的Toggle按钮(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>
ToggleButton背景的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);
希望你们能帮帮我。
答案 0 :(得分:0)
似乎我使用了错误的方法。预3.0动画不会为当前视图设置动画,但会创建此视图的位图并为其设置动画。所以最后,转换后的视图只是一个图像,这是我得到的行为。
无论如何,通过使用android动画师,我能够旋转并保持按钮旋转(实际视图),因此按钮(按下时)被正确绘制。一个小缺点是你必须放弃所有3.0之前的Android设备。但是,如果您确实需要支持此类版本,则可以使用NineOldAndroid 项目。