viewPager的基本使用

viewPager是android扩展包v4中的类,这个类可以使用户左右切换当前的view。

特性:

1.viewPager直接继承了viewGroup类,所以它是一个容器类,可以在其中添加其它的view

2.viewPager类需要一个PagerAdapter适配器类给他提供数据

3.viewPager经常个Fragment一起使用,并且提供了专门的FragmentPagerAdapter和FragmentStatePagerAdapter类

主意:在编写viewpager的使用中,还需要使用两个组件分别是PagerTitleStrip和PagerTabStrip类,PagerTitleStrip类直接集成了ViewGroup类,而PagerTabStrip继承了PagerTitleStrip类,所以这两个类也是容器类

代码XML:

<android.support.v4.view.ViewPager

    android:id="@+id/viewpager"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content">

  <android.support.v4.view.PagerTabStrip

    android:id="@+id/tabstrip"

    android:layout_width="wrap_content"

    android:layut_heigth="50dip"

    android:gravity="center"/>

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

MainActivity.java:

   ArrayList<View> viewContainter = new ArrayList<View>();

    ArrayList<String> titleContainer = new ArrayList<String>();

//取消tab下面的长横线

tabStrip.setDrawFullUnderline(flase);

//设置tab的背景颜色

tabStrip.setBackGroundColor(this.getResources().getColor(R.color.red) );

/设置当前tab页的下划线颜色

tabStrip.setTabIndicatorColor(this.getResources().getColor(R.color.red) );

tabStrip.setTextSpacing(200);

     View view1 = LayoutInflater.from(this).inflate(R.layout.tab1, null);

        View view2 = LayoutInflater.from(this).inflate(R.layout.tab2, null);

        View view3 = LayoutInflater.from(this).inflate(R.layout.tab3, null);

        View view4 = LayoutInflater.from(this).inflate(R.layout.tab4, null);

      //viewpager开始添加view

        viewContainter.add(view1);

        viewContainter.add(view2);

        viewContainter.add(view3);

        viewContainter.add(view4);

      //页签项

        titleContainer.add("网易新闻");

        titleContainer.add("网易体育");

        titleContainer.add("网易财经");

        titleContainer.add("网易女人");

pager.setAdapter(new PagerAdater(){

  //viewpager中的组件数量

    public int getCount(){

      return viewContainter.size();

    }

  //滑动切换时候应该销毁当前组件

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

      ( (viewpager)container ).removeView(viewContainter.get(position) );

    }

  //每次滑动应该生成的组件

    public Object instantiateItem(ViewGroup container,int position){

      ( (viewpager)container ).addView(viewContainter.get(position) );

      return viewContainter.get(position);

    }

  //必重写的方法

    public boolean isViewFromObject(View arg0,Object arg1){

      return arg-==arg1;

    }

    public int getItemPosition(Object object){

      return super.getItemPosition(object);

    }

    public CharSequence getPageTitle(int position){

      return titleContainer.get(position);

    }

} );

//  滑动监听

     pager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override

            public void onPageScrollStateChanged(int arg0) {

                Log.d(TAG, "--------changed:" + arg0);

            }

            @Override

            public void onPageScrolled(int arg0, float arg1, int arg2) {

                Log.d(TAG, "-------scrolled arg0:" + arg0);

                Log.d(TAG, "-------scrolled arg1:" + arg1);

                Log.d(TAG, "-------scrolled arg2:" + arg2);

            }

            @Override

            public void onPageSelected(int arg0) {

                Log.d(TAG, "------selected:" + arg0);

            }

        });

主意:

对于PargerAdapter类,必须要重写4个方法:

public Object instantiateItem(ViewGoup container,int position){};

public void destroyItem(ViewGroup container,int postion ,Object object){};

public int getCount(){};

public boolean isViewFromObject(View arg0,Object arg1){};

效果图:

时间: 2024-08-08 22:04:36

viewPager的基本使用的相关文章

Android 导航条效果实现(六) TabLayout+ViewPager+Fragment

TabLayout 一.继承结构 public class TabLayout extends HorizontalScrollView java.lang.Object ? android.view.View ? android.view.ViewGroup ? android.widget.FrameLayout ? android.widget.HorizontalScrollView ? android.support.design.widget.TabLayout 二.TabLayou

从ViewPager嵌套RecyclerView再嵌套RecyclerView看安卓事件分发机制

