在两个Android活动之间实现翻转卡片式的过渡效果

10

我正尝试在我的应用程序中实现两个活动之间的翻转卡片过渡效果,参考了这篇文章:http://blog.robert-heim.de/karriere/android-startactivity-rotate-3d-animation-activityswitcher/

但是我不明白上述网站中的ActivitySwitcher.javaRoatate3dAnimation.java是什么。我想在我的应用程序中展示这个过渡效果的两个活动是MainActivity.javaAbout_us.java

请参考我的活动来解释代码。我还在http://developer.android.com/training/animation/cardflip.html上进行了搜索,但无济于事,因为它不适用于活动。

谢谢!


为什么不像开发者网站上最后一个链接那样使用Fragments呢?这样更容易。 - osayilgan
@osayilgan感谢您的快速回复!但是您误解了我的问题。 我想要做的是在两个活动之间显示过渡效果。 - Chinmay Dabke
你在那些课程中没理解的是什么?很明显啊。你只需要将代码分别实现为 Activity1 和 Activity2 作为你的 MainActivity 和 About_us activities。 - osayilgan
@osayilgan 我不理解的是 ActivitySwitcher.javaRotate3dAnimation.java 的使用和实现。 - Chinmay Dabke
可能是活动之间的卡片翻转动画的重复问题。 - Fox
2个回答

25

免责声明:这不是一个真正的3D动画翻转。虽然有些人不同意,但这只是模拟而已。如果你喜欢它,请尝试使用,如果你不喜欢,我道歉。

在我学习编程的早期,我无法正确实现一个合适的3D动画翻转,所以我采用了这种方法,它能够模拟足以满足我的需求,但每个人都有自己的偏好。要完成我所做的事情,首先确保你的项目 res 文件夹下有一个名为 anim 的文件夹。然后你需要创建两个 xml 文件(我把它们称为 from_middle 和 to_middle)。以下是每个文件的代码:

from_middle.xml:

<?xml version="1.0" encoding="utf-8"?>
<scale
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXScale="0.0" android:toXScale="1.0"
    android:pivotX="50%" 
    android:fromYScale="1.0" android:toYScale="1.0"
    android:pivotY="50%"         
    android:duration="500" />

to_middle.xml:

<?xml version="1.0" encoding="utf-8"?>
<scale
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXScale="1.0" android:toXScale="0.0"
    android:pivotX="50%" 
    android:fromYScale="1.0" android:toYScale="1.0"
    android:pivotY="50%"        
    android:duration="500" />
创建完这些后,只需要一行代码即可运行此动画,该代码应在启动下一个活动之后放置:

After those are created, all you need is one line of code to run this animation, which you should be placed after you start your next activity:


Translated text: 创建完这些后,只需要一行代码即可运行此动画,该代码应在启动下一个活动之后放置:

在这些创建之后,您只需添加一行代码即可运行此动画,在启动下一个活动之后放置:

overridePendingTransition(R.anim.from_middle, R.anim.to_middle);

完成!现在运行它!


非常感谢您的努力!我一定会尝试并告诉您结果。 - Chinmay Dabke
奇怪..它对我来说可以运行。发生了什么事?请发布您的代码,以便我可以仔细查看。 - BossWalrus
真的很抱歉!它起作用了!!!那是我的错误,但现在它像魔法一样工作!非常感谢您之前的帮助,对此再次表示诚挚的道歉。 - Chinmay Dabke
顺便问一下,这段代码是你自己写的还是从其他地方找到的? - Chinmay Dabke
9
这不是翻牌动画。翻牌动画是3D的,而这只是使用2D的比例动画来制造一个简单的技巧。它绝对不能达到相同的效果。虽然有些人可能认为它已经足够接近了,但我绝对不同意。 - Gil Moshayof
显示剩余4条评论

2
根据user1672053的回答,您需要在from_middle.xml资源中添加一个起始偏移量,该偏移量等于to_middle.xml动画资源的持续时间。

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