我有一个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);
}
}
有没有人对为什么,更重要的是如何解决它有任何想法?
答案 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;
感谢。