Android動畫2

在Activity切換時,我們可以添加控件動畫。
首先是動畫啟動方法,代碼如下:

protected  void startActivityWithAnim(Intent i){
        final Pair<View, String>[] pairs = TransitionHelper.createSafeTransitionParticipants(this, true);
        ActivityOptionsCompat transitionActivityOptions = ActivityOptionsCompat.makeSceneTransitionAnimation(this,
                pairs);
        startActivity(i, transitionActivityOptions.toBundle());
    }

在進(jìn)入的Activity中OnCreate方法中調(diào)用setupWindowAnimations方法,代碼如下:

    private void setupWindowAnimations() {
        // 首次進(jìn)入顯示的動畫
        Visibility visibility = buildEnterTransition(); //褪色
        getWindow().setEnterTransition(visibility);

        // 重新進(jìn)入的動畫。即第二次進(jìn)入,可以和首次進(jìn)入不一樣。
        // visibility = buildReturnTransition();
        // getWindow().setReenterTransition(visibility);

        // 啟動新 Activity ,此頁面退出的動畫
        visibility = buildReturnTransition();   //滑行
        getWindow().setExitTransition(visibility);

        // 調(diào)用 finishAfterTransition() 退出時,此頁面退出的動畫
        // visibility = buildReturnTransition();
        // getWindow().setReturnTransition(visibility);
    }

    private Visibility buildEnterTransition() {
        Fade enterTransition = new Fade();
        enterTransition.setDuration(1500);
        // 此視圖將不會受到輸入過渡動畫的影響
        // enterTransition.excludeTarget(R.id.square_red, true);
        return enterTransition;
    }


    private Visibility buildReturnTransition() {
        Visibility visibility = new Slide();
        visibility.setDuration(1000);
        return visibility;
    }

動畫啟動:

findViewById(R.id.btn_transitions).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivityWithAnim(new Intent(MainActivity.this,Transition1.class));
            }
        });

我們還可以使用xml來布局動畫,R.transition.explode:

<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
    <explode
        android:duration="500"
        android:interpolator="@android:interpolator/bounce"/>
</transitionSet>

或者R.transition.slide_from_bottom:

<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
    <slide
        android:duration="500"
        android:slideEdge="bottom"/>
</transitionSet>

在OnCreate中添加setupWindowAnimations方法:

    private void setupWindowAnimations() {
        Transition transition = TransitionInflater.from(this).inflateTransition(R.transition.explode);
        }
        getWindow().setEnterTransition(transition);
    }

動畫設(shè)置完成。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容