setInAnimation:设置View进入屏幕时的动画。
setOutAnimation:设置View退出屏幕时的动画。
showNext:调用该方法可以显示下一个View。
showPrevious:调用该方法可以来显示上一个View。
setFilpInterval:设置View切换的时间间隔。参数为毫秒。
startFlipping:开始进行View的切换。
stopFlipping:停止View切换。
setAutoStart:设置是否自动开始。如果设置为“true”,当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">
<!-- 旋转是按照顺时针的方向为正方向 -->
<rotate
android:duration="1000"
android:fromDegrees="110"
android:pivotX="50%"
android:pivotY="114%"
android:toDegrees="0" />
</set>
效果
旋转//自动动画
viewflipper.setInAnimation(inAnim);
viewflipper.setOutAnimation(outAnim);
// 设置间隔与启动,自动重播
viewflipper.setAutoStart(true);
/**
*PERSISTENT_NO_CACHE 说明不在内存中保存绘图缓存;
*PERSISTENT_ANIMATION_CACHE 说明只保存动画绘图缓存;
*PERSISTENT_SCROLLING_CACHE 说明只保存滚动效果绘图缓存
*PERSISTENT_ALL_CACHES 说明所有的绘图缓存都应该保存在内存中。
*/
viewflipper.setPersistentDrawingCache(ViewGroup.PERSISTENT_ALL_CACHES);
viewflipper.setFlipInterval(5000);
viewflipper.startFlipping();
网友评论