如何在Android中获得双向动画?

时间:2013-07-20 17:12:42

标签: android transition android-pendingintent

我正在尝试编程android。

现在谈谈我的情况:

我有两个应该被Intents联系的活动。当我从活动1切换(通过单击按钮)时,我制作了动画文件并覆盖了转换,因此活动1向左滑出,活动2从右侧滑入。

如何进行以下操作:当我按下活动2中的按钮时,活动幻灯片将反过来,以便活动2向右滑动,活动从右侧滑入。

我的代码查找动画看起​​来如下:

slide_in.xml

<?xml version="1.0" encoding="utf-8"?>
<translate
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:duration="@android:integer/config_longAnimTime" 
      android:fromXDelta="100%p" 
      android:toXDelta="0%p">
</translate

&GT;

slide_out.xml

<?xml version="1.0" encoding="utf-8"?>
<translate
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:duration="@android:integer/config_longAnimTime" 
      android:fromXDelta="0" 
      android:toXDelta="-100%p">
</translate>

这是我开始活动2的意图代码:

Intent i = new Intent(First.this, Second.class);
                startActivity(i);
                overridePendingTransition(R.anim.slid_in, R.anim.slid_out);

从act.2到act.1,我在另一个意图中需要做些什么?

感谢您帮助我;)

2 个答案:

答案 0 :(得分:0)

制作2个新的XML,只需反转第一个, slide_in

<?xml version="1.0" encoding="utf-8"?>
<translate
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:duration="@android:integer/config_longAnimTime" 
      android:fromXDelta="-100%p" 
      android:toXDelta="0%p">
</translate>

slide_out

<?xml version="1.0" encoding="utf-8"?>
<translate
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:duration="@android:integer/config_longAnimTime" 
      android:fromXDelta="0%p" 
      android:toXDelta="100%p">
</translate>

并在您的活动2中改变对此的意图

Intent i = new Intent(Second.this, First.class);
                startActivity(i);
                overridePendingTransition(R.anim.slide_in, R.anim.slide_out);

答案 1 :(得分:0)

您还可以从Jack Whartonnineoldandroids

查看优秀的图书馆

更易于使用,与Froyo的任何Android版本兼容(您可以使用HoneyComb中添加的新类)等等。

AnimatorSet set = new AnimatorSet();
set.playTogether(
ObjectAnimator.ofFloat(myView, "rotationX", 0, 360),
ObjectAnimator.ofFloat(myView, "rotationY", 0, 180),
ObjectAnimator.ofFloat(myView, "rotation", 0, -90),
ObjectAnimator.ofFloat(myView, "translationX", 0, 90),
ObjectAnimator.ofFloat(myView, "translationY", 0, 90),
ObjectAnimator.ofFloat(myView, "scaleX", 1, 1.5f),
ObjectAnimator.ofFloat(myView, "scaleY", 1, 0.5f),
ObjectAnimator.ofFloat(myView, "alpha", 1, 0.25f, 1));
set.setDuration(5 * 1000).start();