我遇到了一个问题。
我有三个活动,我需要用向左滑动的方式启动新的活动。
Activity1
Activity2
Activity3
意思是
当我点击按钮时,新的活动不应该像安卓的行为一样直接显示。
我希望新的活动从右侧进入并在当前屏幕上显示。
有人可以给我提供指导吗? 这是动画还是其他什么。
我遇到了一个问题。
我有三个活动,我需要用向左滑动的方式启动新的活动。
Activity1
Activity2
Activity3
意思是
当我点击按钮时,新的活动不应该像安卓的行为一样直接显示。
我希望新的活动从右侧进入并在当前屏幕上显示。
有人可以给我提供指导吗? 这是动画还是其他什么。
我会尝试帮助您理解以下示例:
res/anim/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/anim/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/anim/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/anim/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/Activity2
@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);
}
super.onBackPressed();
,否则它将无法工作。 - WuerfelDev更好的方法是创建以下样式:
<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标签将此样式应用于您的活动。
这里是:
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>
在启动SecondActivity之前调用overridePendingTransition
方法。它需要两个int类型的参数enterAnim, exitAnim
。
enterAnim
是要使用的进入活动的动画资源的资源ID。使用0表示没有动画。exitAnim
是要使用的退出活动的动画资源的资源ID。使用0表示没有动画。