Android5.0之后的页面切换动画

来源:互联网 发布:bid.js.sgcc.com.cn 编辑:程序博客网 时间:2024/04/28 17:00

Android5.0之后给我们开发者剩了好多的事情,为什么这么说呢?还记得刚开始的时候,android里面的所有的动画都要我们开发者自己来写,现在不需要了,因为5.0之后自带了好多的动画,比如:按钮点击的动画、页面切换的动画(在android5.0之前想都不敢想的)。
今天我着重讲一下页面之间的切换,目前5.0系统自带了三种动画方式:Explode(缩放)、Fade(淡入淡出)、Slide(滑动进入)。下面就这三中方式进行介绍一下。
在讲解之前,现对于动画的方式进行介绍一下。通常,我们进行页面跳转到时候,进本都是A到B,然后再从B返回到A。
这里写图片描述
这个过程应该是调用页面A中的 getWindow().setExitTransition(transition);和页面B的getWindow().getEnterTransition(transition);
含义就是:从页面A到页面B首先要先退出页面A,然后在进入页面B,所以要先调用页面A的退出动画,然后再去调用页面B点进入动画。
这里写图片描述
和前面一个的意思相反,从界面B退回到界面A,首页要调用页面B的getWindow().setReturnTransition(transition);然后在调用页面A的getWindow().setReenterTransition(transition);
含义就是:从页面B到页面A是一个返回的过程,所以要先调用页面B点返回方法,然后在调用重新进入页面A的方法。
接着看一下代码:

public class MainActivity extends AppCompatActivity implements View.OnClickListener{    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        findViewById(R.id.btn1).setOnClickListener(this);        findViewById(R.id.btn2).setOnClickListener(this);        findViewById(R.id.btn3).setOnClickListener(this);    }    @Override    public void onClick(View view) {        Transition transition = null;        Intent intent = null;        switch (view.getId()) {            case R.id.btn1:                //缩放                intent = new Intent(MainActivity.this,Main2Activity.class);                transition = new Explode();                break;            case R.id.btn2:                //淡入淡出                intent = new Intent(MainActivity.this,Main3Activity.class);                transition = new Fade();                break;            case R.id.btn3:                //滑动                intent = new Intent(MainActivity.this,Main4Activity.class);                transition = new Slide();                break;        }        transition.setDuration(1000);        getWindow().setEnterTransition(transition);        getWindow().setExitTransition(transition);        getWindow().setReenterTransition(transition);        getWindow().setReturnTransition(transition);        startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(MainActivity.this).toBundle());    }}

缩放界面:

public class Main2Activity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);        getWindow().setAllowEnterTransitionOverlap(true);        getWindow().setAllowReturnTransitionOverlap(true);        Explode explode = new Explode();        explode.setDuration(1000);        getWindow().setEnterTransition(explode);        getWindow().setExitTransition(explode);        setContentView(R.layout.activity_main2);    }    @Override    public void onBackPressed() {        super.onBackPressed();        finishAfterTransition();    }}

淡入淡出:

public class Main3Activity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);        getWindow().setAllowEnterTransitionOverlap(true);        getWindow().setAllowReturnTransitionOverlap(true);        Fade fade = new Fade();        fade.setDuration(1000);        getWindow().setEnterTransition(fade);        getWindow().setReturnTransition(fade);        setContentView(R.layout.activity_main3);    }    @Override    public void onBackPressed() {        super.onBackPressed();        finishAfterTransition();    }}

滑动:

public class Main4Activity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);        getWindow().setAllowEnterTransitionOverlap(true);        getWindow().setAllowReturnTransitionOverlap(true);        Slide slide = new Slide();        slide.setDuration(1000);        getWindow().setReturnTransition(slide);        getWindow().setEnterTransition(slide);        setContentView(R.layout.activity_main4);    }    @Override    public void onBackPressed() {        super.onBackPressed();        finishAfterTransition();    }}

效果:
这里写图片描述

0 0
原创粉丝点击