Android5.0之後的頁面切換動畫

來源:互聯網
上載者:User

標籤:頁面跳轉   href   imp   activity   cti   tar   ide   介紹   方式   

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

效果: 

Android5.0之後的頁面切換動畫

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.