我在进入或退出活动时使用动画,进入活动动画工作正常但退出动画效果不佳。当我按下后退按钮时,我开始退出动画。发生的事情是它首先开始输入当前活动的动画,然后显示最后一个活动,我想在后退按钮上按下简单的退出动画。
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%p"
android:toXDelta="-100%p" >
</translate>
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>
按下操作栏后退按钮
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case R.id.home:
finish();
overridePendingTransition(R.anim.slide_out, R.anim.slide_in);
return true;
default:
break;
}
return super.onOptionsItemSelected(item);
}
答案 0 :(得分:20)
首先在动画文件夹中再创建一个动画,即nothing.xml
<强> nothing.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="0%" >
</translate>
这是 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%"
android:toXDelta="0%" >
</translate>
和 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%" >
</translate>
现在像这样打电话给你的NewActivity
startActivity(new Intent(CurrentActivity.this, NewActivity.class));
overridePendingTransition(R.anim.slide_in, R.anim.nothing);
然后在您的后退按钮上单击“执行此操作”
finish();
overridePendingTransition(R.anim.nothing, R.anim.slide_out);
答案 1 :(得分:5)
<?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%"
android:toXDelta="0%" >
</translate>
<强> 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%" >
</translate>
<强> slide_enter.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%"
android:toXDelta="0%" >
</translate>
<强> slide_exit.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%" >
</translate>
<强>代码强>
Intent i=new Intent(Authentication.this,Login.class);
startActivity(i);
overridePendingTransition(R.anim.slide_in, R.anim.slide_out);
到上一个
finish();
overridePendingTransition(R.anim.slide_enter, R.anim.slide_exit);
答案 2 :(得分:4)
在onBackPressed
中添加动画,它会在点击后退按钮时显示动画。
@Override
public void onBackPressed() {
super.onBackPressed();
overridePendingTransition(R.anim.slide_in, R.anim.slide_out);
}
答案 3 :(得分:1)
我通过覆盖后退按钮行为解决了该问题。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
finish();
return true;
}
答案 4 :(得分:0)
我做过类似的事情并且工作正常,您可以使用startAnimation(your_xml)更改animate(),您还必须使活动背景透明:
<item name="android:windowBackground">@android:color/transparent</item>
此活动将向下滑动,由于透明背景,MainActivity将在滑动时显示。 编辑 - 使用工具栏后退按钮:
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mainlinear.animate()
.translationY(ScUtils.getScreenHeight(getApplicationContext()))
.setDuration(210)
.setInterpolator(new AccelerateInterpolator())
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
ThemeActivity.super.onBackPressed();
overridePendingTransition(0, 0);
}
}).start();
}
});
答案 5 :(得分:0)
要为“活动”输入动画,请使用overridePendingTransition(R.anim.slide_out, R.anim.slide_in);
函数中的onCreate(...)
。
对于退出动画,将相同的调用放在onPause(...)
中。
答案 6 :(得分:0)
我在操作栏中有一个后退/主页按钮,该按钮没有通过覆盖onBackPressed
或finish
来拾取幻灯片动画。因此,我不得不从here添加此代码段。如果使用与上述相同的slide_enter
和slide_exit
:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
switch(id) {
// back button
case android.R.id.home:
finish();
overridePendingTransition(R.anim.slide_enter, R.anim.slide_exit);
return true;
}
return super.onOptionsItemSelected(item);
}
以防有人觉得有用。