viewPager可以支持左右滑动
数据源->适配器->加载数据源
<android.support.v4.view.ViewPager>

一、配器有三种:
  1、PagerAdapter  以List<view>作为数据源(View可以是自己代码写的 也可以通过LayoutInflater来加载xml文件)
     需要实现一个继承此类的类
     重写构造函数(数据源,title),返回页卡数量,是否来自对象,实例化一个页卡,销毁一个页卡,得到页卡title的函数(此适配器是三个页卡为一组管理的,所以存在自动销毁页卡)
     得到页卡title的前提是<android.support.v4.view.ViewPager>标签中有</android.support.v4.view.PagerTabStrip>或者</android.support.v4.view.PagerTitleStrip>子标签

1)、返回页卡数量只需要返回数据源List的size,是否来自对象只需要返回两个参数是否相等(return arg0==arg1)

2)、实例化(注:先看函数的第一个参数类型是不是ViewGroup,如果是View修改为ViewGroup)

通过List以及参数position(第二个参数)获得View,对view做想要的操作(根据自己的情况),将view加入到container中(第一个参数),返回view。

3)、销毁view

container.removeView(List.get(position));

2、 FragmentPagerAdapter 以List<Fragment>作为数据源
    第一步准备数据源,需要多个Fragment(创建多个类(都继承于 FragmentPagerAdapter的类))
    重写onCreatView函数(绑定各自需要的xml,将xml变成view对象并返回)
    
    Activity类应该继承与FragmentActivity
   构造函数 MyFragmentPagerAdapter adapter=new MyFragementPagerAdapter(getSupportFragmentManager())//是为了适配低版本,与之前Fragment开启事务的getFragmentManager()不同,还有Fragment的应用包是带有support的那个, fragList, titleList);

3、。。。

二、创建了适配器,就可以为其添加数据源,再为viewpager添加适配器

viewPager.setAdapter();

到此已经可以使用viewPager左右滑动,并且会展示相应的view页面

三、监听viewPager

常用的监听器:PageChangeListener()

viewPager.setOnPageChangeListener(new OnPageChangeListener() {

@Override
public void onPageSelected(int position) {
//滑动结束后

postion代表滑动结束后的当前页卡的序号(从0开始)
}

@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixe) {
//滑动过程中

可以使用log打印出三个参数值,查找规律
}

@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub

}
});

四、常用的两个函数

viewPager.setCurrentItem(页卡索引值);

viewPager.getCurrentItem()//得到当前页卡索引

五、为切换添加动画(注:只能在3.0以上版本使用)

viewpager.setPageTransformer(true,PageTransformer);

注意PageTransformer是一个接口,需要我们自己去实现,可以单独写一个类,也可以写一个内部类,建议单独写一个类,在这里实例化就好了

如何用PagerTransformer写动画,写一个实现其接口的类,实现下面这个方法

public void transformPage(View view, float position)

position的值还有小于-1与大于1,此时只需要将view的alpha的值设为0就好。

以下是谷歌提供的一个切换动画

public void transformPage(View view, float position) {
        int pageWidth = view.getWidth();

if (position < -1) { // [-Infinity,-1)
            // This page is way off-screen to the left.
            view.setAlpha(0);

} else if (position <= 0) { // [-1,0]
            // Use the default slide transition when moving to the left page
            view.setAlpha(1F);
            view.setTranslationX(0);
            view.setScaleX(1);
            view.setScaleY(1);

} else if (position <= 1) { // (0,1]
            // Fade the page out.
            view.setAlpha(1 - position);

// Counteract the default slide transition
            view.setTranslationX(pageWidth * -position);//-page~0

// Scale the page down (between MIN_SCALE and 1)
            float scaleFactor = MIN_SCALE//0.75~1
                    + (1 - MIN_SCALE) * (1 - Math.abs(position));
            view.setScaleX(scaleFactor);
            view.setScaleY(scaleFactor);

} else { // (1,+Infinity]
            // This page is way off-screen to the right.
            view.setAlpha(0);
        }
    }

写完后再在之前的viewPager那new一个此类就可以实现切换动画了

