最新消息:关注【已取消】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

Android上下左右滑动事件实现页面切换|非ViewPager

Android 太平洋学习网 0浏览 评论

在Android中我们实现页面翻页或图片切换,通常会用到ViewPager,但是如果想要实现Activity翻页,则ViewPager是无法实现的,因此本案例中实现上下左右滑动并页面切换,用到的是由OnTouchListener监听事件结合GestureDetector,SimpleOnGestureListener手势监听事件来实现的左右滑动示例。

我们都知道ViewPager只能用来翻页fragment或者图片之类的控件,如果想要实现滑动Activity翻页,则无法实现,因此本示例将以Activity滑动翻页为例,封装成OnSwipeTouchListener监听类来实现。

OnSwipeTouchListener代码:

package com.example.animationdemo;

import android.content.Context;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;

public class OnSwipeTouchListener implements View.OnTouchListener {

    private final GestureDetector gestureDetector;
    private Context context;

    public boolean onTouch(final View view, final MotionEvent motionEvent) {
        return gestureDetector.onTouchEvent(motionEvent);
    }

    public GestureDetector getGestureDetector(){
        return  gestureDetector;
    }

    public OnSwipeTouchListener(Context context) {
        super();
        this.context = context;
        gestureDetector = new GestureDetector(context, new GestureListener());
    }

    private final class GestureListener extends GestureDetector.SimpleOnGestureListener {

        //滑动距离
        private static final int SWIPE_THRESHOLD = 100;
        //手势速度
        private static final int SWIPE_VELOCITY_THRESHOLD = 100;

        @Override
        public boolean onDown(MotionEvent e) {
            return true;
        }

        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
            boolean result = false;
            try {
                float diffY = e2.getRawY() - e1.getRawY();
                float diffX = e2.getRawX() - e1.getRawX();
                if ((Math.abs(diffX) - Math.abs(diffY)) > SWIPE_THRESHOLD) {
                    if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
                        if (diffX > 0) {
                            onSwipeRight();
                        } else {
                            onSwipeLeft();
                        }
                    }
                } else {
                    if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) {
                        if (diffY > 0) {
                            onSwipeBottom();
                        } else {
                            onSwipeTop();
                        }
                    }
                }
            } catch (Exception e) {

            }
            return result;
        }
    }

    /**
     * On swipe right.
     */
    public void onSwipeRight() {
    }

    /**
     * On swipe left.
     */
    public void onSwipeLeft() {
    }

    /**
     * On swipe top.
     */
    public void onSwipeTop() {
    }

    /**
     * On swipe bottom.
     */
    public void onSwipeBottom() {
    }
}

然后在OneActivity中添加方法,滑动跳转到TwoActivity中,例如OneActivity.xml所有控件都是由ConstraintLayout包裹的,那么我们可以在OneActivity中的onCreate中添加如下代码,实现Activity滑动切换页面

constraint_layout = findViewById(R.id.constraint_layout);
constraint_layout.setOnTouchListener(new OnSwipeTouchListener(this){
	@Override
	public void onSwipeLeft() {
		super.onSwipeLeft();
		//Activity滑动翻页
		startActivity(new Intent(OneActivity.this,TwoActivity.class));
	}

	@Override
	public void onSwipeRight() {
		super.onSwipeRight();
	}

	@Override
	public void onSwipeTop() {
		super.onSwipeTop();
	}

	@Override
	public void onSwipeBottom() {
		super.onSwipeBottom();
	}
});

Android实现界面左右滑动切换翻页,这个OnSwipeTouchListener工具类能够很好的帮助您实现翻页功能,而不需要用到麻烦的ViewPager,甚至ViewPager根本无法实现Activity的滑动翻页效果。

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/android/1164.html
"文章很值,打赏犒劳作者一下"
微信号: Javaweb_engineer

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

与本文相关的文章

发表我的评论
取消评论

表情

您的回复是我们的动力!

  • 昵称 (必填)

网友最新评论