私は周りを見回しましたが、これがどのように機能するかはよくわかりません。私が探しているものに本当に近い唯一のスレッドには、404の情報がありました。
アクティビティでは、4つの画像をレイアウトしています。15秒ごとに別の画像に変更してもらい、別のアクティビティにリンクできるように、どの画像がそこにあるかを追跡します。スレッドが機能して投稿してSystem.out.println()
いますが、UIが変更されておらず、許可する方法がわかりません。これが私がこれまでに持っているものです。
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();
}