美文网首页
Android动画2

Android动画2

作者: 简单Liml | 来源:发表于2018-04-24 15:48 被阅读8次

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

在进入的Activity中OnCreate方法中调用setupWindowAnimations方法,代码如下:

    private void setupWindowAnimations() {
        // 首次进入显示的动画
        Visibility visibility = buildEnterTransition(); //褪色
        getWindow().setEnterTransition(visibility);

        // 重新进入的动画。即第二次进入,可以和首次进入不一样。
        // visibility = buildReturnTransition();
        // getWindow().setReenterTransition(visibility);

        // 启动新 Activity ,此页面退出的动画
        visibility = buildReturnTransition();   //滑行
        getWindow().setExitTransition(visibility);

        // 调用 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);
    }

动画设置完成。

相关文章

网友评论

      本文标题:Android动画2

      本文链接:https://www.haomeiwen.com/subject/ciejlftx.html