屏幕切換指的是在同一個(gè)Activity內(nèi)屏幕間的切換,ViewFlipper繼承了Framelayout類,ViewAnimator類的作用是為FrameLayout里面的View切換提供動(dòng)畫效果。如下動(dòng)圖:
該類有如下幾個(gè)和動(dòng)畫相關(guān)的函數(shù):
setInAnimation:設(shè)置View進(jìn)入屏幕時(shí)候使用的動(dòng)畫,該函數(shù)有兩個(gè)版本,一個(gè)接受單個(gè)參數(shù),類型為android.view.animation.Animation;一個(gè)接受兩個(gè)參數(shù),類型為Context和int,分別為Context對象和定義Animation的resourceID。
setOutAnimation: 設(shè)置View退出屏幕時(shí)候使用的動(dòng)畫,參數(shù)setInAnimation函數(shù)一樣。
showNext: 調(diào)用該函數(shù)來顯示FrameLayout里面的下一個(gè)View。
showPrevious: 調(diào)用該函數(shù)來顯示FrameLayout里面的上一個(gè)View。
下面通過坐標(biāo)軸的形式為大家演示動(dòng)畫實(shí)現(xiàn)方式:
由上圖可知,以屏幕左下角為數(shù)學(xué)坐標(biāo)軸的原點(diǎn),屏幕下邊框?yàn)閄軸,左邊框?yàn)閅軸,當(dāng)前屏幕顯示為圖二,如果要看圖一,則需要圖一由左至右(相對屏幕而言)進(jìn)入屏幕,圖一X軸初始坐標(biāo)為-100%p,移動(dòng)到屏幕位置時(shí)圖一X軸變?yōu)?(因?yàn)楸敬窝菔緸闄M向滑動(dòng),所以不涉及Y軸);同理圖三要進(jìn)入屏幕,則需由右至左,X軸由100%p變?yōu)?.清楚了坐標(biāo)位置,我們要實(shí)現(xiàn)四種動(dòng)畫效果,就會(huì)很簡單,下面代碼(需建立在res目錄下自建的anim文件夾下)演示四種動(dòng)畫效果: