使用ViewPager实现Android屏幕动画是否可行?

13

我需要制作两个屏幕,带有自定义动画,如下所述:

          屏幕1                                    屏幕2
 -----------------------------              ------------------------------
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|       列表1      |  列表2  | ---------> | 列表3 |      列表4         |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
|                   |         |            |        |                     |
 -----------------------------              ------------------------------

  • 用户长按列表1中的一个项目并从左向右滑动。
  • 包含列表1的视图从左到右移动(直到屏幕的末端)并淡出。 显示屏幕2。

是否可以使用 ViewPager 实现此动画? 如果可以,如何实现?

我想通过 ViewPager 实现这一点,因为我已经广泛地使用了 Fragment 并且已经将许多屏幕实现为片段。

如果有人需要关于动画或UI的澄清,请告诉我。

更新:我已经能够在单个活动中实现这两个屏幕,我在这里部分说明了。我可以在单个片段中实现相同的功能。但是,在 ViewPager 中将其实现为不同的 Fragment 仍然会有所帮助。


1
你能给我视图的XML吗,这样我就可以尝试一下了吗?我有一个简单快速的解决方案,但我更愿意试一试。你有4个列表视图吗?我没有完全理解。 - Sherif elKhatib
2个回答

3
ViewPager对我来说似乎有些过度,除非您想要稍后添加更多屏幕或其他要求。对于这些简单的屏幕,您可以使用ActivityAnimations来完成。如果将Screen1和Screen2放在单独的Activity中,则可以使用简单的样式来为Activity设置动画效果。您无需编写代码,只需定义活动的进入和退出样式即可执行它们。
因此,除非您有其他使用ViewPager的原因,否则可以通过以下方式实现相同的效果(未经测试):
Android Manifest.xml
<activity android:name=".Screen1" android:theme="@style/Animated"></activity>
<activity android:name=".Screen2"></activity>

您的 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>

我认为这不会解决问题,因为只有 view1 需要动画效果,而不是整个屏幕。 - 500865
也许我没有完全理解你的问题,你确实需要一个ViewPager。祝你好运! - Entreco

2

我之前成功地在ViewPager中使用了垂直的ListView。那么,你是否可以尝试在ViewPager中使用水平滚动的ListView呢?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接