过去几天我一直在试图解决这个简单的问题..如果有人可以给我一个解决方案的提示,那就太棒了。这就是场景,
我在我的应用程序中有一个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等等。
如果我在任何地方都不清楚,请告诉我。任何指针都会非常有帮助。