在上培训课的时候,老师一直在将ViewPager是现在的主流,一直想去好好的了解一下,今天去网上学习了一下   ,做一个总结:

  ViewPager其实就是后来谷歌提供给我们的一个组件,就像TextView,Button一样,只不过它是ViewGroup,在使用它前要有v4的包,既然是组件,当然要在xml中定义,

  标签的样式基本是这样:

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

  在xml文件内定义好了以后。接下来就是编辑Activity文件,最重要的就是实现一个适配器PagerAdapter,使用的方法和ListView里面实现BaseAdapter是一样的,下面是代码:

    	PagerAdapter myPagerAdapter=new PagerAdapter(){

			@Override
public int getCount() {
return viewList.size();
} @Override
public boolean isViewFromObject(View arg0, Object arg1) { return arg0==arg1;
} @Override
public void destroyItem(ViewGroup container, int position,
Object object) { container.removeView(viewList.get(position));
} @Override
public CharSequence getPageTitle(int position) { return titleList.get(position);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(viewList.get(position));
return viewList.get(position);
} };

  适配器必须要实现的是四个方法:分别是getCount(),isViewFromObject(View arg0, Object arg1),instantiateItem(ViewGroup container, int position),destroyItem(ViewGroup container, int position,Object object)具体的使用就看文档了。在适配器里面我们还可以定义标签等一些属性。

  下面是全部代码:

  Activity:

package com.example.viewpager;

import java.util.ArrayList;
import java.util.List; import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.PagerTabStrip;
import android.support.v4.view.PagerTitleStrip;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button; public class MainActivity extends Activity {
private ViewPager viewPager=null;
private List<View> viewList=null;
private List<String> titleList=null;
private PagerTabStrip pageTab=null; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setValue();
}
private void setValue(){
viewPager=(ViewPager) findViewById(R.id.viewPager);
pageTab=(PagerTabStrip) findViewById(R.id.pagerTab);
pageTab.setTextSpacing(20);
pageTab.setTabIndicatorColor(Color.YELLOW);
pageTab.setDrawFullUnderline(false);
pageTab.setBackgroundColor(Color.BLUE);
LayoutInflater flater=LayoutInflater.from(this);
View view1=flater.inflate(R.layout.layout_01, null);
View view2=flater.inflate(R.layout.layout_02, null);
View view3=flater.inflate(R.layout.layout_03, null);
viewList=new ArrayList<View>();
viewList.add(view1);
viewList.add(view2);
viewList.add(view3);
titleList=new ArrayList<String>();
titleList.add("标签一");
titleList.add("标签二");
titleList.add("标签三");
PagerAdapter myPagerAdapter=new PagerAdapter(){ @Override
public int getCount() {
return viewList.size();
} @Override
public boolean isViewFromObject(View arg0, Object arg1) { return arg0==arg1;
} @Override
public void destroyItem(ViewGroup container, int position,
Object object) { container.removeView(viewList.get(position));
} @Override
public CharSequence getPageTitle(int position) { return titleList.get(position);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(viewList.get(position));
return viewList.get(position);
} };
viewPager.setAdapter(myPagerAdapter);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }

  xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
>
<android.support.v4.view.PagerTabStrip
android:id="@+id/pagerTab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
/>
</android.support.v4.view.ViewPager> </LinearLayout>

其他三个子页面我就不复制了。

