美文网首页
ViewPager的使用

ViewPager的使用

作者: GeekGray | 来源:发表于2018-10-02 22:57 被阅读31次

    阅读原文

    ViewPager的使用

    public int getCount()

    //返回了当前要滑动视图的个数


    instantiateItem (ViewGroup container, int position)

    //这个函数的实现的功能是创建指定位置的页面视图。适配器有责任增加即将创建的View视图到这里给定的container中

    返回值:返回一个代表新增视图页面的Object(Key),这里没必要非要返回视图本身,也可以这个页面的其它容器。

    其实我的理解是可以代表当前页面的任意值,只要你可以与你增加的View一一对应即可,比如position变量也可以做为Key.

    第一:将参数里给定的position的视图,增加到conatiner中,供其创建并显示.

    第二:返回当前position的View做为此视图的Key


    public abstract boolean isViewFromObject (View view, Object object)

    功能:该函数用来判断instantiateItem(ViewGroup, int)函数所返回来的Key与一个页面视图是否是代表的同一个视图(即它俩是否是对应的,对应的表示同一个View)

    返回值:如果对应的是同一个View,返回True,否则返回False。


    public void destroyItem (ViewGroup container, int position, Object object)

    该方法实现的功能是移除一个给定位置的页面。

    适配器有责任从容器中删除这个视图。

    这是为了确保在finishUpdate(viewGroup)返回时视图能够被移除。


    (1)support-v4

    support-v4包算是 Android 最低等级的支持包。

    所谓的 v4,代表着它最低支持 Android1.6(API Level4),这个版本算得上是一个真正意义上比较成熟的 Android版本,更何况现在我们写应用的时候一般都只最低支持到 Android 2.x 系统,对于1.x 的系统基本已经已经完全抛弃了,因此你可已经他作为最基本的系统组件使用。

    在 support-v4包中,它所拥有的类还是很多的,主要包含了对应用组件的支持,用户交互体验的一些工具类,一些数据网络方面的工具类,相面我们将详细来看看它里面具体的一些类。

    1.系统组件部分

    Fragment:

    其实 Fragment 是直到 Android3.0才正式进入 Android 框架体系的,但是 Android 为了低版本的兼容,因此他帮我们在低版本也适配了 Fragment 框架.

    NotificationCompat:

    这是通知栏的一些适配,可以帮助你在低版本的通知栏显示更加丰富的信息

    LocalBroadcastManager:

    这个是用于本地广播通知的,当你希望发送的通知只被本应用接收时,你就应该使用它


    2.用户界面交互部分

    ViewPager

    这个相信我不用怎么说了,他主要用于帮助我们进行界面间的滑动交互

    PagerTitleStrip,PagerTabStrip

    这两个算是 ViewPager 的帮助类吧,他们的作用是进行 Tab 栏的切换辅助显示

    DrawerLayout

    主要用于侧滑栏的实现

    SlidingPaneLayout

    这个类也是用于侧滑栏的实现,和 DrawerLayout 不同的是,

    DrawerLayout 侧滑栏出来的时候,默认是覆盖在当前页面上,

    而 SlidingPaneLayout 则是会将当前页面移走。


    3. Accessbility访问的帮助类

    ExploreByTouchHelper

    帮助自定义 View 实现 Accessibility 的工具类

    AccessbilityEventCompat, AccessbilityNodeInfoCompat, AccessbilityNodeProviderCompat, AccessbilityDelegateCompat,这几个都是用作 Accessibility 功能适配的类


    4.数据访问帮助类

    Loader

    主要用于异步加载数据

    FileProvider

    提供应用间的文件分享功能


    (2)support-v7

    1.Appcompat

    这个包的主要作用是为了在低版本实现 Android 的 Holo 风格界面而引入的,与之类似的有一个开源项目叫做 SherlockActionbar

    2.CardView

    卡片布局是最近在 android5.0发布的时候才引入的新包,在我看来,他主要效果是让应用进行卡片花显示

    3.GridLayout

    网格布局能够帮助你将整个布局按照一格两格的格子形式进行排列

    4.MediaRouter

    这个布局主要是用来支持 GoogleCast 的,主要用于进行设备间的音频,视频交换显示

    5.Palette

    这个包也是最新出来的,他的作用是帮助 Android 实现他的 MaterialDesign,让你的 Actionbar 能够根据界面进行对应的颜色改变

    7.RecyclerView

    这个包同样也是刚出来的,他的作用是替换 ListView 和 GridView,但是可惜是没有实现 OnItemClick 这些接口,你需要自己处理它


    (3)support-v8

    support-v8中其实只有一格特性,就是用来渲染脚本


    (4)support-v13

    这个包的作用主要是为 Android3.2级以上的系统提供更多地 Framgnet 特性支持,使用它的原因在于,android-support-v4包中虽然也对 Fragment 做了支持,由于要兼容低版本,导致他是自行实现的 Fragment 效果,在高版本的 Fragment 的一些特性丢失了,而对于 v13以上的 sdk 版本,我们可以使用更加有效,特性更多的代码


    (5)support-v17

    这个包得主要作用是用于支持电视设备,并为电视设备提供了很多组件

    例如下面的:

    BrowseFragment
    
    DetailFragment
    
    PlaybasckOverlayFragment
     
    SearchFragment
    

    但是原谅我没有做过 Android TV 开发,我也不知道他们的用处是什么,如果真的想要查看,请去官网看看吧

    Android PageAdapter翻译

    Public Methods void   destroyItem(ViewGroup container, int position, Object object)
    移除给定位置的页面
    
    
    void   destroyItem(View container, int position, Object object)
    该方法已废弃.使用 destroyItem(ViewGroup, int, Object)替代
    
    
    void   finishUpdate(View container)
    该方法已废弃.使用 finishUpdate(ViewGroup)代替
    
    
    void   finishUpdate(ViewGroup container)
    当显示界面加载完成时调用该方法
    
    
    abstract int   getCount()
    返回可用的视图数量.
    
    
    int  getItemPosition(Object object)
    如果item位置没有发生改变则返回POSITION_UNCHANGED如果发生了改变则返回POSITION_NONE
    
    
    CharSequence   getPageTitle(int position)
    设置当前位置上的ViewPager的标题
    
    
    float  getPageWidth(int position)
    返回position位置测量的页面的宽高比例范围是(0.f-1.f]
    
    
    Object instantiateItem(ViewGroup container, int position)
    根据指定的位置创建一个page item
    
    
    Object instantiateItem(View container, int position)
    此方法已废弃,使用 instantiateItem(ViewGroup, int)代替
    
    
    abstract boolean isViewFromObject(View view, Object object)
    Determines whether a page View is associated with a specific key object as returned by instantiateItem(ViewGroup, int).
    
    
    void   notifyDataSetChanged()
    调用该方法更新数据
    
    
    void   registerDataSetObserver(DataSetObserver observer)
    注册观察者
    
    
    void   restoreState(Parcelable state, ClassLoader loader)
    恢复与adapter关联的所有页面的状态实例,并且该页面是通过saveState()方法保存的。
    
    
    Parcelable  saveState()
    保存于adapter关联的所有的页面,直到调用restoreState方法时被恢复
    
    void   setPrimaryItem(View container, int position, Object object)
    This method is deprecated. Use setPrimaryItem(ViewGroup, int, Object)
    void   setPrimaryItem(ViewGroup container, int position, Object object)
    Called to inform the adapter of which item is currently considered to be the "primary", that is the one show to the user as the current page.
    
    
    void   startUpdate(View container)
    该方法已废弃.使用 startUpdate(ViewGroup)代替
    
    
    void   startUpdate(ViewGroup container)
    开始调用显示页面
    
    
    void   unregisterDataSetObserver(DataSetObserver observer)
    在回调函数中通过adapter的数据变化注销观察者对象

    相关文章

      网友评论

          本文标题:ViewPager的使用

          本文链接:https://www.haomeiwen.com/subject/oioaoftx.html