android学习ViewPager的简单使用
使用ViewPager需要引入android.support.v4.View.ViewPager这样的jar包,谷歌公司为解决当前版本碎片化的问题,提供的兼容的包。主要目的就是解决向下兼容问题。
1,加载显示的页卡
将layout布局转换成view对象
(1)LayoutInflater if= getLayoutInflater().from(this);
if.inflater(resource,root);
(2) View.inflate(context,resource,root);
上面第一种方法在之前练习Fragment的时候用过,
2,配置adapter
(1)PagerAdapter 数据源:List<View>
(2)FragmentPagerAdapter 数据源 List<Fragment>
(3)FragmentStatPagerAdapter 数据源 List<Fragmnet>
ViewPager和之前学习到的List等控件一样是一个集合,都需要设置数据源,
第一步,先创建3个view布局文件,定义ViewPager控件
view1.xml,
view2.xml,
view3.xml
<android.support.v4.view.ViewPager
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/viewPager"
android:layout_gravity="center">
</android.support.v4.view.ViewPager>
第二部,初始化view集合
private List<View> viewList;
private ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewList = new ArrayList<View>();
initView();
} private void initView() {
/*
通过view对象作为viewpager的数据源
*/
viewList.add(View.inflate(getBaseContext(),R.layout.view1,null));
viewList.add(View.inflate(getBaseContext(), R.layout.view2, null));
viewList.add(View.inflate(getBaseContext(),R.layout.view3,null)); }
第三部,自定义Pager适配器
public class MyPagerAdapter extends PagerAdapter { private List<View> viewList;public MyPagerAdapter(List<View> viewList){ this.viewList = viewList;
} //返回的是页卡的数量
@Override
public int getCount() {
return viewList.size();
} //判断当前view对象是否来自于对象 @Override
public boolean isViewFromObject(View view, Object o) {
return view == o;
} //实例化一个页卡
@Override
public Object instantiateItem(ViewGroup container, int position) {
//return super.instantiateItem(container, position);
container.addView(viewList.get(position));
return viewList.get(position);
} //销毁一个页卡
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
//super.destroyItem(container, position, object);
container.removeView(viewList.get(position));
} }
第四部,为viewPager设置数据源
myPagerAdapter = new MyPagerAdapter(viewList,titlePager);
viewPager = (ViewPager)findViewById(R.id.viewPager);
viewPager.setAdapter(myPagerAdapter);
上面四步已经可以显示出viewPager的样子了。PagerAdapter类管理view对象,每次实例化前后三个view,当页面切换的时候,会销毁掉多余的view,创建新的view。
第五步,为viewPager创建标题栏
这一步需要在ViewPager的布局文件中加入android.support.v4.view.PagerTabStrip
<android.support.v4.view.ViewPager
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/viewPager"
android:layout_gravity="center">
<android.support.v4.view.PagerTabStrip
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/titlePager"> </android.support.v4.view.PagerTabStrip> </android.support.v4.view.ViewPager>
并且需要初始化标题集合,在适配器中定义标题列表,同时PagerAdapter需要实现下面的方法。
//设置viewpager的标题
@Override
public CharSequence getPageTitle(int position) {
//return super.getPageTitle(position);
return titlePager.get(position);
以上一个带标题栏的viewPager就有了,这时我们可以设置一些Title的属性使得标题看起来更加美观一些
pagerTabStrip.setBackgroundColor(Color.YELLOW);
pagerTabStrip.setTextColor(Color.RED);
pagerTabStrip.setDrawFullUnderline(false);
pagerTabStrip.setTabIndicatorColor(Color.GREEN);
最后一点需要注意的是,可以为ViewPager添加监听事件OnPageChangeListener。
android学习ViewPager的简单使用的更多相关文章
- android学习ProgressBar的简单使用
android 提供的ProgressBar控件分为两种,一种是不带进度的进度条,一种是带进度的进度条,如果可以计算任务的完成量那么就用带进度条的,如果无法计算任务量,那么就使用不带进度的进度条.Pr ...
- Android学习——ViewPager的使用(三)
这一节来介绍一下在ViewPager中常用到的一个控件,标题栏. 标题栏分为PagerTabStrip和PagerTitleStrip两种,用法类似,这里介绍第一种. 具体做法 在layout文件中的 ...
- Android学习——ViewPager的使用(一)
这一节介绍使用ViewPager,加载ViewPager主要有三部分,数据源.适配器和ViewPager与适配器关联.其中数据源分为View对象和Fragment对象,这一节先来介绍View对象. 数 ...
- android学习9——Handler简单用法
Handler用来发消息和处理消息.典型的用法是更新界面.android不允许在子线程里面更新界面,通常是把Handler传到子线程中,在子线程里通过sendEmptyMessage函数发消息.Han ...
- Android学习——ViewPager的使用(二)
这一节介绍使用FragmentPagerAdapter适配器,来加载Fragment对象. 数据源 加载Fragment对象时,数据源自然来自Fragment,与View类似,依旧使用List来存放数 ...
- [Android学习笔记]Context简单理解
一.Context是什么?上下文对象,可以理解为一个程序的运行的环境,从中可以获取当前程序的资源:getResources,getAssets 二.常见的Context有哪些?Application ...
- Android 学习笔记之如何实现简单相机功能
PS:看来算法和数据结构还是非常有用的,以后每天都练习两道算法题目...这次忘了对代码进行折叠了..导致篇幅过长... 学习内容: 1.Android如何实现相机功能... 2.如何实现音频的录制.. ...
- android学习1:清晰详细android环境搭建,超简单
废话少说,今天是Android学习的开篇的博客,接下来将把自己学习android的各种问题和经历总结一下,其实之前已经自己学过半年了,但是因为开始时刚学的移动端开发还没有概念,当时总结工作又做的不好, ...
- Android学习笔记之图片轮播...
PS:一个bug又折腾了一个下午....哎... 学习内容: 1.Android利用ViewPager和PagerAdapter实现图片轮播... 2.使用反射机制获取Android的资源信息... ...
随机推荐
- Ionic/Angularjs 知识点解析
Ionic/Angularjs 知识点解析 angular-ui-router(状态跳转) state的定义:(在app.js的config下配置) $stateProvider .state('ap ...
- javaWeb第一天
//第一个JavaWeb项目package com.chy.action; import java.io.IOException; import javax.servlet.ServletExcept ...
- h5 新增特性用法---持续更新
1.dataset <div class="box" data-title1="自定义属性" data-age="18" data-m ...
- Chrome浏览器扩展开发系列之五:Page Action类型的Chrome浏览器扩展
Page Action类型的Google Chrome浏览器扩展程序,通常也会有一个图标,但这个图标位于Chrome浏览器的地址栏内右端.而且这个图标并非始终出现,而是当某指定的页面打开时才会出现.也 ...
- IT行业歧视40岁以上人群为找工作还要谎报年龄[转]
IT行业歧视40岁以上人群为找工作还要谎报年龄(这样不好) http://www.aliyun.com/zixun/content/2_6_616161.html [赛迪网讯]4月5日消息,许多40多 ...
- 新篇章之我的java学习之路上
现在我怀着激动和兴奋的心情来写我的第一篇博客,谈谈我自己的学习java的这段历程. 我大学学的软件工程专业,学校开设过c++,数据结构,java,Android等等这类的关于开发的相关课程,但是在学校 ...
- 如何快速轻松学习bootstrap
我以前也是通过看一些视频教程来学的,比如慕课网上的,比如51cto上的那些零基础入门bootstrap什么的,还有一些培训班里流传出来的,感觉晕乎乎的,不知所云. 还是在后面不断使用的过程中慢慢体会到 ...
- 谈谈final, finally, finalize的区别
final 修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为 abstract的,又被声明为final的.将变量或方法声明为fi ...
- 基于腾讯Centos7云服务器搭建SVN版本控制库
基于腾讯Centos7云服务器搭建SVN版本控制库 最近在和小伙伴组队参加一个关于人工智能的比赛,无奈不知道怎么处理好每个人的代码托管问题,于是找到了晚上免费svn托管服务器的服务,但是所给的免费空间 ...
- filezilla里怎么解决中文乱码问题
使用Filezilla client FTP客户端登陆某些FTP站点会出现中文乱码,原因是FTP服务器端编码与filezilla client端编码不一致造成的.解决方法如下:文件-站点管理-选中要登 ...