1. 程式人生 > >Android四大元件——Activity跳轉動畫、淡出淡入、滑出滑入、自定義退出進入

Android四大元件——Activity跳轉動畫、淡出淡入、滑出滑入、自定義退出進入

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);
    }