1、在android.support.V4.view包下

2、父类:ViewGroup

3、ViewPager概述:

1) 当前显示页卡组中的一个对象

2) 能够实现左右平滑的效果进行切换

3) 需要设置适配器:PagerAdapter

至少需要实现4个方法:

① getCount():返回显示的页卡总数

② instantiateItem(ViewGroup container, int position)初始化当前position位置的页卡,每次最多能初始化3个页卡的内容。返回一个Object对象(键)

③ isViewFromObject(View agr0,Object arg1):确定是否一个带有特殊键对象的页卡视图。和instantiateItem(ViewGroup container, int position)返回值相关联

④ deStroyItem(ViewGroup container,int position,Object object){ container.removeView(ViewList..get(position))};

ViewList——装载每个页卡视图的集合

移除position位置的View

4、ViewPager的使用

a. 在布局文件中设置ViewPager的属性   <包名.类名>

b. 加载要显示的页卡组

c. 实现适配器的功能

d. 初始化ViewPager,并设置适配器

使用ViewPager设置引导页,小圆点,引导页

1.具体的实现步骤:

第一步:

xml创建布局,调用ViewPager控件,在android.support.v4.view.ViewPager里面

设置ViewPager的ID宽高。然后viewpager.setAdapter(arg0)设置适配器  适配器是将后台数据显示在前台界面的桥梁。

第二步:

方法一:

使用ArrayList设置视图imageView集合。在设置适配器之前添加内容,通过for循环加载图片:int id=getResources().getIdentifier("a"+i图片名称, "drawable"资源类型, getPackageName())应用程序的包名;然后创建imageview对象iv,每循环一次创建一次对象,并且set背景放置id;

把对象iv添加add进imageView集合。

方法二:

使用ArrayList设置View集合,加载的样式以布局样式。layout设置布局,需要几个页面设置几个布局。

加载布局将XML转换成布局需要用到布局过滤器viewList.add(getLayoutInflater()/*布局过滤器*/.inflate/*解析*/(R.layout.pager1, null)),有几个页面就加载几个。

第三步:

设置适配器,建内部类,继承适配器class MyPagerAdapter extends PagerAdapter,重写里面的2个getCount和isViewFromObject方法。

getCount是设置页卡的数量  集合里的元素有多少个就显示多少页,getCount里返回集合的长度。

isViewFromObject是当前的对象是不是视图如果是的话,显示视图

instantiateItem  每次最多能初始化3个页卡的内容position:当前的页卡,往视图组container添加当前的页面container.addView(viewList.get(position));

destroyItem是销毁当前的视图,container.removeView(viewList.get(position));

适配器设置完,返回设置参数viewpager.setAdapter(new MyPagerAdapter )

第四步:

设置小圆圈,OnPageChangeListener手势监听使用,定义手势监听对象,重写三个方法

在XML设置要被使用的线性布局,圆圈要添加在的区域。

声明LinerLayout对象,进行实例化(findViewById),添加的内容用集合表示ArrayList<imageView> pointList=...

往集合添加视图的地方同时添加圆。实例化ImageView iv2=new ImageView(this);

对象调用设置背景方法setBackgroundResource(R.drawable.adware_style_default);

往集合add添加iv2,设置圆点的间距setPadding方法

添加布局:

设置布局参数 LayoutParams params=new LayoutParams(20,15); 定义设置线性布局里的子控件的宽高。

