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