从左到右模式启动活动

时间:2013-05-20 11:14:51

标签: android android-animation

我正面临一个问题。

我有三项活动,我需要以左侧幻灯片开始新活动。

Activity1

Activity2

Activity3

表示enter image description here

当我点击按钮时,新活动不应该像android行为那样直接显示。

我希望新活动来自右侧并显示在当前屏幕上。

任何人都可以为我提供指导。 这是动画或其他任何内容。

5 个答案:

答案 0 :(得分:103)

我将尝试通过以下示例为您提供帮助:

RES /动画/ trans_left_in.xml

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

RES /动画/ trans_left_out.xml

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

RES /动画/ trans_right_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate 
        android:fromXDelta="-100%p" 
        android:toXDelta="0" 
        android:duration="@android:integer/config_longAnimTime"/>
</set>

RES /动画/ trans_right_out.xml

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

的src /活性2

@Override
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_traces);
        overridePendingTransition(R.anim.trans_left_in, R.anim.trans_left_out);
...}

@Override
public void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(R.anim.trans_right_in, R.anim.trans_right_out);
}

答案 1 :(得分:19)

启动活动,然后只应用过渡效果。 有关详细信息,请访问here如何继续操作,有关源代码示例,请访问this。对于任何查询,请随时发表评论。

答案 2 :(得分:11)

更好的方法是创建一个样式如下:

<style name="mytheme" parent="@android:style/Theme.Black">
    <item name="android:windowAnimationStyle">@style/theme</item>
</style>

<style name="theme">
    <item name="android:windowEnterAnimation">@anim/fade_in</item>
    <item name="android:windowExitAnimation">@anim/fade_out</item>
</style>

然后使用android:theme标签将此样式应用于清单文件中的活动。

答案 3 :(得分:5)

在这里,

Intent intent=new Intent(Activity1.this,Activity2.class);
startActivityForResult(intent,0);
getActivity().overridePendingTransition( R.anim.righttoleft, R.anim.stable );

这是动画righttoleft.xml,

<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >

    <translate
          android:duration="500"
          android:fromXDelta="-100%"
          android:fromYDelta="0%"
          android:toXDelta="0%"
          android:toYDelta="0%" />
</set>

和stable.xml

<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
  <alpha android:fromAlpha="1.0" android:toAlpha="1.0" 
      android:interpolator="@android:anim/accelerate_interpolator" 
      android:duration="500"
      android:repeatCount="0"/>
</set>

答案 4 :(得分:3)

在启动SecondActivity之前调用overridePendingTransition。它采用两个int enterAnim, exitAnim作为参数。

  • enterAnim是用于传入活动的动画资源的资源ID。使用0表示无动画
  • exitAnim是用于传出活动的动画资源的资源ID。使用0表示没有动画。