我很难弄清楚如何通过按一下按钮来滑入滑出活动。我想要的是用户按下一个按钮,然后屏幕就会滑动。我想要的方式是第一个活动(有按钮的那个)滑出到左边,而新的第二个活动从右边滑入。
使用下面的代码,当单击按钮时,第一个活动滑出到右侧,而我希望它滑出到左侧。然后,当它完成滑动时,剩下的只是一个瞬间的黑屏,然后第二个活动就会出现,并且不会滑入。
因此,第一个活动滑出了错误的方向,而下一个活动只是出现而不是滑动。我做错了什么?我有一个很难理解的XML文件,所以听到的是下面所有的代码。
第1项活动
@Override
public void onCreate(Bundle savedInstanceState) {
playBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(MainMenu.this, Levels.class);
startActivity(intent);
overridePendingTransition(R.anim.enter_from_right, R.anim.exit_out_left);
}
});
第2项活动
@Override
public void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.levels);
overridePendingTransition(R.anim.enter_from_left, R.anim.exit_out_right);
所以我认为我的一些XML文件可能是不正确的。他们来了。
enter_from_left.xml
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="600"
android:fromXDelta="100%"
android:toXDelta="0%" >
</translate>
</set>
enter_from_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="600"
android:fromXDelta="-100%"
android:toXDelta="0%" >
</translate>
</set>
exit_out_left.xml
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="600"
android:fromXDelta="0%"
android:toXDelta="-100%" >
</translate>
</set>
exit_out_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="600"
android:fromXDelta="0%"
android:toXDelta="100%" >
</translate>
</set>
编辑从第二个活动中删除overridePendingTransition()
,这样第一个活动就滑到了左边,这就是我想要的。但是,当第一个活动滑走时,它仍然只会显示一个黑屏,而不是让第二个活动从右侧滑入。
发布于 2013-12-20 07:46:15
您只需在startActivity()
调用之后立即覆盖动画,而不是覆盖startActivity()
和新的activities onCreate()
中的动画。
您为overridePendingTransition(int enterAnim, int exitAnim)
提供的两个int
对应于两个动画-移除旧的Activity
并添加新的。
对于你的第二个问题,我相信你的fromXDelta设置是错误的,-100%应该完全偏离屏幕的左侧侧,而不是右侧,所以将其更改为100%应该可以修复它。
发布于 2017-10-22 16:16:03
看看我的要点,它工作得很完美:
1.覆盖CommonActivity的startActivity并完成
@Override
public void startActivity(Intent intent) {
super.startActivity(intent);
overridePendingTransition(R.anim.from_right_in, R.anim.from_left_out);
}
@Override
public void finish() {
super.finish();
overridePendingTransition(R.anim.from_left_in, R.anim.from_right_out);
}
2.from_left_in.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="-100%p"
android:toXDelta="0"
android:duration="300"/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />
</set>
3.from_right_in.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="100%p"
android:toXDelta="0" android:interpolator="@android:interpolator/accelerate_decelerate"
android:duration="300"/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />
</set>
4.from_left_out.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0"
android:toXDelta="-100%p"
android:duration="300"/>
<alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="300" />
</set>
5.from_right_out.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0"
android:toXDelta="100%p"
android:duration="300"/>
<alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="300" />
</set>
要点链接:https://gist.github.com/JagieChen/f5cc44bf663f3722bd19097be47ccf9b
发布于 2014-02-02 18:53:20
不仅在enter_from_right动画中有错误,fromXDelta应该是100%而不是- 100%,而且即使在enter_from_left动画中,fromXDelta也应该是-100%而不是100%。
干杯,
https://stackoverflow.com/questions/20690764
复制相似问题