下一篇:《Android ViewPager再探:增加滑动指示条》

ViewPager需要用到适配器PagerAAdapter,以下四个函数需要重写:

instantiateItem(ViewGroup container, int position):创建指定位置的页面视图。适配器增加即将创建的View视图到这里给定的container中。
destroyItem(ViewGroup container, int position, Object object):移除一个给定位置的页面。
getCount():返回当前有效视图的个数。
isViewFromObject(View view, Object object):判断instantiateItem(ViewGroup, int)函数所返回来的Key与一个页面视图是否是代表的同一个视图。

主界面的布局只要加上

<android.support.v4.view.ViewPager />

即可:

activity_main.xml:

 <RelativeLayout 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"
tools:context=".MainActivity"> <android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"/> </RelativeLayout>

决定ViewPager有3个页面,每个页面都要写布局:

以第一个first_page.xml为例:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="这是第一页"
android:textSize="20sp"/> </RelativeLayout>

MainActivity需要在onCreate里对其初始化,并调用适配器:

 package com.example.hopecapital.myapplication;

 import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View; import java.util.ArrayList;
import java.util.List; public class MainActivity extends Activity {
private View first,second,third;
private ViewPager viewPager;//对应 <android.support.v4.view.ViewPager/>控件
private List<View> viewList;//View数组 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); /*初始化*/
viewPager = (ViewPager)findViewById(R.id.viewpager);
LayoutInflater inflater = getLayoutInflater();
first = inflater.inflate(R.layout.first_page,null);
second = inflater.inflate(R.layout.second_page,null);
third = inflater.inflate(R.layout.third_page,null); viewList = new ArrayList<View>();// 将要分页显示的View装入数组中
viewList.add(first);
viewList.add(second);
viewList.add(third); /*适配器部分*/
NewPagerAdapter pagerAdapter = new NewPagerAdapter(viewList);
viewPager.setAdapter(pagerAdapter);
} }

最后也是最重要的,继承自PagerAdapter的适配器:

NewPagerAdapter.java:

 package com.example.hopecapital.myapplication;

 import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup; import java.util.List; /**
* Created by LT on 2015/7/27.
*/
public class NewPagerAdapter extends PagerAdapter{
public List<View> viewList; public NewPagerAdapter(List<View> viewList){
this.viewList = viewList;
} /*下面四个函数是一定要重写的*/
@Override
public boolean isViewFromObject(View arg0,Object arg1){
//判断instantiateItem(ViewGroup, int)函数所返回来的Key与一个页面视图是否是代表的同一个视图(判断key)
// TODO Auto-generated method stub
return arg0 == arg1;
} @Override
public int getCount() {//返回要滑动的VIew的个数
// TODO Auto-generated method stub
return viewList.size();
} @Override
public void destroyItem(ViewGroup container, int position,
Object object) {//从当前container中删除指定位置(position)的View;
// TODO Auto-generated method stub
container.removeView(viewList.get(position));
} @Override
public Object instantiateItem(ViewGroup container, int position) {
//实例化:将当前视图添加到container中,并返回当前View(传送key)
// TODO Auto-generated method stub
container.addView(viewList.get(position)); return viewList.get(position);
}
}

以上,便完成了简单的ViewPager。

