ViewPager:
ViewPager提供了多个界面切换的效果,新效果有如下的特征
1.当前显示一组界面中的其中一个界面
2.用户通过左右滑动界面的时候,当前屏幕显示当前界面跟下一个界面的一部分
3.滑动结束后,当前界面自动跳转到下一界面
ViewPager源于google的补充组件 android-support-v4.jar 位置位于android sdk文件夹下的android-sdks\extras\android\support\下面
将android-support-v4,jar引入到项目中
注意:该包一定要在 android SDK Mannager中额外的下载Extras下的android support package 或者直接下载jar包到项目中引用,引入后可直接当控件使用
配置文件页面文件:
<android.support.v4.view.ViewPager
android:id="@+id/viewPager1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerVertical="true" />
初始化控件:
viewPager1 = (ViewPager) findViewById(R.id.viewPager1);
viewPager1.setAdapter(new PageAdapter(new ArrayList<View>()));
配置适配器页面变化事件:
viewPager1.setOnPageChangeListener(new OnPageChangeListener() {
//页面选择
@Override
public void onPageSelected(int position) {
topText.setText(String.valueOf(position+1)+"/"+String.valueOf(lists.length));
}
@Override
public void onPageScrollStateChanged(int state) {
}
@Override
public void onPageScrolled(int position,
float positionOffset, int positionOffsetPixels) {
}
});
ViewPager使用的适配器基于 PagerAdapter基类,主要实现以下四个方法:
//获取当前窗体界面数
public int getCount()
//初始化position位置的界面
public Object instantiateItem(View collection, int position)
//销毁position位置的界面
public void destroyItem(View collection, int position, Object view)
// 判断是否由对象生成界面
public boolean isViewFromObject(View arg0, Object arg1)
ViewPager 控件的使用中可以将View放在一个ArrayList中,使用ArrayList作为数据的载体,每一项即为每一页,为一个View显示,可以适用大量页面或者变化页面长度的显示
ViewFilpper:
主要用于同一个Activity屏幕的切换,最常见的效果就是一个FrameLayout里面有多个页面,比如一个系统设置页面,一个个性化设置页面
ViewFilpper是系统自带的控件之一,主要是为了两个页面切换设置动画效果ViewFilpper继承自FrameLayout下的ViewAnimator
android.widget.ViewAnimator 类继承自FrameLayout,ViewAnimator的作用是用为FramLayout里面的View的切换提供动画效果,该类有如下几个和动画相关的函数
setInAnimation:
setOutAnimation:
showNext:
showPrevious:
isFilping:
setFilpInteral:
startFilping:
stopFilping:
ViewFilpper的使用方法:
ViewFlow:android - Flow 是Android平台下一个视图切换的效果库
ViewFlow 相当于Android UI中的组件提供视屏滚动的ViewGroup ,使用Adapter进行条目绑定,文档上说,当你的ViewGroup中的子View的数目确定的时候可以使用ViewPager,当ViewGroup的子View数目不确定的时候可以使用ViewFlow
1.使用ViewFlow ,首先在你的Layout里面加入:
<org.taptwo.android.widget.ViewFlow
android:id="@+id/viewflow"
app:sidebuffer="5">
期中app:sidebuffer 属性是ViewFlow自定义的,使用这些属性的时候需要增加下面的Xml定义
xmlns:app="http://schemas.android.com/apk/res/your.application.package.here"
然后在你的Activity中添加如下的代码用于使用ViewFlow:
ViewFlow viewFlow = (ViewFlow) findViewById(R.id.viewflow);
viewFlow.setAdapter(myAdapter);
//设置初始view的位置
//viewFlow.setAdapter(myAdapter, );
//监听view切换事件,简单的需求可不监听
viewFlow.setOnViewSwitchListener(new ViewSwitchListener() {
public void onSwitched(View v, int position) {
/ / Your code here
}
});
当然你可以使用一个ViewIndicator为你在多个View的翻页的时候添加一个指示器,目前该指示器已经实现了两种指示器,一种是圆点形状的指示器FlowIndicator,一种是标题类型的指示器TitleFlowIndicator
1.使用圆点FlowIndicator 先在Layout中定义
<org.taptwo.android.widget.CircleFlowIndicator
android:padding="10dip" android:layout_height="wrap_content"
android:layout_width="wrap_content" android:id="@+id/viewflowindic"
android:background="#00000000"
/>
然后再在在Activity中引用:
CircleFlowIndicator indic = (CircleFlowIndicator)
findViewById(R.id.viewflowindic);
viewFlow.setFlowIndicator(indic);
圆点指示器还支持ActiveColor ,inactiveColor ,activeType(填充或描边),fadeOut(设置圆点自动隐藏的秒数,若为0则不会自动隐藏),
radius(圆点的半径)等等
2.使用标题指示器
标题只是使用之前也需要在Layout中先定义:
<org.taptwo.android.widget.TitleFlowIndicator
2
3 android:id="@+id/viewflowindic"
4
5 android:layout_height="wrap_content"
6
7 android:layout_width="fill_parent"
8
9 app:footerLineHeight="2dp"
10
11 app:footerTriangleHeight="10dp"
12
13 app:textColor="#FFFFFFFF" app:selectedColor="#FFFFC445"
14
15 app:footerColor="#FFFFC445" app:titlePadding="10dp"
16
17 app:textSize="11dp" app:selectedSize="12dp"
18
19 android:layout_marginTop="10dip"
20
21 app:clipPadding="5dp" />
然后再在Activity中调用:
TitleFlowIndicator indicator = (TitleFlowIndicator)
2
3 findViewById(R.id.viewflowindic);
4
5 indicator.setTitleProvider(myTitleProvider);
6
7 viewFlow.setFlowIndicator(indicator);
以上就是ViewFlow库提供的三大组件以及其用法(来自文档),使用的时候需要下载到其代码并放在你的项目中的某个包里,当然你也可以把该组件打包成jar调用
比较:
根据以上nag对是那种实现的使用要的描述,可以看出,VIewPager与ViewFlow也带有圆点和标题的位置提示,二者比较相像,ViewFlilpper使用时候主要是在有限的少数页面的切换中比较合适,并且能够自定义每一个切换的动画,对于一个应用见的画面切换比较合适,类似于ActivityGroup
ViewFlow 犹豫提供远吗,所以在扩展性能上更强,可更具需要自定义定制,比如加入循环播放等动
转载自:http://www.cnblogs.com/xingmeng/archive/2012/08/30/2664013.html