Возможно ли сделать эту анимацию экрана Android с помощью ViewPager? - PullRequest
13 голосов
/ 03 ноября 2011

Мне нужно сделать 2 экрана с пользовательской анимацией, как описано ниже:


          Screen 1                                    Screen 2
 -----------------------------              ------------------------------
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|       List 1      |  List2  | ---------> | List 3 |      List 4         |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
 -----------------------------              ------------------------------

  • Пользователь делает длинное касание элемента в Списке 1 и скользит слева направо.
  • Вид, содержащий Список 1, перемещается слева направо (до конца экрана) и исчезает. Отображается экран 2.

Можно ли сделать эту анимацию, используя ViewPager? Если да, то как?

Я бы хотел сделать это через ViewPager, потому что я довольно широко использую Fragment, и я уже реализовал множество экранов в виде фрагментов.

Если кому-то нужны разъяснения по поводу анимации или интерфейса, пожалуйста, дайте мне знать.

Обновление : мне удалось реализовать оба экрана в одном упражнении, которое я частично объяснил здесь . Я могу реализовать то же самое в одном фрагменте. Но возможность реализовать как Fragment в ViewPager все равно поможет.

Ответы [ 2 ]

3 голосов
/ 15 ноября 2011

ViewPager тоже мне кажется излишним.Если вы не хотите добавить больше экранов позже, или какое-то другое требование.Для этих простых экранов вы можете сделать это с ActivityAnimations.Если вы поместите Screen1 и Screen2 в отдельное действие, вы можете анимировать действия, используя простые стили.Вам не нужно кодировать, просто определите стили входа и выхода для ваших действий, и они будут выполнены.

Таким образом, если у вас нет другой причины для использования ViewPager, вы можете добиться того же эффекта с помощью следующего (не проверено):

Android Manifest.xml

<activity android:name=".Screen1" android:theme="@style/Animated"></activity>
<activity android:name=".Screen2"></activity>

Your themes.xml

<resources>
    <style name="Animated">
        <item name="android:windowAnimationStyle">@style/Animation.ScreenAnimation</item>
    </style>
</resources>

Наконец, в вашем styles.xml

<style name="Animation"></style>
<style name="Animation.ScreenAnimation" parent="android:style/Animation.Activity">
    <item name="android:activityOpenEnterAnimation">@anim/slide_in_right</item>
    <item name="android:activityOpenExitAnimation">@anim/slide_out_left</item>
    <item name="android:activityCloseEnterAnimation">@anim/slide_out_left</item>
    <item name="android:activityCloseExitAnimation">@anim/slide_in_right</item>
</style>
2 голосов
/ 17 ноября 2011

Я успешно использовал вертикальные ListViews внутри ViewPager прежде.Как насчет попытки просмотра списка с горизонтальной прокруткой внутри вашего ViewPager?

...