前言

现在很多app,首页不允许滑动切换(因为页面加载吧),但是又用viewpage来管理frgament.因为方便嘛.

以前在网上找的例子:

public class NoScrollViewPager extends ViewPager {

public NoScrollViewPager(Context context, AttributeSet attrs) {

super(context, attrs);

}

public NoScrollViewPager(Context context) {

super(context);

}

@Override

public boolean dispatchTouchEvent(MotionEvent ev) {

//不拦截,否则子孩子都无法收到事件,一般这个自定义的时候都不作处理

return super.dispatchTouchEvent(ev);

}

@Override

public boolean onInterceptTouchEvent(MotionEvent ev) {

return super.onInterceptTouchEvent(ev);

}

@Override

public boolean onTouchEvent(MotionEvent ev) {

return true;

}

这个自定义如果继承的Viewpager是低版本的,那么是没问题的.

但是如果你编译时用是高版本的api,5.0以后吧.上面这个自定义就会失效,

你会发现,会有细微的滑动.还是能滑动的

判断老的还是新的,看setOnPageChangeListener就知道了

最新的Viewpager里面这个方法已经废弃了,改成addOnPageChangeListener()了.

由于之前改viewpager做懒加载.一直保留了一个老版本的Viewpager使用.直到最近才发现.

改进后

public class NoScrollViewPager extends ViewPager {

private boolean isScroll;

public NoScrollViewPager(Context context,AttributeSetattrs{

super(context, attrs);

}

public NoScrollViewPager(Context context) {

super(context);

}

/**

* 1.dispatchTouchEvent一般情况不做处理

*,如果修改了默认的返回值,子孩子都无法收到事件

*/

@Override

public boolean dispatchTouchEvent(MotionEvent ev) {

return super.dispatchTouchEvent(ev); // return true;不行

}

/**

* 是否拦截

* 拦截:会走到自己的onTouchEvent方法里面来

* 不拦截:事件传递给子孩子

*/

@Override

public boolean onInterceptTouchEvent(MotionEvent ev) {

// return false;//可行,不拦截事件,

// return true;//不行,孩子无法处理事件

//return super.onInterceptTouchEvent(ev);//不行,会有细微移动

if (isScroll){

return super.onInterceptTouchEvent(ev);

}else{

return false;

}

}

/**

* 是否消费事件

* 消费:事件就结束

* 不消费:往父控件传

*/

@Override

public boolean onTouchEvent(MotionEvent ev) {

//return false;// 可行,不消费,传给父控件

//return true;// 可行,消费,拦截事件

//super.onTouchEvent(ev); //不行,

//虽然onInterceptTouchEvent中拦截了,

//但是如果viewpage里面子控件不是viewgroup,还是会调用这个方法.

if (isScroll){

return super.onTouchEvent(ev);

}else {

return true;// 可行,消费,拦截事件

}

}

public void setScroll(boolean scroll) {

isScroll = scroll;

}

}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

android viewpager 滑动方法,Android中Viewpager禁止滑动的实现相关推荐

  1. android avd 使用方法,Android中Android Virtual Device(AVD)使用教程

    AVD的全称为:Android Virtual Device,就是Android运行的虚拟设备,他是Android的模拟器识别.建立的Android要运行,必须创建AVD,每个AVD上可以配置很多的运 ...

  2. android datepicker使用方法,android中DatePicker和TimePicker的使用方法详解

    本文以实例讲述了android中DatePicker和TimePicker的使用方法,具体步骤如下: 下面是实现具体功能的代码,其中main.xml代码为: android:layout_width= ...

  3. android 静态工厂方法,Android 源码中的静态工厂方法

    我们知道工厂模式有三兄弟,通常我们说的工厂模式指的是工厂方法模式,它的应用频率最高.本篇博客分享的简单工厂模式是工厂方法模式的"小弟",确切的来讲它不属于设计模式,而是一种方法.此 ...

