文档章节

ViewPager

 梦想家Peng
发布于 2016/03/04 10:34
字数 616
阅读 14
收藏 0
点赞 1
评论 0

【基本特性】
1. ViewPager是容器类控件
2. ViewPager支持多个layout切换显示
3. ViewPager支持手势左右滑动,并自带左右平移动画
【关于支持jar包】
由于ViewPager是Android 3.0以后推出的新控件,为了兼容当时市场占有比例最高的Android 2.3.3,Google使用了jar包以实现对低版本的兼容。
【在layout中使用ViewPager】
由于ViewPager是v4包中的View类,在layout中使用时,必须显式的添加ViewPager所在的包名,例如<android.support.v4.view.ViewPager />

    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

【使用ViewPager】
1. 创建所需的若干个layout
2. 在Activity中,创建List<View>集合,将各个layout加载为View对象后添加到集合中
3. 初始化ViewPager控件
4. 自定义类继承PagerAdapter,重写抽象方法,并且重写instantiateItem()与destroyItem()方法
5. 为ViewPager配置PagerAdapter

【关于PagerAdapter中的方法】
1. instantiateItem():初始化需要显示的View对象,需要将对象添加到参数container中,并作为该方法的返回值
2. destroyItem():销毁(移除)滑出屏幕的View对象,通过调用参数container的removeView()方法即可实现
3. getCount():返回需要显示的View的数量
4. isViewFromObject():将2个参数使用==对比即可
【PagerTitleStrip和PagerTabStrip】
PagerTitleStrip和PagerTabStrip都可以用于显示ViewPager的标题,在显示标题时,需要重写ViewPager对应的PagerAdapter中的getPageTitle()方法,以确定获取的标题文字。
PagerTitleStrip只会显示文字标题,且不可以点击,PagerTabStrip在显示文字标题时,还会在文字下方显示标题指示器,且标题可以点击用于切换页面显示。
关键字:Tab,Indicator

public class MainActivity extends Activity {
    private ViewPager viewPager;
    private PagerAdapter adapter;
    private List<View> pages;
    private List<CharSequence> pagerTitles;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        pages = new ArrayList<View>();
        pages.add(getLayoutInflater().inflate(R.layout.page01, null));
        pages.add(getLayoutInflater().inflate(R.layout.page02, null));
        pages.add(getLayoutInflater().inflate(R.layout.page03, null));
        pages.add(getLayoutInflater().inflate(R.layout.page04, null));
        
        pagerTitles = new ArrayList<CharSequence>();
        pagerTitles.add("page 01");
        pagerTitles.add("page 02");
        pagerTitles.add("page 03");
        pagerTitles.add("page 04");
        
        viewPager = (ViewPager) findViewById(R.id.viewPager);
        adapter = new InnerPagerAdapter();
        viewPager.setAdapter(adapter);
    }
    
    private class InnerPagerAdapter extends PagerAdapter {
        
        @Override
        public CharSequence getPageTitle(int position) {
            return pagerTitles.get(position);
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            // 1. 根据position将需要显示的内容添加到container
            View view = pages.get(position);
            container.addView(view);
            // 2. 返回需要显示的内容的对象,该对象将被获取用于显示在界面
            return view;
        }
        
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            // 销毁指定position对应的内容
            container.removeView(pages.get(position));
        }

        @Override
        public int getCount() {
            return pages.size();
        }

        @Override
        public boolean isViewFromObject(View view, Object obj) {
            return view == obj;
        }
        
    }

}


© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 33
码字总数 15605
作品 0
深圳

暂无相关文章

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

VS中使用X64汇编

需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地...

simpower ⋅ 今天 ⋅ 0

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

一起读书《深入浅出nodejs》-node模块机制

node 模块机制 前言 说到node,就不免得提到JavaScript。JavaScript自诞生以来,经历了工具类库、组件库、前端框架、前端应用的变迁。通过无数开发人员的努力,JavaScript不断被类聚和抽象,...

小草先森 ⋅ 昨天 ⋅ 0

Java桌球小游戏

其实算不上一个游戏,就是两张图片,不停的重画,改变ball图片的位置。一个左右直线碰撞的,一个有角度碰撞的。 左右直线碰撞 package com.bjsxt.test;import javax.swing.*;import j...

森林之下 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部