我環顧四周,但我不太清楚這是如何工作的,唯一真正接近我所尋找的線索有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