我环顾四周,但我不太清楚这是如何工作的,唯一真正接近我所寻找的线索有404条信息。更改用户界面的定时事件?
在一项活动中,我列出了四张图片。我希望他们每15秒更换一张不同的图像,然后我会跟踪哪些图像在那里,让他们链接到另一个活动。我有线程工作和张贴到System.out.println()
,但用户界面没有改变,我不知道如何允许它。这是迄今为止我所拥有的。
public int curImage1 = 1;
public int curImage2 = 2;
public int curImage3 = 3;
public int curImage4 = 4;
onCreate()
方法:
// ...
imagesHandler = new Handler();
startImageSwapping();
Runnable swapImages = new Runnable() {
@Override
public void run() {
handleUpdates();
imagesHandler.postDelayed(swapImages, 3000);
}
};
public void handleUpdates() {
if (curImage1 == 1) {
((ImageView) findViewById(R.id.main_image_1)).setImageDrawable(
getResources().getDrawable(R.drawable.logo));
curImage1 = 5;
}
if (curImage1 == 5) {
((ImageView) findViewById(R.id.main_image_1)).setImageDrawable(
getResources().getDrawable(R.drawable.main_image_1));
curImage1 = 1;
}
System.out.println("TEST");
}
public void startImageSwapping() {
imageThreadIsRunning = true;
swapImages.run();
}
public void stopImageSwapping() {
imagesHandler.removeCallbacks(swapImages);
imageThreadIsRunning = false;
}
应用改变后电流的代码。仍然没有这样做,但希望保持这篇文章对其他任何人都适用。
Runnable swapImages = new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (curImage1 == 1) {
((ImageView) findViewById(R.id.main_image_1)).setImageDrawable(
getResources().getDrawable(R.drawable.logo));
curImage1 = 5;
}
if (curImage1 == 5) {
((ImageView) findViewById(R.id.main_image_1)).setImageDrawable(
getResources().getDrawable(R.drawable.main_image_1));
curImage1 = 1;
}
System.out.println("TEST");
}
});
imagesHandler.postDelayed(swapImages, 3000);
}
};
public void startImageSwapping() {
imageThreadIsRunning = true;
swapImages.run();
}
public void stopImageSwapping() {
imagesHandler.removeCallbacks(swapImages);
imageThreadIsRunning = false;
}
@Override
protected void onDestroy() {
stopImageSwapping();
super.onDestroy();
}
@Override
protected void onPause() {
stopImageSwapping();
super.onPause();
}
@Override
protected void onStop() {
stopImageSwapping();
super.onStop();
}
@Override
protected void onStart() {
if (!imageThreadIsRunning)
startImageSwapping();
super.onStart();
}
@Override
protected void onResume() {
if (!imageThreadIsRunning)
startImageSwapping();
super.onResume();
}
OK我试图改变swapImages到这一点,但我把代码handleUpdates()的run()函数。还是不行。它会发布到控制台,但不会更新UI。 – 2013-03-03 00:29:24