Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 单向寻呼机_Android_Android Viewpager_Android View_Fragmentpageradapter - Fatal编程技术网

Android 单向寻呼机

Android 单向寻呼机,android,android-viewpager,android-view,fragmentpageradapter,Android,Android Viewpager,Android View,Fragmentpageradapter,我正在尝试创建一个应用程序,用户可以在其中浏览一组照片。向左或向右滑动后,应删除上一张照片并显示下一张照片 Android的ViewPager似乎非常适合这个应用,除了它模拟的是幻灯片而不是一副牌。当用户向左或向右滑动时,如何使其进入下一页 一种可能的方法是创建一组在任意方向对称的页面。然后,如果ViewPager始终固定在这些页面的中间,则它将显示为朝一个方向移动。这看起来更像是一种黑客行为,所以我希望有人能知道一种更好的方法来实现这一点。您必须制作自己的ViewPager,以扩展原始View

我正在尝试创建一个应用程序,用户可以在其中浏览一组照片。向左或向右滑动后,应删除上一张照片并显示下一张照片

Android的ViewPager似乎非常适合这个应用,除了它模拟的是幻灯片而不是一副牌。当用户向左或向右滑动时,如何使其进入下一页


一种可能的方法是创建一组在任意方向对称的页面。然后,如果ViewPager始终固定在这些页面的中间,则它将显示为朝一个方向移动。这看起来更像是一种黑客行为,所以我希望有人能知道一种更好的方法来实现这一点。

您必须制作自己的ViewPager,以扩展原始ViewPager并覆盖onTouchEvent方法

public class CustomViewPager extends ViewPager {

    float lastX = 0;

    boolean lockScroll = false;

    public CustomViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomViewPager(Context context) {
        super(context);
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {

        switch (ev.getAction()) {
        case MotionEvent.ACTION_DOWN:
            lastX = ev.getX();
            lockScroll = false;
            return super.onTouchEvent(ev);
        case MotionEvent.ACTION_MOVE:

            if (lastX > ev.getX()) {
                lockScroll = false;
            } else {
                lockScroll = true;
            }

            lastX = ev.getX();
            break;
        }

        lastX = ev.getX();

        if(lockScroll) {
            return false;
        } else {
            return super.onTouchEvent(ev);
        }

    }
}

它只朝一个方向移动。这似乎迫使用户只能向左向右滑动?我希望用户能够向任意方向滑动,仍然可以看到相同的下一页。Android SDK中还有一个不常使用的小部件,您可能会发现它是定制实现的基础。或者,它的父项也值得一看。嗯,StackView似乎不处理用户的刷卡。这就是为什么我要研究ViewPager,因为它已经可以处理刷卡。是的,你必须自己实现触摸处理,这就是为什么我说“作为一个基础”。现在还没有想到这一点,但再一次,它与您的需求并不完全匹配。我想你自己的建议实际上也是一个相当可行的方法,而且不太难实现。