这两天伟大的PM下了一个需求,在一个竖滑列表里实现一个横向滑动的列表,没错,又是这种常见但是又经常被具有着强烈责任心和职业操守程序员所嗤之以鼻的效果,废话不多说,先上图: 实现的方式很多,因为项目中已经ViewPager+RV实现基本框架,所以现我也选择再添加一个RV实现相应的效果. 不过在写代码之前,先预估一下这个效果所有的坑. VP是横向滑动的,RV是竖向滑动的,那么现在再添加一个横向滑动的RV,肯定会有滑动冲突,主要表现在 VP和横向滑动RV 的冲突,因为两者都是横向滑动的,肯定有冲突,无

Android学习&mdash;&mdash;ViewPager的使用(一)

这一节介绍使用FragmentPagerAdapter适配器,来加载Fragment对象. 数据源 加载Fragment对象时,数据源自然来自Fragment,与View类似,依旧使用List来存放数据源 fragmentList=new ArrayList<>(); fragmentList.add(new Fragment1());fragmentList.add(new Fragment2());fragmentList.add(new Fragment3());fragmentList

360手机助手(二):侧拉栏drawerLayout+Tab+Viewpager+ListView+Pulltorefresh+imageloder

整个项目的框架在ContentPager,要熟悉这个类. 简介 完成侧拉栏的显示,侧拉首页对应的:首页+应用+游戏这3个 tab,包含的知识点有:请求数据 +pullTofresh + ImageLoader +轮播图 + listView 效果图: 侧拉栏的实现 V4包中的DrawerLayout实现侧拉效果,每个侧拉的item对应一个fragment,点击该item时,先把所有的fragment隐藏 + 文字设置未选中,然后才创建对应的fragment并显示 怎么实现侧拉栏的显示与隐藏? 点

Android自定义控件5--轮播图广告ViewPager基本实现

本文地址:http://www.cnblogs.com/wuyudong/p/5918021.html,转载请注明源地址. 本文开始实现轮播图广告系列,这篇文章首先实现让图片滑动起来(ViewPager),效果如下: 首先实现布局 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools&

android千变万化的ViewPager之三

前面我们学习了怎么了ViewPager添加动画效果,今天我来说下怎么自定义动画效果 首先我们理解系统给我们的那两个类.我这里贴上去一个 1 public class ZoomOutPageTransformer implements PageTransformer { 2 private static final float MIN_SCALE = 0.85f; 3 private static final float MIN_ALPHA = 0.5f; 4 5 public void tran

ViewPager做图片浏览器,加载大量图片OOM的问题修正

1 /** 2 * @author CHQ 3 * @version 1.0 4 * @date 创建时间: 2016/7/26 17:18 5 * @parameter 6 * @return 7 * 图片查看器 8 * //可以查看网络图片 9 * //可以查看本地图片 10 */ 11 public class PhotoScan extends Activity { 12 private PhotoViewPager mViewPager; 13 private List<View>

Android ViewPager使用详解

转载自博客:http://blog.csdn.net/alangdangjia/article/details/9054921/ 这是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api.而viewpager就是其中之一利用它,我们可以做很多事情,从最简单的导航,到页面菜单等等.那如何使用它呢,与LisstView类似,我们也需要一个适配器,他就是PagerAdapter.看一下api的图片, ViewPager的功能就是可以使视图滑动,就像Lanu

viewPager的切换动画

今天在看苏州通的代码,里面有个引导的代码,涉及到viewPager的切换动画: DepthPageTransformer : 1 package com.soyoungboy.guide; 2 import android.annotation.TargetApi; 3 import android.os.Build; 4 import android.support.v4.view.ViewPager; 5 import android.view.View; 6 /** 7 * 8 * @Cl

实现ViewPager多页面滑动效果

 viewPager实现引导页 ViewPager多页面滑动效果 1.Android的左右滑动在实际编程经常能用到,比如查看多张图片,左右 切换tab页. 2.自android 3.0之后的SDK中提供了android-support-V4包用以实现 版本兼容,让老版本系统下的应用通过加入jar包实现扩展,其中有一 个可以实现左右滑动的类ViewPager 今天我们就用ViewPager类来实现引导页的实战案例 实现功能: 1.实现ViewPager多页面滑动效果. 2.下方的显示当前焦点页