android点滴(27)之ViewFlipper

java.lang.Object
   ↳android.view.View
    ↳android.view.ViewGroup
     ↳android.widget.FrameLayout
      ↳android.widget.ViewAnimator
       ↳android.widget.ViewFlipper

ViewFlipper 继承自 ViewAnimator ,而 ViewAnimator 继承自 FrameLayout 。FrameLayout的特点是它的子View是叠加在一起的,由此可以知道ViewAnimator以及ViewFlipper都有这个特性。ViewAnimator 会在它的子View 切换时播放动画。

1.ViewAnimator 有两个成员变量。

  mInAnimation,mOutAnimation,顾名思义就是切换时的动画。

1 Animation mInAnimation; 

2 Animation mOutAnimation;

2.当要切换两个View时调用如下两个方法:

 1  /**
 2      * Manually shows the next child.
 3      */
 4     public void showNext() {
 5         setDisplayedChild(mWhichChild + 1);
 6     }
 7 
 8     /**
 9      * Manually shows the previous child.
10      */
11     public void showPrevious() {
12         setDisplayedChild(mWhichChild - 1);

13      }  


使用方法

1.定义动画left_to_right_in , left_to_right_out , right_to_left_in , right_to_left_out ;

1 <?xml version="1.0" encoding="utf-8"?>
2 <set xmlns:android="http://schemas.android.com/apk/res/android" >
3 
4     <translate
5         android:duration="100"
6         android:fromXDelta="-100%p"
7         android:toXDelta="0" />
8 

9 </set> 

2.在布局中使用ViewFlipper,并且添加几个子View;

  1 <ViewFlipper

 2         android:id="@+id/viewFlipper"
 3         android:layout_width="fill_parent"
 4         android:layout_height="fill_parent"
 5         >
 6         
 7         <TextView
 8             android:layout_width="fill_parent"
 9             android:layout_height="fill_parent"
10             android:background="#8000ff"
11             android:text="第一页" />
12         
13         <TextView
14             android:layout_width="fill_parent"
15             android:layout_height="fill_parent"
16             android:background="#808000"
17             android:text="第二页" />
18         
19         <TextView
20             android:layout_width="fill_parent"
21             android:layout_height="fill_parent"
22             android:background="#ffff00"
23             android:text="第三页" />
24         
25         <TextView
26             android:layout_width="fill_parent"
27             android:layout_height="fill_parent"
28             android:background="#008040"
29             android:text="第四页" />
30         
31         <TextView
32             android:layout_width="fill_parent"
33             android:layout_height="fill_parent"
34             android:background="#FF8000"
35             android:text="第五页" />
36     </ViewFlipper>

3.设置in和out动画 ;

 1 private void previousAnimation() {
 2         mViewFlipper.setInAnimation(AnimationUtils.loadAnimation(this,
 3                 R.anim.left_to_right_in));
 4         mViewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this,
 5                 R.anim.left_to_right_out));
 6         mViewFlipper.showPrevious();
 7     }
 8 
 9     private void nextViewAnimation() {
10         mViewFlipper.setInAnimation(AnimationUtils.loadAnimation(this,
11                 R.anim.right_to_left_in));
12         mViewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this,
13                 R.anim.right_to_left_out));
14         mViewFlipper.showNext();

15     } 

效果图 

 

 详细的代码实现方式请查看附件

/Files/cody1988/android/ViewFlipper.zip 

原文地址:https://www.cnblogs.com/cody1988/p/2558758.html