在线程 Android 中查看寻呼开关模拟



我想在我的activity中运行类似照片显示的东西。我将片段加载到ViewPager,然后模拟切换视图。

Runnable runnable = new Runnable(){
        @Override
        public void run() {
            pager.setCurrentItem(0);
            while(true){
                try {
                    Thread.sleep(Settings.showDelay*1000);
                    if(pager.getCurrentItem()==photos.size()-1){
                        pager.setCurrentItem(0);
                                                      Thread.sleep(Settings.showDelay*1000);
                    }else
                        pager.setCurrentItem(pager.getCurrentItem()+1, true);
                } catch (InterruptedException e) {
                }
        }
        }
    };
    Thread thread = new Thread(runnable);
    thread.start();  

我把它放在我的onCreate方法中,对于 3 张图像,它可以完美运行,但对于 4 张或更多图像,它:

java.lang.IllegalStateException: Must be called from main thread of process

尝试下面的代码来切换视图寻呼机。我已经用过它,它对我来说就像魅力一样。

Timer timer = new Timer();
public void SwitchPage(int seconds) {
    timer = new Timer(); // At this line a new Thread will be created
timer.schedule(new SwitchPageTask(), 6000, seconds * 1000); // delay in milliseconds
}

class SwitchPageTask extends TimerTask {
    @Override
    public void run() {
        // As the TimerTask run on a separate thread from UI thread we have
        // to call runOnUiThread to do work on UI thread.
        runOnUiThread(new Runnable() {
            public void run() {
                                  if(pager.getCurrentItem()==photos.size()-1)
                                  {
                                       pager.setCurrentItem(0);
                                  }else
                {pager.setCurrentItem(pager.getCurrentItem() + 1);}
            }
        });
    }
}

只需通过几秒钟即可切换查看页。它将继续运行并切换到下一个项目。

      SwitchPage(6); //it will switch the view on every 6 seconds.

最新更新