ViewPager与PagerAdapter
来源:互联网 发布:淘宝的亚马逊旗舰店 编辑:程序博客网 时间:2024/06/01 08:54
PagerAdapter
常用方法
getPageWidth():获取子View占ViewPager的宽度比。默认时该方法返回1,所以ViewPager每一次只可以显示一个完整子View。可以将方法返回值调用,就可以一次性显示多个。
ViewPager
常用方法
setPageMargin():设置各Page之间的margin。
setOffscreenLimit():设置每一次缓存的page数。
效果
常见的效果如下:
居中显示一个page,但两边仍旧保留上下page的一部分。
其实现思路是:将ViewPager居中,但不限制子View只显示在ViewPager的范围内——利用clipChildren属性。如布局为:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:clipChildren="false" tools:context="com.sogle.app1.MainActivity"> <android.support.v4.view.ViewPager android:clipChildren="false" android:id="@+id/vp" android:layout_marginLeft="30dp" android:layout_marginRight="30dp" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" /></LinearLayout>
父布局与ViewPager都设置了clipChildren为false,这样超出viewpager的部分就会显示出来。而ViewPager本身会将子View进行横向排列,所以超出显示部分(即当前View左右两边的View)依旧会显示出来,这便形成了上述的效果。
该效果时,由于左右两边显示部分并不属于ViewPager,所以左右两边显示部分的touch事件ViewPager是接受不到的,为此可以重写ViewPager的父布局,将它的所有touch事件直接传递给viewPager执行。
对应的java代码为:
final ViewPager vp = (ViewPager) findViewById(R.id.vp); vp.setPageMargin(20); vp.setOffscreenPageLimit(2); findViewById(R.id.activity_main).setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { return vp.dispatchTouchEvent(motionEvent); } });
首先设置viewpager预加载个数为2,保证一次显示的三个page都已预加载完成。
再者,将viewpager的父view的点击事件全部交由viewpager自己处理,其目的是为了在viewpager两边的touch事件也能由viewpager处理,防止触摸两边时viewpager无响应。
- viewpager 与 pageradapter
- ViewPager与PagerAdapter
- ViewPager与PagerAdapter(PagerAdapter工作流程)
- Fragment与ViewPager及PagerAdapter
- ViewPager与PagerAdapter深度解析
- ViewPager与PagerAdapter深度解析
- ViewPager+PagerAdapter
- PagerAdapter、FragmentPagerAdapter及FragmentStatePagerAdapter与Viewpager
- ViewPager与PagerAdapter配合实现Tab效果
- PagerAdapter与viewpager的交互关系
- Android——ViewPager、PagerAdapter、Fragment(State)PagerAdapter的关系与区别
- viewpager与pageradapter具体生命流程是怎样调用的
- ViewPager源码分析(3):与PagerAdapter 交互
- android应用新手引导切换界面-ViewPager与PagerAdapter
- ViewPager高效PagerAdapter实现
- ViewPager的PagerAdapter.notifyDataSetChanged()
- ViewPager PagerAdapter FragmentPagerAdapter FragmentStatePagerAdapter
- Android ViewPager PagerAdapter
- Android四大组件Activity启动源码分析
- git学习笔记
- 上线前准备
- C#调用C++DLL,及回调函数、string参数传递的总结
- 常引用的链接地址
- ViewPager与PagerAdapter
- Spring MVC 通过@Value注解读取.properties配置结果为null
- 洛谷 P1115 最大子段和
- 利用redis + lua解决抢红包高并发的问题
- java设计模式之桥接模式
- 05 JS-DOM之-间接获取节点(即访问关系)
- mysql 行锁 表锁
- Android硬件抽象层(HAL)概要介绍和学习计划
- NO.4 继续HTML之路