標籤:頁面跳轉 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之後的頁面切換動畫