Android四大元件——Activity跳轉動畫、淡出淡入、滑出滑入、自定義退出進入
阿新 • • 發佈:2019-02-09
Activity跳轉動畫、淡入淡出、滑入滑出、自定義退出進入
前言:
系統中有兩個定義好的Activity跳轉動畫:fade_in、fade_out、slide_in_left、slide_out_right
其中運用到了插值器的知識點,這裡也會簡單的介紹插值器的幾個功能
跳轉動畫用到的是Activity中的overridePendingTransition這個方法進行跳轉
知識點介紹:
overridePendingTransition(int enterAnim,int exitAnim)引數1:進入時的動畫、引數2:退出時的動畫
注:這個方法必須放在startActivity和finish之後才能呼叫
常見的插值器:
LinearInterpolator:線性插值器,勻速運動;
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);
}