线程和自动ViewPager问题 - Android?

时间:2013-08-20 11:19:23

标签: android android-viewpager

过去几天我一直在试图解决这个简单的问题..如果有人可以给我一个解决方案的提示,那就太棒了。这就是场景,

我在我的应用程序中有一个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等等。

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

0 个答案:

没有答案