Activity跳轉動畫、淡入淡出、滑入滑出、自定義退出進入java
前言:android
系統中有兩個定義好的Activity跳轉動畫:fade_in、fade_out、slide_in_left、slide_out_rightide
其中運用到了插值器的知識點,這裏也會簡單的介紹插值器的幾個功能動畫
跳轉動畫用到的是Activity中的overridePendingTransition這個方法進行跳轉this
知識點介紹:xml
overridePendingTransition(int enterAnim,int exitAnim)參數1:進入時的動畫、參數2:退出時的動畫blog
注:這個方法必須放在startActivity和finish以後才能調用utf-8
常見的插值器:it
LinearInterpolator:線性插值器,勻速運動;io
AccelerateDecelerateInterpolator:加速減速插值器,動畫兩頭慢中間快;
DecelerateInterpolator:減速插值器,動畫愈來愈慢;
fade_in與fade_out:
public void in(View v) { startActivity(new Intent(this, SecondActivity.class)); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); } public void out(View v) { finish(); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); }
slide_in_left與slide_out_right:
public void in(View v) { startActivity(new Intent(this, SecondActivity.class)); overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right); } public void out(View v) { finish(); overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right); }
聰明的你可能會想到,若是咱們兩個合起來,能夠不?答案是能夠的
public void in(View v) { startActivity(new Intent(this, SecondActivity.class)); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right); } public void out(View v) { finish(); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right); }
會思考的你可能會想到,可不能夠咱們本身來作一個咱們的本身的動畫呢?答案是能夠的
在res文件下建立一個anim的文件夾,專門存放咱們的動畫xml文件
anim_in.xml與anim_out.xml:(zAdjustment="top"意思是強制將咱們的執行動畫Activity放在最上層)
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator"> <scale android:fromXScale="2.0" android:toXScale="1.0" android:fromYScale="2.0" android:toYScale="1.0" android:pivotX="50%p" android:pivotY="50%p" android:duration="@android:integer/config_mediumAnimTime" /> </set> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator" android:zAdjustment="top"> <scale android:fromXScale="1.0" android:toXScale=".5" android:fromYScale="1.0" android:toYScale=".5" android:pivotX="50%p" android:pivotY="50%p" android:duration="@android:integer/config_mediumAnimTime" /> <alpha android:fromAlpha="1.0" android:toAlpha="0" android:duration="@android:integer/config_mediumAnimTime"/> </set> public void in(View v) { startActivity(new Intent(this, SecondActivity.class)); overridePendingTransition(R.anim.anim_in,R.anim.anim_out); } public void out(View v) { finish(); overridePendingTransition(R.anim.anim_in,R.anim.anim_out); }