版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sqf251877543/article/details/77566858
1、res目录下新建anim文件夹,在anim文件夹下新建xml文件
slide_right_in.xml(右边进入动画)
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="300"
android:fromXDelta="100.0%p"
android:toXDelta="0.0" />
</set>
slide_right_out.xml(右边退出动画)
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="300"
android:fromXDelta="0.0"
android:toXDelta="100.0%p" />
</set>
2、代码:
//进入动画
public class MainActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//进入动画
ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeCustomAnimation(MainActivity.this,R.anim.slide_right_in,0);
ActivityCompat.startActivity(MainActivity.this, new Intent(MainActivity.this, TestActivity.class), optionsCompat.toBundle());
}
});
}
}
//退出动画
public class TestActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
}
@Override
public void onBackPressed() {
super.onBackPressed();
//退出动画
overridePendingTransition(0, R.anim.slide_right_out);
}
}
也可以把进入、退出动画写在一起
public static void rightEnterAndRightExit(Context context, Intent intent) {
ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeCustomAnimation(context,
R.anim.slide_right_in, R.anim.slide_right_out);
ActivityCompat.startActivity(context, intent, optionsCompat.toBundle());
}
====================================================
从左边进入动画slide_left_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="300"
android:fromXDelta="-100.0%p"
android:toXDelta="0.0" />
</set>
从左边退出动画slide_left_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="300"
android:fromXDelta="0.0"
android:toXDelta="-100.0%p" />
</set>
====================================================
从底下进入动画slide_bottom_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:shareInterpolator="true">
<translate
android:duration="300"
android:fromYDelta="100%p"
android:toYDelta="0.0" />
</set>
从底下退出动画slide_bottom_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:shareInterpolator="true">
<translate
android:duration="300"
android:fromYDelta="0.0"
android:toYDelta="100%p" />
</set>
====================================================
若要对所有Activity的页面跳转设置统一的动画,只需使用MyTheme主题即可:
<!--统一页面跳转动画-->
<style name="ActivitySwitchAnimation">
<item name="android:activityOpenEnterAnimation">@anim/slide_bottom_in</item>
<item name="android:activityOpenExitAnimation">@anim/slide_bottom_out</item>
<item name="android:activityCloseEnterAnimation">@anim/slide_bottom_in</item>
<item name="android:activityCloseExitAnimation">@anim/slide_bottom_out</item>
</style>
<style name="MyTheme" parent="AppTheme">
<item name="android:windowAnimationStyle">@style/ActivitySwitchAnimation</item>
</style>