设置手势监听器viewpager.setOnPageChangeListener(new OnPageChangeListener() ,重写监听器的三个方法:

onPageSelected(int arg0)页卡选中 arg0代表页卡选中的id选中的界面

onPageScrolled(int arg0, float arg1, int arg2页卡滑动当前页卡  滑动的百分比  滑动的像素

onPageScrollStateChanged(int arg0)*滑动的状态 0滑动结束   1滑动开始   2滑动中

然后为线性布局添加每个控件linear.addView(pointList.get(i),params);必须写在for循环里。

Params参数代表每一个ImageView 的宽高

第六步:

给圆圈设间隙

params.setMargins(30, 0, 0, 40);//设置间距

设置圆圈切换界面时变化

在页卡滑动onPageScrolled方法里遍历图标集合长度,

当i=当前界面时,pointList.get(arg0).setBackgroundResource(R.drawable.adware_style_selected);使用这张图片

否则的话pointList.get(i).setBackgroundResource(R.drawable.adware_style_default);使用者图片

第六步:

设置引导页完成,浮现按钮跳转界面

创建第二界面的Activity继承Activity,在布局中设置跳转的button,并设置android:visibility="gone"隐藏属性。

在MainActivit的页卡滑动onPageScrolled方法里判断arg0==pointList.size()-1当前页面等于数组长度,button.setVisibility(View.VISIBLE);调用方法显示button。

实例化按钮设置button点击事件,设置跳转界面Intent intent=new Intent(MainActivity.this,SecondActivity.class); startActivity(intent);

安卓笔记之ViewPager页卡相关推荐

  1. Android:ViewPager为页卡内视图组件添加事件

    在数据适配器PagerAdapter的初始化方法中添加按钮事件,这里是关键,首先判断当前的页卡编号.必须使用当前的view来获取按钮. @Overridepublic Object instantia ...

  2. 使用自定义RadioButton和ViewPager实现TabHost效果和带滑动的页卡效果。

    参考自http://www.apkbus.com/android-86125-1-1.html 这篇文章技术含量一般,大家别见笑.源码我以测试,在底部可下载.    好了先上效果图: 以下是实现步骤: ...

  3. android viewpager 间隔,viewpager 系统兼容 clipChildren 页卡间距

    此效果在4.4以下有个bug,两边的会有遮盖,但是一滑动就没事了... 此时需要给viewpager设置onpagerchangedListener 刷新父布局invalidate viewpager ...

  4. android重置系统,安卓手机越用越卡,恢复出厂设置真有用?别瞎搞,看完就明白了!...

    安卓手机越用越卡,恢复出厂设置真有用?别瞎搞,看完就明白了! 现在手机的价格逐渐的开始上升,一部好一点的手机价格还是比较贵的,所以很多人想要节省更多的换机支出,都会想要购买到一款可以使用的比较久的手机 ...

  5. colab清理gpu缓存_安卓手机为什么会变卡?强制GPU渲染手机就能变流畅?你真的懂吗...

    使用过安卓手机的朋友都知道,安卓手机最大的毛病就是卡顿,那你知道安卓手机变卡的原因吗?还有网上很多教程说开启"强制进行GPU渲染"手机就会变流畅,真的是这样吗? 我们先来了解安卓手 ...

  6. 安卓案例:标签页演示

    安卓案例:标签页演示 利用标签页可以充分利用窗口空间显示更多的内容. 一.运行效果

  7. lfs(systemv版本)学习笔记-第1页

    一名linux爱好者,记录构建Linux From Scratch的过程 经博客园-骏马金龙前辈介绍,开始接触学习lfs,用博客记录学习笔记,如有写的不恰当的地方,望多多指正. 笔记中只是记录一些问题 ...

  8. 安卓手机突然很卡_为什么你的安卓手机越用越卡,真是内存不够?终于找到原因了!...

    为什么你的安卓手机越用越卡,真是内存不够?终于找到原因了! 现在在手机市场里基本上是被两个系统瓜分了市场,一个是苹果手机的iOS系统,一个是国产手机的安卓系统.在以前很多用户会选择使用苹果手机,因为苹 ...

  9. The SwiftProgramming Language读书笔记第26页

    ·        第26页 The SwiftProgramming Language读书笔记学习笔记第26页 本页主要讨论swift语言里的整形数据和浮点数. 1 int整形,有符号整形数据,是和计 ...

最新文章

  1. 没事抽空学——常用界面组件属性
  2. python爬虫赚钱途径-如何利用python爬虫挣钱
  3. 暑期总结之--c#界面设计作业Mini U-NET(多图杀猫)
  4. php每天一题:strlen()与mb_strlen()的作用分别是什么
  5. Thinkpad上安装Ubuntu相关事项
  6. 通信网络安全分层及关键技术解决
  7. 数据结构之并查集:路径压缩继续优化并查集——20
  8. 4-1:shell编程之编写第一个shell脚本
  9. 暑期训练日志----2018.7.31
  10. ConnectionRead (WrapperRead())Timeout expired
  11. Sass中使用@each循环
  12. 量子计算机采用量子力学原理,物理学:量子计算机的工作是不是就是根据量子力学原理造的?...
  13. word鼠标右下角有一个小方块_word
  14. 计算机控制技术结束语,电子商务在线 - 计算机控制技术教学改革探索与实践
  15. CSS的repeating-radial-gradient()属性-径向渐变
  16. 希沃白板如何解决手机端播放课件内视频出现黑屏闪退
  17. 计算机 无法进入pe,电脑无法进入pe系统_电脑无法进入pe界面
  18. ascii码中的A的代码是什么?
  19. Android--万能自定义弹窗
  20. 淘宝、百度、腾讯、新浪开放平台

热门文章

  1. 北漂家乡买房记:6年至少亏了50% 还无法脱手!
  2. 微软 CTO 韦青:“程序员 35 岁就被淘汰”是个伪概念
  3. [编程题]走斜线Java
  4. will do 和 will be doing的区别
  5. 【Android探索】基于Android Studio平台的蓝牙遥控APP
  6. 微软必应词典客户端 案例分析
  7. 如果没有UX经验,如何创建个人UX作品集?
  8. 电路方案分析(八)Type-C 端口短路保护参考设计
  9. 微信小程序开发知识点总结
  10. Springmvc html上传图片转码为base64通过ajax存入数据库中(纯html存储图片不能使用路径)完整过程