Android,停止自动滑动触摸

6

我正在开发一个应用程序,在其中我有一个视图页面来显示不同的视频图像,有许多个页面屏幕。

所有页面都像以下一样自动滑动。

 public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    ViewGroup v=(ViewGroup)inflater.inflate(R.layout.fragment_home, container, false);

    ButterKnife.bind(this, v);



    /*Snackbar.make(v, "Home Fragment", Snackbar.LENGTH_LONG)
            .setAction("Action", null).show();*/
    //Toast.makeText(getActivity(),"home Fragment",Toast.LENGTH_LONG).show();
    viewPager.setAdapter(new MyPagerAdapter());

    t=new Thread(){
        @Override
        public void run()
        {

            try {
                while(true) {
                    count %= size;
                    Log.w("slide", "" + count);
                    getActivity().runOnUiThread(new Runnable() {

                        @Override
                        public void run() {
                            viewPager.setCurrentItem(count);
                        }
                    });

                    count++;
                    Thread.currentThread().sleep(5000);
                }

            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    };
    //t.start();

    return v;
}

我希望当我触摸到特定的页码时,停止自动滑动页码,当我从页码上移开手指后,自动滑动又开始,并在再次触摸时停止。如何实现这个功能?


你需要操作线程。在这里查看----> http://www.tutorialspoint.com/java/java_thread_control.htm https://dev59.com/xmgu5IYBdhLWcg3w8bds - Chaudhary Amar
我通过这个链接实现了这个功能:https://github.com/Trinea/android-auto-scroll-view-pager - TopsAndy
2个回答

2
我使用了以下自定义的ViewPager:https://github.com/Trinea/android-auto-scroll-view-pager来实现我的功能。
<cn.trinea.android.view.autoscrollviewpager.AutoScrollViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

并设置特定时间的间隔以进行自动幻灯片播放

setInterval(long)

使用startAutoScroll()方法进行自动滑动

并使用topAutoScroll()停止触摸时的动画效果,如下所示:

     layout.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                switch(event.getAction())
                {
                    case MotionEvent.ACTION_DOWN:
                        Log.w("touched","down");
                        stopScroll();
                        return true;
                        //break;

                    case MotionEvent.ACTION_UP:
                        Log.w("touched","up");
                        startScroll();
                        return true;
                        //break;
                }

                return false;
            }
        });

并使用以下Gradle:

compile ('cn.trinea.android.view.autoscrollviewpager:android-auto-scroll-view-pager:1.1.2') 
{
   exclude module: 'support-v4'
}

-1

您可以识别ViewPager的触摸事件,并在此基础上停止和启动滑块。就像下面一样,您将获得触摸事件,然后可以维护您的线程工作。

viewPager.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
    // put your code here to stop and start slide, means put your thread code here..
                    return false;
                }
            });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接