简介ViewFlipper是安卓附带的多页面管理控件,可以自动播放。 与ViewPager不同,ViewPager继承自ViewGroup,每页具有动画效果,与低版本兼容,而ViewFlipper继承了ViewAnimator并进行分层这是Android 4.0中首次引入的新控件。 使用场景与ViewPager基本相同,大多数情况下用于实现进入APP区后的引导页,以及图像传送带显示。
33558 www.Sina.com/setinanimation :在view进入屏幕时使用动画;
setOutAnimation:View退出屏幕时使用动画;
显示下一个:显示视图文件的下一个视图视图;
显示预览:显示视图文件的上一个视图视图;
setflipinterval :视图之间切换的时间间隔;
setAutoStart :是否可以自动播放,true为自动播放,false不自动播放;
开始播放:自动循环切换播放;
停止播放:停止自动切换播放;
http://www.Sina.com/http://www.Sina.com /
静态导入是将每个页面添加到ViewFlipper的中间,如下所示!
view flipper Android : id=' @ id/VF _ help ' Android : layout _ width=' match _ parent ' Android 3360 layout _ heighed right _ in ' Android 3360 out animation=' @ anim/right _ out ' include layout=' @ layout/page _ help _ one '/include
动态导入是用addView方法填充View,如下所示!
mvfhelp=(viewflipper ) findviewbyid ) r.id.VF_help; for(intI=0; i resId.length; I ) ) mvfhelp.addview(getimageview ) resid[I] ); } http://www.Sina.com/http://www.Sina.com /
http://www.Sina.com/http://www.Sina.com /
常用方法
? XML version=' 1.0 ' encoding=' utf-8 '? setxmlns 3360 Android=' http://schemas.Android.com/apk/RES/Android ' translate Android 3360 duration=' 1000 ' Android
? XML version=' 1.0 ' encoding=' utf-8 '? setxmlns 3360 Android=' http://schemas.Android.com/apk/RES/Android ' translate Android 3360 duration=' 1000 ' Android
? XML version=' 1.0 ' encoding=' utf-8 '? linearlayoutxmlns 3360 Android=' http://schemas.Android.com/apk/RES/Android ' Android 3360 layout _ width=' match _
rent" android:orientation="vertical"> <ViewFlipper android:id="@+id/vf_help" android:layout_width="match_parent" android:layout_height="match_parent" android:flipInterval="3000" android:inAnimation="@anim/right_in" android:outAnimation="@anim/right_out"> <include layout="@layout/page_help_one" /> <include layout="@layout/page_help_two" /> <include layout="@layout/page_help_three" /> <include layout="@layout/page_help_four" /> </ViewFlipper></LinearLayout>Java文件调用:
public class MethodOneActivity extends BaseActivity { private ViewFlipper mVfHelp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_method_one); mVfHelp = (ViewFlipper) findViewById(R.id.vf_help); mVfHelp.startFlipping(); }} 支持手势滑动的ViewFlipper - 动态导入切换动画:
1.left_in.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="1000" android:fromXDelta="-100%p" android:toXDelta="0" /></set>2.left_out.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="1000" android:fromXDelta="0" android:toXDelta="100%p" /></set>布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ViewFlipper android:id="@+id/vf_help" android:layout_width="match_parent" android:layout_height="match_parent" /></LinearLayout>Java文件调用:
private void initData() { //实例化SimpleOnGestureListener与GestureDetector对象 mgListener = new MyGestureListener(); mDetector = new GestureDetector(mActivity, mgListener); //动态添加子View for (int i = 0; i < resId.length; i++) { mVfHelp.addView(getImageView(resId[i])); }}/** * @Description 重写onTouchEvent触发MyGestureListener里的方法 */@Overridepublic boolean onTouchEvent(MotionEvent event) { return mDetector.onTouchEvent(event);}/** * @Description 自定义一个View类下的GestureDetector */private class MyGestureListener extends GestureDetector.SimpleOnGestureListener { @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float v, float v1) { if (e1.getX() - e2.getX() > MIN_MOVE) { mVfHelp.setInAnimation(mActivity, R.anim.right_in); mVfHelp.setOutAnimation(mActivity, R.anim.right_out); mVfHelp.showNext(); } else if (e2.getX() - e1.getX() > MIN_MOVE) { mVfHelp.setInAnimation(mActivity, R.anim.left_in); mVfHelp.setOutAnimation(mActivity, R.anim.left_out); mVfHelp.showPrevious(); } return true; }}项目地址 ☞ 传送门