ViewPager的使用的更多相关文章

  1. 踩石行动:ViewPager无限轮播的坑

    2016-6-19 前言 View轮播效果在app中很常见,一想到左右滑动的效果就很容易想到使用ViewPager来实现.对于像我们常说的banner这样的效果,具备无限滑动的功能是可以用ViewPa ...

  2. Android ViewPager打造3D画廊

    本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发. 网上有很多关于使用Gallery来打造3D画廊的博客,但是在关于Gallery的官方说法中表明: This cl ...

  3. Android中Fragment和ViewPager那点事儿(仿微信APP)

    在之前的博文<Android中使用ViewPager实现屏幕页面切换和引导页效果实现>和<Android中Fragment的两种创建方式>以及<Android中Fragm ...

  4. TabLayout + ViewPager

    一.实现思路 1.在build.gradle中添加依赖,例如: compile 'com.android.support:support-v4:23.4.0'compile 'com.android. ...

  5. android内部培训视频_第三节(3)_常用控件(ViewPager、日期时间相关、ListView)

    第三节(2):常用控件之ViewPager.日期时间相关.ListView  一.ViewPager 实例:结合PagerAdapter滑动切换图片  二.日期时间相关:AnalogClock\Dig ...

  6. 简单的ViewPager了解Scroller类

    View滑动是自定义ViewGroup中十分常见的一个功能.Android提供了多种View滑动的方法. layout方法 offsetLeftAndRight()与offsetTopAndBotto ...

  7. PagerSlidingTabStrip介绍及使用,让ViewPager更绚丽

    转载请注明出处http://blog.csdn.net/harryweasley/article/details/42290595,谢谢. 以前一直想着,ViewPager中间的那个横线怎么跟着屏幕的 ...

  8. 详细分析Android viewpager 无限循环滚动图片

    由于最近在忙于项目,就没时间更新博客了,于是趁着周日在房间把最近的在项目中遇到的技术总结下.最近在项目中要做一个在viewpager无限滚动图片的需求,其实百度一下有好多的例子,但是大部分虽然实现了, ...

  9. 一行代码引入 ViewPager 无限循环 + 页码显示

    (出处:http://www.cnblogs.com/linguanh) 前序: 网上的这类 ViewPager 很多,但是很多都不够好,体现在 bug多.对少页面不支持,例如1~2张图片.功能整合不 ...

  10. 使用ViewPager实现自动轮播

    很多APP中都实现了类似引导页的自动轮播,不由得想到昨天的引导页上修改一下代码实现轮播. 其实大体上只需要添加一个线程循环执行就可以了. 项目已同步至:https://github.com/nanch ...

随机推荐

  1. saiku源代码安装

    以前的文章介绍了如何直接安装saiku,http://www.cnblogs.com/liqiu/p/5183894.html .这里面偷懒没有源代码编译,不过这几天也就这么用了. 最近随着使用的深入 ...

  2. 数据人员Sql必会列转行

    列转行上一篇博客已经介绍过了. 下面介绍一下行转列的实现 假设我们有一个数据表: CREATE TABLE row_to_line ( ) NOT NULL, -- 学生名称 yingyu integ ...

  3. 关于Python的web框架

    uliwebhttp://git.oschina.net/limodou/uliweb uliweb 吸取了其他框架的经验,集成了orm.总的来说一般.这个安装后有个exe文件,命令行工具.不绿色.个 ...

  4. Exploring Ionic Lists

    Infinite Lists 由于手机不适合使用多页面显示posts,Infinite Lists成为各种新闻.咨询类app的标配.为了在ionic框架中使用到Infinite Lists,我们首先学 ...

  5. Oracle---.oracle函数

    数值型函数: 绝对值: ABS(x) [功能]返回x的绝对值 [参数]x,数字型表达式 [返回]数字 [示例] select abs(100),abs(-100) from dual;-------- ...

  6. 如何对excel进行列查重

    学习了excel函数:countif.表达式:COUNTIF(数据区域,条件),作用:对数据区域内符合条件单元格计数 具体应用 在“姓名”(列A)后插入一列(列B),在B2单元格输入公式“=IF(CO ...

  7. NVIDIA CuDNN 安装说明

    CuDNN是专门针对Deep Learning框架设计的一套GPU计算加速方案,目前支持的DL库包括Caffe,ConvNet, Torch7等. CuDNN可以在官网免费获得,注册帐号后即可下载.官 ...

  8. 固态硬盘寿命实测让你直观SSD寿命!--转

    近年来,高端笔记本及系列上网本越来越多的采用固态硬盘来提升整机性能,尽管众所周知固态硬盘除 了在正常的使用中带来更快速度的体验外,还具有零噪音.不怕震动.低功耗等优点,但大家对固态硬盘的寿命问题的担忧 ...

  9. vim 图解常用快捷键操作

    图片太大,可以将图片另存后看或者右键点击,选择查看图片.

  10. Hadoop入门进阶课程8--Hive介绍和安装部署

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...