ViewPage判断左右滑动
来源:互联网 发布:ed是什么软件 编辑:程序博客网 时间:2024/05/24 04:34
自定义ViewPager
package com.view.pager;import android.content.Context;import android.support.v4.view.ViewPager;import android.util.AttributeSet;/** * 自定义ViewPager */public class CustomViewPager extends ViewPager { private boolean isLeft = false; // 判断是否滑向左边 private boolean isRight = false; // 判断是否滑向右边 private boolean isScrolling = false; // 判断是否滑动中 private int lastValue = -1; // 最后的位置 private SlideCallback sCallback; // 滑动回调 public CustomViewPager(Context context) { super(context); this.setOnPageChangeListener(pcListener); } public CustomViewPager(Context context, AttributeSet attrs) { super(context, attrs); this.setOnPageChangeListener(pcListener); } /** * 滑动回调 */ public interface SlideCallback { /** * 切换视图 * @param left * @param right */ public void changeView(boolean left, boolean right); public void getCurrentPageIndex(int index); } public void setsCallback(SlideCallback sCallback) { this.sCallback = sCallback; } /** * 滑动改变事件 */ protected OnPageChangeListener pcListener = new OnPageChangeListener() { @Override public void onPageSelected(int pos) { // 如果事件不为null if (sCallback != null) { // 则调用ViewPager改变方法 (更新当前View) sCallback.getCurrentPageIndex(pos); } } @Override public void onPageScrolled(int pos, float arg1, int arg2) { //pos :当前页面,及你点击滑动的页面 //arg1:当前页面偏移的百分比 //arg2:当前页面偏移的像素位置 if (isScrolling) { if (lastValue > arg2) { // 递减,向右侧滑动 isRight = true; isLeft = false; } else if (lastValue < arg2) { // 递减,向右侧滑动 isRight = false; isLeft = true; } else if (lastValue == arg2) { isRight = isLeft = false; } } lastValue = arg2; } @Override public void onPageScrollStateChanged(int state) { // 有三种状态(0,1,2)。 // state == 0 表示什么都没做。 // state == 1 表示正在滑动 // state == 2 表示滑动完毕了 if (state == 1) { isScrolling = true; } else { isScrolling = false; } if (state == 2) { if (sCallback != null) { sCallback.changeView(isLeft, isRight); } isRight = isLeft = false; } } };}
具体使用
// CustomViewPager c_vp = (CustomViewPager) this.findViewById(R.id.c_vp);// c_vp.setAdapter(new ViewPagerAdapter());// c_vp.setsCallback(sCallback); final String TAG = "TAG"; SlideCallback sCallback = new SlideCallback() { boolean isLeft = false; boolean isRight = false; @Override public void getCurrentPageIndex(int index) { // Log.e(TAG,"当前索引:" + index); // 防止没有改变,轻轻滑动,没有改变PageIndex,但是触发了滑动方法 // Log.e(TAG,isLeft + "----" + isRight + "-----" + c_vp.getCurrentItem()); if(isLeft && !isRight){ Log.e(TAG,"左滑"); } else if (isRight && !isLeft){ Log.e(TAG,"右滑"); } } @Override public void changeView(boolean isLeft, boolean isRight) { this.isLeft = isLeft; this.isRight = isRight; //if(isLeft && !isRight){ // 预操作code //} else if (isRight && !isLeft){ // 预操作code //} } };
0 0
- ViewPage判断左右滑动
- ViewPage判断左右滑动
- ViewPage判断左右滑动
- ViewPage判断左右滑动
- ViewPage判断左右滑动
- viewpage 实现左右循环滑动
- 如何禁止viewPage左右滑动的效果
- 使用ViewPage实现无缝左右循环滑动
- 【Android】自定义ViewPage 禁用左右滑动事件
- 判断左右触摸滑动
- zepto判断左右滑动
- ViewPage左右滑动和PullToRefreshListView上下滑动事件冲突
- android viewpage 左右无限循环滑动效果实现!
- ViewPage+Fragment + ListView可左右滑动翻页(仿微信页面)
- scrollView 判断左右滑动方法
- ViewPager 判断左右滑动的方向
- android GestureDetector依赖onTouchEvent判断左右滑动
- android ViewPager如何判断左右滑动
- HDP出现Could not create the Java Virtual Machine解决方法
- iOS - 正则表达式判断邮箱,身份证,手机,车牌号...验证是否正确
- JSON动态生成树
- Python 提取字典的一部分
- NAT类型与NAT穿越技术总结
- ViewPage判断左右滑动
- PHP 页面跳转实现方法
- duboo框架 入门 基础 转载
- WCF服务开发与调用的完整示例
- leetcode 169 Majority Element(难易度:Easy)
- ubuntu 使用cron设置定时启动任务
- PLSQL怎样导出oracle表结构和数据
- Win32打开某个文件所在的文件夹并定位
- SOAP消息