1

在过去的几天里,我一直在努力解决这个简单的问题。如果有人能给我一个解决这个问题的提示,那就太好了。这是场景,

我的应用程序中有一个 viewPager,它显示了 10 个不同的图像(比如 a1.png、b1.png、c1.png、d1.png 等),我使用 Threads 自动对图像进行幻灯片放映。当用户点击图像 - 我必须显示 a2.png。如果用户再次点击相同的图像,我必须显示 a3.png 等等。如果用户离开一段时间,点击后,线程将运行并自动显示 a3.png,b3.png,c3.png。当用户点击图像时,我正在设置缩小/缩小动画。

我的问题是当用户点击 a1.png 时它应该显示 a2.png,但它显示的是 b2.png。这是代码,

     ... some code ...
    int currentPage = 0; 
    pageSwitcher(10);  //Switch Pages for every 10 seconds

     ... some code ...

    public void pageSwitcher(int seconds) {
    timer = new Timer(); // At this line a new Thread will be created
    timer.scheduleAtFixedRate(new RemindTask(), 0, seconds * 1000); // delay                                                                        // in milliseconds
}

class RemindTask extends TimerTask {
        @Override
    public void run() {
            runOnUiThread(new Runnable() {
            public void run() {

                if (currentPage > 10) { 
                    viewPager.setCurrentItem(currentPage=0);

                } else {
                    viewPager.setCurrentItem(currentPage++);
                }
            }
        });
    }
}

    public boolean onSingleTapConfirmed(MotionEvent e) {

           //Modify the adapter with different set of array and set it to ViewPager

           ... some code ...

           viewPager.setAdapter(adapter); 

           viewPager.setCurrentItem(currentPage);
       viewPager.startAnimation(anim);
    }

    // I'm cancelling the current running timer when the animation starts and call PageSwitcher function when the animation ends as below,

            anim = AnimationUtils.loadAnimation(context, R.anim.scale);
    anim.setAnimationListener(new AnimationListener() {
        public void onAnimationStart(Animation animation) {
            timer.cancel();
        }
        public void onAnimationRepeat(Animation animation) {}
        public void onAnimationEnd(Animation animation) {
             pageSwitcher(10);
        }
    });

如上所述,问题是当用户点击图像(比如 c3.png)时,它应该显示 c4.png 并且线程应该运行......但它显示的是 d4.png 等等。

如果我不清楚任何地方,请告诉我。任何指针都会很有帮助。

4

0 回答 0