ViewFlipper是Android為我們提供的一個可以簡單的實現,多個View切換的控制項,並且還可以添加動畫效果。
那麼先看看文檔中是怎麼描述ViewFlipper的。
Simple ViewAnimator that will animate between two or more views that have been added to it. Only one child is shown at a time. If requested ,can automatically flip between each child at a regular interval.
大概意思是說ViewFlipper可以實現兩個或多個view之間的切換,前提是這些view已經被加入到ViewFlipper中,同時,一次只能顯示一個view。並且可以加入動畫效果,使效果更炫。
那麼,下面我們就來看下ViewFlipper是怎麼使用的。
其實它的用法非常簡單,我的理解是:其實就是一個可以切換子視圖的layout而已。這樣說,想必大家都應該知道它應該怎麼用了吧。
好了,廢話少說,上代碼:
首先我們建立兩個動畫檔案,在res中建立anim檔案夾,然後建立檔案flipper_in.xml和flipper_out.xml。分別來定義子空間切換時,消失和出現的效果。
flipper_in.xml:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="1000"/> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="1000" /> </set>
flipper_out.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="1000" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="1000" /> </set>
接下來是主視圖的布局檔案main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" ><Button android:id="@+id/previousOne" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="show previous" /><ViewFlipper android:id="@+id/mViewFlipper" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" ></ViewFlipper><Button android:id="@+id/nextOne" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="show next" /></LinearLayout>
這裡只說明一點,我們可以講子視圖直接布局在ViewFlipper中,就像layout的用法一樣。不過,我使用的是在代碼中添加子視圖,見下面的代碼:
package csy.viewFlipperDemo;import android.app.Activity;import android.content.Context;import android.content.DialogInterface;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;import android.widget.ViewFlipper;public class ViewFlipperDemoActivity extends Activity implements OnClickListener{private Context context;private Button nextBtn;private Button preBtn;private ViewFlipper mViewFlipper; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); context = ViewFlipperDemoActivity.this; initViews(); } public void initViews(){ nextBtn = (Button)findViewById(R.id.nextOne); nextBtn.setOnClickListener(this); preBtn = (Button)findViewById(R.id.previousOne); preBtn.setOnClickListener(this); /* * 這裡為mViewFlipper添加子空間,當然也可以在布局檔案中添加 */ mViewFlipper = (ViewFlipper)findViewById(R.id.mViewFlipper); mViewFlipper.addView(createTextViewByText("這是第一個TextView")); mViewFlipper.addView(createTextViewByText("這是第二個TextView")); mViewFlipper.addView(createTextViewByText("這是第三個TextView")); mViewFlipper.addView(createTextViewByText("這是第四個TextView")); /* * 這裡為mViewFlipper設定我們需要的動畫效果 */ mViewFlipper.setInAnimation(context, R.anim.flipper_in); mViewFlipper.setOutAnimation(context, R.anim.flipper_out); } public View createTextViewByText(String text){ TextView view = new TextView(context); view.setText(text); return view; }@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.nextOne:mViewFlipper.showNext();break;case R.id.previousOne:mViewFlipper.showPrevious();break;default:break;}}}
代碼還是比較簡單的,應該沒有什麼大問題吧。這樣我們就簡單的認識了ViewFlipper這個控制項的用法了。
下面是例子的源碼http://download.csdn.net/detail/chenshaoyang0011/4082405