Android ViewPager ViewFilpper ViewFlow

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



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值