android viewpager 滑动方法,Android中Viewpager禁止滑动的实现
前言
现在很多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禁止滑动的实现相关推荐
- android avd 使用方法,Android中Android Virtual Device(AVD)使用教程
AVD的全称为:Android Virtual Device,就是Android运行的虚拟设备,他是Android的模拟器识别.建立的Android要运行,必须创建AVD,每个AVD上可以配置很多的运 ...
- android datepicker使用方法,android中DatePicker和TimePicker的使用方法详解
本文以实例讲述了android中DatePicker和TimePicker的使用方法,具体步骤如下: 下面是实现具体功能的代码,其中main.xml代码为: android:layout_width= ...
- android 静态工厂方法,Android 源码中的静态工厂方法
我们知道工厂模式有三兄弟,通常我们说的工厂模式指的是工厂方法模式,它的应用频率最高.本篇博客分享的简单工厂模式是工厂方法模式的"小弟",确切的来讲它不属于设计模式,而是一种方法.此 ...
- android模拟按键方法,Android随笔之——模拟按键操作的几种方式
前几天转过一篇Android上模拟按键操作.触屏事件的博客,昨天又去找了百度.谷歌了一下,写了一点简单的测试代码,留待不时之需.有需要看之前转载的那篇博客的请看这里→_→转:Android随笔之--使 ...
- android datepicker使用方法,android DatePicker
Date Picker 提供了一个构件去选择一个时间,使用DatePicker构件,该构件允许用户去选择月,日,年在一个界面中. 实例介绍 首先我们应该先创建一个DatePickerDialog,该D ...
- android view使用方法,Android View构造方法第三参数使用方法详解
我们都知道,在Android中要使用一个View,一般会有两种方式: 在XML文件中配置: 直接在代码中new一个View的对象. 我们今天讨论的内容就是围绕着View的构造方法的. 1.实例 首先我 ...
- android view使用方法,android – 如何使用getView()方法,它在哪里被调用?
我是Android开发的新手,并且一直遵循Android网站上提供的教程.我目前在视图教程部分,特别是Grid Views: Hello, Grid View Tutorial的教程. 我无法通过适配 ...
- Android代码混淆方法,Android 代码混淆零基础入门
内容提要 本篇文章主要有三个部分,让读者读完后能自己写规则混淆项目 对Android代码怎么开启混淆做一个简单的介绍. 对混淆规则做一个简单介绍: 在混淆过后Crash日志反推代码工具retrace. ...
- Android屏幕监视方法,Android 关于手机屏幕的那些事
1.屏幕方向参数: ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED,//未指定,此为默认值.由Android系统自己选择合适的方向. ActivityInfo. ...
- android写入文件方法,Android 追加写入文件的三种方法
一.使用FileOutputStream 使用FileOutputStream,在构造FileOutputStream时,把第二个参数设为true public static void method1 ...
最新文章
- ue4导入倾斜摄影_倾斜摄影入门必学|Context Capture建模软件工作流程
- python语音引擎深度学习_python深度学习之语音识别(speech recognize)
- 在C#的类库中使用log4net
- boost::callable_traits的is_rvalue_reference_member的测试程序
- 12.混淆——数字音频采样,混淆,反混淆,脉冲序列_2
- hive数据的导入导出方式
- 千万别惹程序员之经典的SQL注入式***
- file处理的一些内容
- 《计算机网络 自顶向下》第八章==网络安全
- annovar与VEP对SNP进行位置注释
- IOTOS物联中台对接海康安防平台(iSecure Center)门禁系统
- VS2010 SP1安装卡在VS10Sp1-KB983509处的解决(转)
- Mybatis学习文档
- gmssl编程之签发X509证书
- python提取url的顶级域名及域名后缀
- 认知科学、神经科学、和认知神经科学
- 国产手机以价格战争锋折叠手机,然而定价权却在三星手上
- 骁龙8+gen1和a15差距 骁龙8+和苹果a15对比哪个好
- VMware官网获取VMware Workstation Pro、安装及注册
- 高防BGP服务器速度怎么样?选用高防BGP服务器需要考虑什么
热门文章
- 一步步用ABAP Development Tools连接SAP云平台上的ABAP编程环境
- root cause of message type unknown during BP delta upload
- Opportunity workflow debug
- There is no tracking information for the current branch
- 什么是Github的元数据metadata以及如何备份github上的数据
- 如何在Chrome development tool里查看C4C前台发送的未经 GZIP 压缩之前的请求细节
- 正则表达式匹配Python解法
- 龙之谷哪个服务器最多,龙之谷哪些服务器数据互通 龙之谷数据互通详情介绍...
- iptables(上)
- 计算机网络cdma的缺点,CDMA和GSM比较的优缺点是什么?