  4. android模拟按键方法,Android随笔之——模拟按键操作的几种方式

    前几天转过一篇Android上模拟按键操作.触屏事件的博客,昨天又去找了百度.谷歌了一下,写了一点简单的测试代码,留待不时之需.有需要看之前转载的那篇博客的请看这里→_→转:Android随笔之--使 ...

  5. android datepicker使用方法,android DatePicker

    Date Picker 提供了一个构件去选择一个时间,使用DatePicker构件,该构件允许用户去选择月,日,年在一个界面中. 实例介绍 首先我们应该先创建一个DatePickerDialog,该D ...

  6. android view使用方法,Android View构造方法第三参数使用方法详解

    我们都知道,在Android中要使用一个View,一般会有两种方式: 在XML文件中配置: 直接在代码中new一个View的对象. 我们今天讨论的内容就是围绕着View的构造方法的. 1.实例 首先我 ...

  7. android view使用方法,android – 如何使用getView()方法,它在哪里被调用?

    我是Android开发的新手,并且一直遵循Android网站上提供的教程.我目前在视图教程部分,特别是Grid Views: Hello, Grid View Tutorial的教程. 我无法通过适配 ...

  8. Android代码混淆方法,Android 代码混淆零基础入门

    内容提要 本篇文章主要有三个部分,让读者读完后能自己写规则混淆项目 对Android代码怎么开启混淆做一个简单的介绍. 对混淆规则做一个简单介绍: 在混淆过后Crash日志反推代码工具retrace. ...

  9. Android屏幕监视方法,Android 关于手机屏幕的那些事

    1.屏幕方向参数: ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED,//未指定,此为默认值.由Android系统自己选择合适的方向. ActivityInfo. ...

  10. android写入文件方法,Android 追加写入文件的三种方法

    一.使用FileOutputStream 使用FileOutputStream,在构造FileOutputStream时,把第二个参数设为true public static void method1 ...

最新文章

  1. ue4导入倾斜摄影_倾斜摄影入门必学|Context Capture建模软件工作流程
  2. python语音引擎深度学习_python深度学习之语音识别(speech recognize)
  3. 在C#的类库中使用log4net
  4. boost::callable_traits的is_rvalue_reference_member的测试程序
  5. 12.混淆——数字音频采样,混淆,反混淆,脉冲序列_2
  6. hive数据的导入导出方式
  7. 千万别惹程序员之经典的SQL注入式***
  8. file处理的一些内容
  9. 《计算机网络 自顶向下》第八章==网络安全
  10. annovar与VEP对SNP进行位置注释
  11. IOTOS物联中台对接海康安防平台(iSecure Center)门禁系统
  12. VS2010 SP1安装卡在VS10Sp1-KB983509处的解决(转)
  13. Mybatis学习文档
  14. gmssl编程之签发X509证书
  15. python提取url的顶级域名及域名后缀
  16. 认知科学、神经科学、和认知神经科学
  17. 国产手机以价格战争锋折叠手机,然而定价权却在三星手上
  18. 骁龙8+gen1和a15差距 骁龙8+和苹果a15对比哪个好
  19. VMware官网获取VMware Workstation Pro、安装及注册
  20. 高防BGP服务器速度怎么样?选用高防BGP服务器需要考虑什么

热门文章

  1. 一步步用ABAP Development Tools连接SAP云平台上的ABAP编程环境
  2. root cause of message type unknown during BP delta upload
  3. Opportunity workflow debug
  4. There is no tracking information for the current branch
  5. 什么是Github的元数据metadata以及如何备份github上的数据
  6. 如何在Chrome development tool里查看C4C前台发送的未经 GZIP 压缩之前的请求细节
  7. 正则表达式匹配Python解法
  8. 龙之谷哪个服务器最多,龙之谷哪些服务器数据互通 龙之谷数据互通详情介绍...
  9. iptables(上)
  10. 计算机网络cdma的缺点,CDMA和GSM比较的优缺点是什么?