У меня есть ViewPager, который мне нужно перемещать целиком при нажатии кнопки. Я использую для этого анимацию.
Когда я нажимаю на нее, я перевожу для нее «x». Я использую setFillAfter(true), чтобы сохранить новую позицию. Но когда я меняю страницу ViewPager, она возвращается к исходной x-позиции!
Я видел эту проблему только на Android 4.1, с Android 4.0 проблем нет! Так что это похоже на какую-то регрессию в Android.
Я приложил тестовый проект, в котором я мог воспроизвести проблему без всего остального. Я думаю, что лучше всего, если вы хотите помочь мне понять это, импортировать проект в свой Eclipse и увидеть его своими глазами.
Я также добавил видео, одно на моем HTC One X, где я вижу проблему, а другое на планшете с Android 4.0, где проблемы нет.
Я отчаянно пытался исправить этот уродливый побочный эффект, но пока безуспешно...
(Извините за большие файлы фильмов...)
Видео Android 4.0 без побочных эффектов
Видео Android 4.1 с побочным эффектом
проект, в котором вы можете воспроизвести проблему
Редактировать:
Я добавил следующее:
@Override
public void onAnimationEnd(Animation animation) {
RelativeLayout.LayoutParams lp = (android.widget.RelativeLayout.LayoutParams) myViewPager.getLayoutParams();
if (!i)
lp.setMargins(300,0,0,0);
else
lp.setMargins(0,0,0,0);
myViewPager.setLayoutParams(lp);
}
После этого он остается в правильном положении, но быстро «мерцает», как будто анимация все еще отображается в конце, и когда я меняю поле, он все еще показывает смещение, которое было после анимации. Затем он прыгает в правильное положение.