Android ViewPager检测滑动超出范围

Android ViewPager检测滑动超出范围,第1张

概述在我的Android应用程序中,我正在使用viewpager进行图像滑动.我的要求是,如果用户从第一页和最后一页滑出,则该活动应完成.我已将此值设为example.但是在我的活动中未调用方法setOnSwipeOutListener.这是我的自定义视图寻呼机类:publicclassCustomViewPagerextendsViewPager

在我的Android应用程序中,我正在使用vIEwpager进行图像滑动.我的要求是,如果用户从第一页和最后一页滑出,则该活动应完成.

我已将此值设为example.但是在我的活动中未调用方法setonSwipeOutListener.

这是我的自定义视图寻呼机类:

public class CustomVIEwPager extends VIEwPager {    public CustomVIEwPager(Context context) {        super(context);    }    public CustomVIEwPager(Context context, AttributeSet attrs) {        super(context, attrs);    }    float mStartDragX;    OnSwipeOutListener mListener;    public voID setonSwipeOutListener(OnSwipeOutListener Listener) {        mListener = Listener;    }    @OverrIDe    public boolean onIntercepttouchEvent(MotionEvent ev) {        float x = ev.getX();        switch (ev.getAction()) {        case MotionEvent.ACTION_DOWN:            mStartDragX = x;            break;        case MotionEvent.ACTION_MOVE:            if (mStartDragX < x && getCurrentItem() == 0) {                mListener.onSwipeOutAtStart();            } else if (mStartDragX > x                    && getCurrentItem() == getAdapter().getCount() - 1) {                mListener.onSwipeOutAtEnd();            }            break;        }        return super.onIntercepttouchEvent(ev);    }    public interface OnSwipeOutListener {        public voID onSwipeOutAtStart();        public voID onSwipeOutAtEnd();    }} 

在下面的活动类中,我在自定义viewpager类上调用setonSwipeOutListener方法,但未调用它.

myPager = (CustomVIEwPager) findVIEwByID(R.ID.home_pannels_pager);.......myPager.setonSwipeOutListener(new OnSwipeOutListener() { // the method never called    @OverrIDe    public voID onSwipeOutAtStart() {        Log.e("swipe Out At Start ", "swipe out");    }    @OverrIDe    public voID onSwipeOutAtEnd() {        Log.e("swipe Out At End ", "swipe end");    }});myPager.setonPagechangelistener(new VIEwPager.SimpleOnPagechangelistener() {    @OverrIDe    public voID onPageSelected(int po) {        Log.e("positon", ""+po);    }});

请帮助我检测用户是否滑过第一页和最后一页以关闭此活动,以及如何从代码中调用该方法.

解决方法:

就我而言,onIntercepttouchEvent不起作用.我使用ontouchEvent更改了方法,并且该方法正在运行.原始解决方案是从tjlian616开始

    @OverrIDepublic boolean ontouchEvent(MotionEvent ev){    if(getCurrentItem()==getAdapter().getCount()-1){        final int action = ev.getAction();        float x = ev.getX();        switch(action & MotionEventCompat.ACTION_MASK){        case MotionEvent.ACTION_DOWN:            mStartDragX = x;            break;        case MotionEvent.ACTION_MOVE:            break;        case MotionEvent.ACTION_UP:            if (x<mStartDragX){                mListener.onSwipeOutAtEnd();            }else{                mStartDragX = 0;            }            break;        }    }else{        mStartDragX=0;    }    return super.ontouchEvent(ev);}    
总结

以上是内存溢出为你收集整理的Android ViewPager检测滑动超出范围全部内容,希望文章能够帮你解决Android ViewPager检测滑动超出范围所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1094859.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存