ViewPager小细节
来源:互联网 发布:手机桌面优化软件 编辑:程序博客网 时间:2024/06/18 18:18
ViewPager禁用滑动
注:内容参考自他处。
ViewPager禁用手势滑动
实现原理:重写ViewPager的OnInterceptTouchEvent和OnTouchEvent方法,均返回false,不拦截事件也不处理子view未处理事件
import android.content.Context;import android.support.v4.view.ViewPager;import android.util.AttributeSet;import android.view.MotionEvent;public class CustomViewPager extends ViewPager { private boolean isPagingEnabled = false; public CustomViewPager(Context context) { super(context); } public CustomViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onTouchEvent(MotionEvent event) { return this.isPagingEnabled && super.onTouchEvent(event); } @Override public boolean onInterceptTouchEvent(MotionEvent event) { return this.isPagingEnabled && super.onInterceptTouchEvent(event); } public void setPagingEnabled(boolean b) { this.isPagingEnabled = b; }}
ViewPager禁用切换滑动
实现原理:重写Scroller的startScroll方法,将startScroll的duration设为0,用反射替换ViewPager的scroller
第一步:重写scroller
import android.content.Context;import android.view.animation.Interpolator;import android.widget.Scroller;public class FixedSpeedScroller extends Scroller { private int mDuration = 0; public FixedSpeedScroller(Context context) { super(context); } public FixedSpeedScroller(Context context, Interpolator interpolator) { super(context, interpolator); } public FixedSpeedScroller(Context context, Interpolator interpolator, boolean flywheel) { super(context, interpolator, flywheel); } public void setDuration(int duration) { this.mDuration = duration; } @Override public void startScroll(int startX, int startY, int dx, int dy, int duration) { super.startScroll(startX, startY, dx, dy, mDuration); } @Override public void startScroll(int startX, int startY, int dx, int dy) { super.startScroll(startX, startY, dx, dy, mDuration); }} `
第二步:反射替换scroller
private void setViewPagerScrollSpeed( ){ try { Field mScroller = null; mScroller = ViewPager.class.getDeclaredField("mScroller"); mScroller.setAccessible(true); FixedSpeedScroller scroller = new FixedSpeedScroller( mViewPager.getContext( ) ); mScroller.set( mViewPager, scroller); }catch(NoSuchFieldException e){ e.printStackTrace(); }catch (IllegalArgumentException e){ e.printStackTrace(); }catch (IllegalAccessException e){ e.printStackTrace(); } }
0 0
- ViewPager小细节
- 小细节
- 小细节
- 小细节
- 小细节
- 小细节
- .net几个小细节
- vb小细节
- 几个小细节
- iFrame的小细节
- ABAP小细节
- 几个小细节
- VS2008 小细节
- 编程的小细节
- jQuery一个小细节
- action的小细节
- linux小细节
- 一点小细节
- 整理 collectionView 水平自定义布局
- Volley
- 2.ubuntu14.04 配置 jdk 8 环境变量
- 【有感】——困境之后的井喷
- kmeans聚类算法及matlab实现
- ViewPager小细节
- 枚举类型
- 斯坦福大学(Andrew Ng)机器学习课程讲义
- Mac Git安装
- iOS之Drawing<1>
- poj 1274 The Perfect Stall
- byte数组和文件互相转换
- VRRP协议
- NYOJ 115 城市平乱【Dijkstra】