页面滑动切换效果

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对委托式事件处理的理解:
委托式事件处理就如同生活中我们每个人的能力都有限,当碰到一 些自己处理不了的事情时,就委托给某个机构或公司来处理。
LinearLayout位于屏幕的下方,水平居中,用于显示图片控件,由 于图片控件的内容是动态变化的,因此该部分信息需要在代码中动态确 定,布局中LinearLayout的内容暂时为空,仅仅指定了线性布局的方向 以及里面内容摆放的对齐方式。
ViewPager控件
ViewPager本质上是一个容器,可以向该容器中添加控件和删除控 件。既可以是像按钮、文本显示框等简单的控件,也可以是包含复杂结 构的控件组合。实际上,一个页面可以看成是一个复杂的View对象,通 过Activity的getLayoutInflater().inflate()方法可以将XML布局文件转 换成一个View对象。
本章案例效果分析
案例界面分析
界面中主要包含两个控件:ViewPager和LinearLayout,由于二者 存在重叠部分,所以可采用层布局或相对布局,本例采用相对布局。
ViewPager用于动态显示页面,它的宽度和高度占满整个屏幕,当滑 动页面时,ViewPager可以切换到相应页面,也可以通过上方的标题切 换到相应的页面。由于ViewPager类位于Android提供的兼容包中,不能 直接使用,需要写完整的包名+类名。
自定义PagerAdapter子类
自定义一个PagerAdapter子类时,至少需要实现以下四个方法: instantiateItem(ViewGroup container, int position):该方法 用于初始化指定的页面; destroyItem(ViewGroup container, int position, Object object):该方法用于销毁指定的页面; getCount():该方法用于返回可切换的页面的个数; isViewFromObject(View arg0, Object arg1):该方法用于判断 View对象与Object对象是否为同一对象; 除此之外还可以重写getPageTitle(int position)方法,用于获取 指定页的标题等。
③ 在Activity中,调用findViewById()方法根据id属性找到 ViewPager控件,调用setAdapter()方法,将PagerAdapter 与ViewPager控件关联起来。
④ 调用setOnPageChangeListener()方法为ViewPager控件注册页 面变化事件监听器,切换到不同页面时,更换显示图标。
页面与图标状态相对应的处理
案例中既可以通过滑动ViewPager切换页面,也可以通过单击下方 的小图标切换页面,同时要保证二者的关系相一致,即联动变化。具体 处理方案如下:
对于ViewPager而言,当监听到页面发生变化时,首先让所有的 图片控件都恢复为未选中状态对应的图标,然后将当前页面所对 应的图片控件设置为选中的图标。
➢ EventSource(事件源):产生事件的控件即事件发生的源头,如 按钮、列表、输入框、菜单等;
➢ Event(事件):具体某一操作的详细描述,事件封装了操作的相关 信息,如果想获得事件源上所发生事件的相关信息,可通过Event对 象来取得,例如按键事件按下的是哪个键、触摸事件发生的位置等;
➢ EventListener(事件监听器):负责监听用户在事件源上的操作,并 对用户的各种操作做出相应的响应,事件监听器中可包含多个事件处 理器,一个事件处理器实际上就是一个事件处理方法。
8
基于监听的事件处理机制
这三类对象如何协同工作呢?
外部动作
2.触发事件 源上事件
事件源
委托式事件处理
事件
3.生成事 件对象
1.将事件监听器 注册到事件源
事件处理器
4.触发事件监听器,事件被 作为参数传入事件处理器
事件监听器
5.调用事件处 理器做出响应
事件处理器 ……
基于监听的事件处理模型
9
基于监听的事件处理机制
对于图标控件而言,首先需要为这些图标添加单击事件监听器, 当监听到某一图标被单击时,让所有的图片控件都恢复为未选中 状态对应的图标,然后将当前图片控件设置为选中的图标,同时 设置ViewPager中显示的页面为当前图标所对应的页面。
基于监听的事件处理机制
基于监听的事件处理模型中,主要涉及到三类对象:
onPageScrolled(int arg0, float arg1, int arg2) :页面滚动时不断 调用该方法,参数1表示当前页面的序号,参数2表示当前页面偏移的百 分比,参数3表示当前页面偏移的像素;
onPageSelected(int selected):页面跳转完后得到调用,参数表示 当前页面的序号。
页面变化事件监听器
页面发生变化时,下方小图标的状态也需要发生变化,在此,可通 过为ViewPager注册页面变化事件监听器:OnPageChangeListener, OnPageChangeListener中主要的方法如下:
onPageScrollStateChanged(int arg0) :页面滚动状态发生变化时 调用,参数表示当前滚动状态,0未滚动,1正在滚动,2滚动结束;
在Android中,ViewPager对象本身并不直接与页面进行关联,而是 通过一个中介或者适配器来关联即PagerAdapter。PagerAdapter是一 个抽象类,不能直接实例化,Android系统中提供了一些该类的实现类如: FragmentPagerAdapter, FragmentStatePagerAdapter。除此之外, 开发者也可效果开发步骤
① 在XML布局文件中添加ViewPager控件并为该控件添加id属性, 由于ViewPager控件位于兼容包中,因此需要使用完整的包名+ 类名。
② 准备需要切换的页面信息,例如页面布局、页面标题等,然后创 建PagerAdapter对象将同一页面中的数据信息关联起来;
相关文档
最新文档