Android ViewPager的嵌套使用
来源:互联网 发布:淘宝原图制作软件 编辑:程序博客网 时间:2024/06/04 19:34
ViewPager的嵌套使用会涉及到事件传递的处理。
不能滑动的ViewPager
package com.itheima.zhbj48.view;import android.content.Context;import android.support.v4.view.ViewPager;import android.util.AttributeSet;import android.view.MotionEvent;/** * 不能滑动的ViewPager */public class NoScrollViewPager extends ViewPager {public NoScrollViewPager(Context context, AttributeSet attrs) {super(context, attrs);}public NoScrollViewPager(Context context) {super(context);}// 事件分发@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {return super.dispatchTouchEvent(ev);}/** * 事件拦截 * * 返回false, 表示不拦截触摸事件,让子控件有机会响应事件, 用于ViewPager嵌套ViewPager时使用 */@Overridepublic boolean onInterceptTouchEvent(MotionEvent ev) {return false;}/** * 拦截所有的触摸事件, 不做任何处理 */@Overridepublic boolean onTouchEvent(MotionEvent ev) {return true;}}
头条新闻横向滑动的ViewPager
package com.itheima.zhbj48.view;import android.content.Context;import android.support.v4.view.ViewPager;import android.util.AttributeSet;import android.view.MotionEvent;/** * 头条新闻横向滑动的ViewPager */public class HorizontalScrollViewPager extends ViewPager {private int startX;private int startY;public HorizontalScrollViewPager(Context context, AttributeSet attrs) {super(context, attrs);}public HorizontalScrollViewPager(Context context) {super(context);}/** * 1. 当右划时,而且当前item是第一个,需要父控件拦截; 2. 当左划时,当前item是最后一个,需要父控件拦截; 3. 当上下划动时, * 需要父控件拦截 */@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {switch (ev.getAction()) {case MotionEvent.ACTION_DOWN:getParent().requestDisallowInterceptTouchEvent(true);// 请求父控件,以及祖宗控件,不要拦截我的事件,startX = (int) ev.getX();startY = (int) ev.getY();break;case MotionEvent.ACTION_MOVE:int endX = (int) ev.getX();int endY = (int) ev.getY();int dx = endX - startX;int dy = endY - startY;// 判断是否是左右划if (Math.abs(dx) > Math.abs(dy)) {// 左右滑动if (dx > 0) {// 向右滑动if (getCurrentItem() == 0) {// 当前item是第一个getParent().requestDisallowInterceptTouchEvent(false);// 父控件可以拦截事件}} else {if (getCurrentItem() == getAdapter().getCount() - 1) {// 当前item是最后一个getParent().requestDisallowInterceptTouchEvent(false);// 父控件可以拦截事件}}} else {getParent().requestDisallowInterceptTouchEvent(false);// 父控件可以拦截事件}break;default:break;}return super.dispatchTouchEvent(ev);}}
0 0
- Android ViewPager的嵌套使用
- Android-ViewPager嵌套使用探究
- android ViewPager嵌套的使用方法
- android,viewpager嵌套的问题
- android中viewpager,scrollview的嵌套问题
- android中viewpager,scrollview的嵌套问题
- android中viewpager,scrollview的嵌套问题
- ViewPager的Fragment嵌套使用,getSupportFragmentManager问题
- ViewPager和Fragment的嵌套使用
- NavigationTabStrip嵌套ViewPager+framgent的使用
- android ViewPager学习(五)Fragment里嵌套Viewpager的示例
- Android ViewPager嵌套ViewPager滑动冲突的解决方法
- Android ViewPager嵌套ViewPager滑动冲突的解决方法
- Android viewpager嵌套viewpager滑动冲突的解决
- Android ViewPager嵌套Fragment
- Viewpager + GridView 嵌套使用
- android scrollview 嵌套 Viewpager, Viewpager 不能动态的设置高度,一直使用第一个fragment页面的高度
- ViewPager 嵌套 ViewPager的解决方法
- Android微信智能心跳方案
- PHP开发者应了解的24个库
- 剑指Offer面试题5:从尾到头打印链表
- PHP中空字符串介绍0、null、empty和false之间的关系
- 【伯乐在线】这些 Git 技能够你用一年了
- Android ViewPager的嵌套使用
- android:baselineAligned="false"
- SVN服务器搭建和使用(二)
- 用VS2013在win7下编写的C++程序怎么在XP下运行?
- New delete 和 malloc free的区别
- 问题的种类以及解决
- POJ 3159 - Candies(查分约束)
- iplimage和Mat之间的转换
- 工具类apache.commons.lang.StringUtils 使用心得