android学习笔记——viewPager(适配器、常用函数、监听器、切换动画)相关推荐

  1. 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·008【常用函数】

    文章目录 一.常用函数 1.建议 2.MySQL函数概述 3.常用函数分类 一.常用函数 1.建议 使用函数时,建议将MySQL升级为8.0版本 2.MySQL函数概述 单行函数 语法 函数名(参数列 ...

  2. mysql iif函数_MySQL学习笔记七:常用函数

    一.字符串函数 1.1.CONCAT(str1,str2,...) 作用:将传入的字符连接成一个字符串,任何字符与null进行连接结果都是null. SELECT CONCAT(`name`,'-', ...

  3. Android学习笔记-常用的一些源码,防止忘记了

    Android学习笔记-常用的一些源码,防止忘记了... 设置拨打电话 StringdialUri="tell:"+m_currentTelNumble; IntentcallIn ...

  4. Android学习笔记:Android基础知识点(不断更新中)

    1.Android学习笔记:OkHttp 2.Android学习笔记:更新UI的方法(UI线程和非UI线程) 3.Android学习笔记:Volley 4.Android学习笔记:Handler 5. ...

  5. Android学习笔记21:ImageView获取网络图片

    Android平台有3种网络接口可以使用,它们分别是:java.net.*(标准java接口).org.apache(Apache接口)和android.net.*(Android网络接口).本文将使 ...

  6. Android学习笔记:TabHost 和 FragmentTabHost

    2019独角兽企业重金招聘Python工程师标准>>> Android学习笔记:TabHost 和 FragmentTabHostTabHost命名空间:android.widget ...

  7. Android学习笔记:TabHost 和 FragmentTabHost(转)

    Android学习笔记:TabHost 和 FragmentTabHost(转) 转自:http://www.cnblogs.com/asion/p/3339313.html 作者:Asion Tan ...

  8. Android学习笔记09:Paint及Canvas的简单应用

    2019独角兽企业重金招聘Python工程师标准>>> Android学习笔记09:Paint及Canvas的简单应用 在Android中需要通过graphics类来显示2D图形. ...

  9. Android学习笔记 56. TabLayout 选项卡布局

    Android学习笔记 Android基础开发--布局 文章目录 Android学习笔记 Android基础开发--布局 56. TabLayout 选项卡布局 56.1 简介 56.2 TabIte ...

最新文章

  1. pe如何自动加载外置工具_如何自动加载网站的深色模式?
  2. Java web—Servlet过滤器(Filter)
  3. [转]详解HTTP包
  4. POJ3579 Median【二分法+中位数】
  5. php mysql sum用法_mysql怎么使用sum()求id字段的和?
  6. Java多线程编程 深入详解
  7. Office Word 之画肘形箭头
  8. SRE 到底是干什么的??
  9. word-embedding(skip-gram)(pytorch入门3)
  10. Win10 文件夹删不掉,提示需要来自XXX的权限才能对此文件夹进行更改
  11. VM技术(一)NES模拟器VM综述
  12. HTTP 错误 500.19 代码 0x8007000d 解决方案 for win7_64 asp.net core IIS Web Core
  13. org.apache.felix.http.jetty %bundles.pluginTitle: Cannot start (org.osgi.framework.BundleException:
  14. 基于RFM的用户画像分析
  15. 厨神之路八--煎炸类
  16. input框禁止输入的四种方式
  17. Android获取NFC标签和NFC十进制16进制ID
  18. linux 进程调度cfg,选择Linux I / O调度程序
  19. thinksns java_社交APP系统ThinkSNS+技术概要
  20. 机器学习元老之间的关系图

热门文章

  1. 屏幕尺寸、密度,分辨率查询网站(手机、平板、显示器)
  2. CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+Toolbar组合悬浮置顶的效果
  3. 3704对象关闭时_实时错误‘3704’:对象关闭时,不允许操作。
  4. Vue2.0版英雄联盟助手,我的第一个小开源项目
  5. 搜索引擎迈进四 Google网站管理员工具
  6. 数据挖掘分析相关面试题(亲身经历),持续更新中(最新一次为20210209)
  7. Python框架模型搭建
  8. MIPS指令集:内嵌汇编asm语法介绍
  9. MessageBeep函数设置,MB_ICONQUESTION问题声音
  10. C# WinfForm 控件之dev电子表格 SpreadSheet