У меня есть ImageButton, и «ЦСИ» рисуем для него это состояние в зависимости от селектора:RotateAnimation и несколькими состояниями Android, кнопка
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/btn_camera_pressed"/>
<item android:state_pressed="false" android:drawable="@drawable/btn_camera_default"/>
</selector>
и введен в эксплуатацию следующим образом:
<ImageButton
android:id="@+id/button_capture"
android:layout_width="72sp"
android:layout_height="72sp"
android:scaleType="fitXY"
android:layout_gravity="center"
android:background="@null"
android:src="@drawable/btn_camera_capture"/>
для того, чтобы он ориентировал правильный путь, так как устройство физически поворачивается, я поворачиваю эту кнопку с помощью анимации:
RotateAnimation newAnim = new RotateAnimation(oldOrientation, newOrientation, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
newAnim.setRepeatCount(0);
newAnim.setDuration(1000);
newAnim.setFillAfter(true);
newAnim.setFillEnabled(true);
Это прекрасно работает на Samsung Galaxy S4. Кнопка выполняет анимацию вращения, затем переходит в новое вращение и нажатие на нее в любое время изменяет изображение в соответствии с селектором состояний, но сохраняет соответствующую ориентацию, благодаря вызовам setFill...
.
На Samsung Ace 3 он также работает отлично по большей части, но нажатие кнопки приводит к тому, что нажатое изображение сразу отображается в ориентации по умолчанию, то есть без вращения, и после того, как оно больше не нажато, остается в этой неправильной ориентации.
Как я могу это решить?
Конечно, я могу взять на себя ответственность за изменение состояния кнопки в коде и обработать все это сам, но мне интересно, что мое ожидание должно быть в первую очередь, и не делаю ли я что-то неправильно.