一步一步学android控件(之二十八)—— ViewFlipper
来源:互联网 发布:亿图数控系统磨床编程 编辑:程序博客网 时间:2024/05/16 15:02
说到ViewFlipper控件呢就想到ImageSwitcher和TextViewSwitcher(具体使用方法参见一步一步学android控件(之十九)—— ImageSwitcher & TextSwitcher),ImageSwitcher用来在两个ImageView之间切换;TextViewSwitcher用来在两个TextView之间切换;而ViewFlipper呢支持多种类型的多个View之间切换。ViewFlipper和ImageSwitcher、TextViewSwitcher的相同点就是同一时刻都只显示一个View。
ViewFlipper也是ViewAnimator的扩展,其继承结构图如下:
下面通过一个简单的示例展示ViewFlipper的用法:
1、在ViewFlipper中添加不同类型的View。
2、了解ViewFlipper的自动播放模式(类似幻灯片),个自定义用户操作模式(用户向左滑动显示下一个View,向右滑动,显示上一个View)。
效果展示:
贴代码:
1、布局文件widget_view_flipper_layout.xml
<?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" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Button android:id="@+id/auto_fling_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/str_auto_fling" /> <Button android:id="@+id/action_fling_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/str_action_fling" /> </LinearLayout> <ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/view_flipper_show" android:layout_width="match_parent" android:layout_height="match_parent" android:autoStart="true" android:flipInterval="2000" android:layout_gravity="center" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="@string/app_name" android:src="@drawable/fendou" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="@string/app_name" android:src="@drawable/image_run" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="@string/app_name" android:src="@drawable/angry_bird" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="@string/app_name" android:src="@drawable/hello_image_view" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/app_name" android:textAppearance="?android:attr/textAppearanceLarge" /> </ViewFlipper></LinearLayout>
属性android:autoStart="true",表示ViewFlipper自动切换。android:flipInterval="2000",切换的频率——每两秒切换一次View。
<!-- strings for ViewFlipper --> <string name="str_auto_fling">自动切换</string> <string name="str_action_fling">滑动切换</string> <!-- end -->
3、activity——WidgetViewFlipperActivity.java
package com.xy.zt.selfdefinewieget;import android.app.Activity;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnTouchListener;import android.widget.Button;import android.widget.ViewFlipper;public class WidgetViewFlipperActivity extends Activity implements OnClickListener, OnTouchListener { public static final float MIN_GAP = 10; private float downX; private ViewFlipper mFLipper; private Button mAutoFling; private Button mActionFLing; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.widget_view_flipper_layout); init(); } private void init() { mFLipper = (ViewFlipper) findViewById(R.id.view_flipper_show); mAutoFling = (Button) findViewById(R.id.auto_fling_btn); mAutoFling.setOnClickListener(this); mActionFLing = (Button) findViewById(R.id.action_fling_btn); mActionFLing.setOnClickListener(this); } public void onClick(View v) { switch (v.getId()) { case R.id.auto_fling_btn: mFLipper.setAutoStart(true); mFLipper.setFlipInterval(1000); mFLipper.setOnTouchListener(null); mFLipper.startFlipping(); break; case R.id.action_fling_btn: mFLipper.stopFlipping(); mFLipper.setAutoStart(false); mFLipper.setOnTouchListener(this); break; } } public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: downX = event.getX(); break; case MotionEvent.ACTION_UP: float upX = event.getX(); if (upX - downX > MIN_GAP) { mFLipper.showPrevious(); } else if (upX - downX <= MIN_GAP) { mFLipper.showNext(); } break; case MotionEvent.ACTION_CANCEL: return false; } return true; }}在onTouch方法中根据水平滑动距离判断,是向左滑动则显示下一个View,向右滑动则显示上一个View。
4、在ViewData.java中添加如下内容(此部分内容可选):
public static final int VIEW_FLIPPER_ID = SLISING_DRAWER_ID + 1; public static final String VIEW_FLIPPER_NAME = "ViewFlipper";private static final ViewData mViewFlipper = new ViewData(VIEW_FLIPPER_NAME, VIEW_FLIPPER_ID);View_Datas.add(mViewFlipper);WidgetsAdapter的handleItemClicked方法中添加如下内容:
case ViewData.VIEW_FLIPPER_ID: intent.setClass(mContext, WidgetViewFlipperActivity.class); mContext.startActivity(intent); break;
以上就是ViewFlipper的全部内容下一个控件SearchView 。
- 一步一步学android控件(之二十八)—— ViewFlipper
- 一步一步学android控件(之二) —— TextView
- 一步一步学android控件(之十八)—— ToggleButton & Switch
- 一步一步学android控件(之二十)—— ScrollView & HorizontalScrollView
- 一步一步学android控件(之二十一)—— ListView & ExpandableListView
- 一步一步学android控件(之二十二)—— GridView
- 一步一步学android控件(之二十三)—— ProgressBar
- 一步一步学android控件(之二十四)—— RatingBar
- 一步一步学android控件(之二十五)—— SeekBar
- 一步一步学android控件(之二十六)—— QuickContacBadge
- 一步一步学android控件(之二十七)—— SlidingDrawer
- 一步一步学android控件(之二十九)—— SearchView
- 一步一步学android控件(之三) —— Button
- 一步一步学android控件(之四) —— EditText
- 一步一步学android控件(之五) —— AutoCompleteTextView
- 一步一步学android控件(之六) —— MultiAutoCompleteTextView
- 一步一步学android控件(之七) —— Toast
- 一步一步学android控件(之八) —— ImageView
- 大秦帝国-《治秦九论》
- linux_治理阻塞
- Command line option syntax error. Type Command /? for Help.
- 在cygwin中安装软件
- C/C++ Volatile关键词深度剖析
- 一步一步学android控件(之二十八)—— ViewFlipper
- zxing横屏改为竖屏识别,多次扫描,以及存在的摄像拉伸的问题
- c++中const用法总结
- URL的井号
- dede调用指定栏目id {dede:field.content/}
- SQLSERVER 数据库出现大量重复
- 对象的保存和载入
- Ubuntu 命令
- linux下查看系统资源和负载