在同一个标​​签中的活动之间在Android中滑动动画

时间:2012-06-28 07:00:39

标签: android animation android-tabhost sliding

我有ActivityGroup意图开发tabHost。其中一个选项卡包含两个活动。问题是当我在这两个活动之间移动时,它们之间没有滑动。旧活动消失,新的活动自动显示在屏幕上。

我需要实现的是 - 当我从activity2移回活动1时,activity2必须通过向右滑动离开屏幕,新活动(活动1)必须通过滑动进入屏幕从左到右。

当使用intent在活动之间移动时,效果类似于android默认样式!

到目前为止我所取得的成就是:

当我尝试从活动2移动到活动1:活动2(旧的)从屏幕消失时,屏幕变黑并且新活动通过从左向右滑动进入屏幕。如果我设法通过滑动使旧活动离开屏幕,那将是很棒的。

这是我从旧活动回到新活动的代码:

Animation animation = null;

 Window oldWindow = manager.getCurrentActivity().getWindow();

 if(oldWindow != null)
 {
 animation = AnimationUtils.loadAnimation(this, R.anim.right_to_left);    
 View v =oldWindow.getDecorView();
 v.startAnimation(animation);

 }

 manager.destroyActivity(mIdList.get(index), true);
 mIdList.remove(index); index--;

 String lastId = mIdList.get(index);
 lastIntent = manager.getActivity(lastId).getIntent();
 newView = manager.startActivity(lastId, lastIntent).getDecorView();
 newView.startAnimation(AnimationUtils.loadAnimation(this, R.anim.left_to_right));

 if(newView != null)
 {
 setContentView(newView);
 }

One big bug is this: if I remove this line from my code: `setContentView(newView)` I get the desired effect for the old activity. Meaning the old activity leaves the screen by sliding, but the new one never comes in.

如果我把那条线放回来,那么旧的活动就没有任何滑动,只是消失了!!

我使用三星Galaxy进行测试,我尝试使用overridePendingTransition,但它对动画没有任何影响。

以下是我的xml文件:

right_to_left.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"
         android:shareInterpolator="true">
      <translate
       android:fromXDelta="0%" android:toXDelta="100%"
       android:fromYDelta="0%" android:toYDelta="0%"
       android:duration="3500" />
    </set>


 left_to_right.xml


 <set xmlns:android="http://schemas.android.com/apk/res/android"
         android:shareInterpolator="true">
        <translate android:fromXDelta="-100%" android:toXDelta="0%"
          android:fromYDelta="0%" android:toYDelta="0%"
         android:duration="3500"/>
       </set>

谢谢。希望你能帮帮我。

2 个答案:

答案 0 :(得分:1)

您可以使用tabs with ViewPager实现此目的。

同时查看this project。你会找到你需要的东西以及更多。

答案 1 :(得分:0)

使用ViewAnimator

这将允许您自由制作动画