setInAnimation:設(shè)置View進(jìn)入屏幕時的動畫丹喻。
setOutAnimation:設(shè)置View退出屏幕時的動畫。
showNext:調(diào)用該方法可以顯示下一個View懈玻。
showPrevious:調(diào)用該方法可以來顯示上一個View。
setFilpInterval:設(shè)置View切換的時間間隔。參數(shù)為毫秒付鹿。
startFlipping:開始進(jìn)行View的切換。
stopFlipping:停止View切換蚜迅。
setAutoStart:設(shè)置是否自動開始舵匾。如果設(shè)置為“true”,當(dāng)ViewFlipper顯示的時候View的切換會自動開始谁不。
code
public class MainActivity extends AppCompatActivity {
private ViewFlipper viewFlipper;
private GestureDetectorCompat gestureDetectorCompat;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewFlipper = (ViewFlipper) findViewById(R.id.vf_main);
gestureDetectorCompat = new GestureDetectorCompat(this, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
/**
* flipper.getDisplayedChild() 展示的是滑動之前界面展示的view
*/
if (e1.getX() - e2.getX() > 120.0F) {
/**
* 從右向左滑
*/
viewFlipper.setInAnimation(MainActivity.this, R.anim.left_in);
viewFlipper.setOutAnimation(MainActivity.this, R.anim.left_out);
if (viewFlipper.getDisplayedChild() < 2) {
viewFlipper.showNext();
}
} else if (e1.getX() - e2.getX() < -120.0F) {
viewFlipper.setInAnimation(MainActivity.this, R.anim.right_in);
viewFlipper.setOutAnimation(MainActivity.this, R.anim.right_out);
if (viewFlipper.getDisplayedChild() > 0) {
viewFlipper.showPrevious();
}
}
return false;
}
});
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (gestureDetectorCompat != null) {
return gestureDetectorCompat.onTouchEvent(event);
}
return super.onTouchEvent(event);
}
}
動畫展示
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 旋轉(zhuǎn)是按照順時針的方向為正方向 -->
<rotate
android:duration="1000"
android:fromDegrees="110"
android:pivotX="50%"
android:pivotY="114%"
android:toDegrees="0" />
</set>
效果
//自動動畫
viewflipper.setInAnimation(inAnim);
viewflipper.setOutAnimation(outAnim);
// 設(shè)置間隔與啟動,自動重播
viewflipper.setAutoStart(true);
/**
*PERSISTENT_NO_CACHE 說明不在內(nèi)存中保存繪圖緩存坐梯;
*PERSISTENT_ANIMATION_CACHE 說明只保存動畫繪圖緩存;
*PERSISTENT_SCROLLING_CACHE 說明只保存滾動效果繪圖緩存
*PERSISTENT_ALL_CACHES 說明所有的繪圖緩存都應(yīng)該保存在內(nèi)存中刹帕。
*/
viewflipper.setPersistentDrawingCache(ViewGroup.PERSISTENT_ALL_CACHES);
viewflipper.setFlipInterval(5000);
viewflipper.startFlipping();