ImageButton动画未应用于所有状态

时间:2014-09-10 16:05:02

标签: android animation imagebutton

我有一个ImageButton,其图像随设备方向旋转,因此图像/按钮始终是水平的(请注意旋转是手动处理,而不是通过活动生命周期处理。)

这一切都很有效,除非用户按下按钮(状态被按下),90'轮流暂时丢失。

按钮动画;

<rotate
 xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:toDegrees="-90"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="200" android:fillAfter="true">
</rotate>

图像按钮可绘制;

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true"
          android:drawable="@drawable/btn_go_back_pressed" />

    <item android:state_enabled="false"
          android:drawable="@drawable/btn_go_back_disabled" />

    <item android:drawable="@drawable/btn_go_back_normal" />

</selector>

加载动画;

AnimationUtils.loadAnimation(mContext, R.anim.button_rotate90);

然后当设备方向改变时;

    case MessageQue.SET_TO_PORTRAIT:
        inPortrait = true;
        for (View ib : buttonsToAnimate) {
            if (ib instanceof TextView) {
                ib.startAnimation(cntPortraitAnim);
            } else {
                ib.startAnimation(btnPortraitAnim);
            }
        }

有没有人对为什么,更重要的是如何解决它有任何想法?

1 个答案:

答案 0 :(得分:0)

优秀的指针惠特尼 - 这解决了我所拥有的可见性问题。 以上所有代码均已替换为;

case MessageQue.SET_TO_LANDSCAPE:
    for (View ib : buttonsToAnimate) ib.animate().rotation(0).setDuration(200);
    break;
case MessageQue.SET_TO_PORTRAIT:
    for (View ib : buttonsToAnimate) ib.animate().rotation(-90).setDuration(200);
    break;

感谢。