Android ViewPager初探:让页面滑动起来的更多相关文章

  1. Android ViewPager+HorizontalScrollView实现标题栏滑动(腾讯新闻)

    1) ViewPager提供了左右滑动切换页面的方法,但是它所提供的标题只是无语,估计没有真正的项目会照搬拿过来;并且它只能一页一页滑,我想直接查看最后一页要滑半天; 2) 看了腾讯新闻客户端感觉体验 ...

  2. Android ViewPager的每个页面的显示与销毁的时机

    大家在用viewPager的时候要创建一个pagerAdapter对象,用于给viewPager设置页面的. viewPager里面有一个container容器. viewPager的容器缓存3个显示 ...

  3. Android ViewPager再探:增加滑动指示条

    上一篇:<Android ViewPager初探:让页面滑动起来> ViewPager只是左右滑动有些丑,也不知道当前位于第几页面. 可以在上方加入滑动指示条,来确定当前位置. 只需要修改 ...

  4. 【Android 界面效果27】利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果

    本文主要介绍如何利用ViewPager.Fragment.PagerTabStrip实现多页面滑动效果.即google play首页.新浪微博消息(at.评论.私信.广播)页面的效果.ViewPage ...

  5. Android 利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果

    本文主要介绍如何利用ViewPager.Fragment.PagerTabStrip实现多页面滑动效果.即google play首页.新浪微博消息(at.评论.私信.广播)页面的效果.ViewPage ...

  6. Android 页面滑动

    1.PagerAdapter适配器     PagerAdapter主要是viewpager的适配器,而viewPager是android.support.v4扩展中新添加的一个强大控件,可以实现控件 ...

  7. Android实战简易教程-第三十四枪(基于ViewPager和FragmentPagerAdapter实现滑动通用Tab)

    上一段时间写过一篇文章<基于ViewPager实现微信页面切换效果> 里面实现了相似微信Tab的页面.可是这样的实现方法有个问题.就是以后全部的代码逻辑都必须在MainActivity中实 ...

  8. ViewPager源码分析——滑动切换页面处理过程

    上周客户反馈Contacts快速滑动界面切换tab有明显卡顿,让优化. 自己验证又没发现卡顿现象,但总得给客户一个技术性的回复,于是看了一下ViewPager源码中处理滑动切换tab的过程. View ...

  9. Android ViewPager实现Tabhost选项卡底部滑块动态滑动过渡

     <Android ViewPager实现Tabhost选项卡底部滑块动态滑动过渡> 之前基于github上的第三方开源控件ViewPagerIndicator的UnderlinePa ...

随机推荐

  1. Servlet生命周期及工作原理

    1 Servlet生命周期Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁. init():在Servlet的生命周期中,仅执行一次init()方 ...

  2. Jsp九大内置对象及其作用域

    本文主要介绍Jsp九大内置对象及其作用域,着重介绍几个常用的,希望对初学者有所帮助. 1 Jsp九大内置对象 2 详细介绍 2.1 request javax.servlet.http.HttpSer ...

  3. 2015年免费的25款 WordPress 网站模板

    2015年 WordPress 插件和主题的数量继续在增长.这一年,我们可以期待WP主题引入一些新的技术,从背景,自适应响应式图像到从背景图片中提取主色. 本文包含25款最近发布的 WordPress ...

  4. CSS盒子模型

    2016-10-22 <css入门经典>第6章 1.每个HTML元素对应于一个显示盒子,但不是所有的元素都显示在屏幕上. 2.HTML元素显示为CSS显示盒子的真正方法称为"可视 ...

  5. [js开源组件开发]loading加载效果

    loading加载效果 由于程序和网络的原因,常常我们需要在交互的时候,给用户一个正在加载中的动画,于是,loading组件横空出世.不需要复杂的代码,也能完成大多数业务,这就是我做组件的原则. 效果 ...

  6. JavaScript获取浏览器高度和宽度值

    IE中:  document.body.clientWidth ==> *DY对象宽度 document.body.clientHeight ==> *DY对象高度 document.do ...

  7. 【原】iOS动态性(二):运行时runtime初探(强制获取并修改私有变量,强制增加及修改私有方法等)

    OC是运行时语言,只有在程序运行时,才会去确定对象的类型,并调用类与对象相应的方法.利用runtime机制让我们可以在程序运行时动态修改类.对象中的所有属性.方法,就算是私有方法以及私有属性都是可以动 ...

  8. overflow 属性

    写在前面的话: 2016年5月4日青年节,作为一名正青春的学生党,开始了博客生涯,励志做个勤奋上进的好青年.幻想着毕业后月薪W+ .走上人生巅峰的职场生活...... 然而 然而 然而 ,自制力有限的 ...

  9. 百度在线编辑器UEditor(v1.3.6) .net环境下详细配置教程之更改图片和附件上传路径

    本文是接上一篇博客,如果有疑问请先阅读上一篇:百度在线编辑器UEditor(v1.3.6) .net环境下详细配置教程 默认UEditor上传图片的路径是,编辑器包目录里面的net目录下 下面就演示如 ...

  10. [javascript svg fill stroke stroke-width rx ry ellipse 属性讲解] svg fill stroke stroke-width ellipse 绘制椭圆属性讲解

    <!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title ...