#android #android-studio #background #scheduled-tasks #weather
#Android #android-studio #фон #запланированные задачи #Погода
Вопрос:
В настоящее время я работаю над проектом погоды в Android Studio, где я хочу планировать изменения изображения в моем фоновом режиме дизайна каждые 5 секунд, у меня есть все ресурсы изображения в моем каталоге @drawable. Я просмотрел базовый учебник, в котором они объяснили некоторые вещи в демо, но это лишь немного помогло и не совсем меня устроило, я все еще в замешательстве, потому что получаю много ошибок, но в настоящее время я попробовал эти несколько кодов:
HomeActivity.java:
public class HomeActivity extends AppCompatActivity {
public static int count=0;
int[] drawablearray=new int[]{R.drawable.burj_khalifa,R.drawable.central_bank_of_nigeria,R.drawable.eiffel_tower,R.drawable.hong_kong,R.drawable.statue_of_liberty};
Timer _t;
ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
imageView = findViewById(R.id.imageView);
ImageView = (ConstraintLayout) findViewById(R.id.lnMain);
_t = new Timer();
_t.scheduleAtFixedRate(new TimerTask); {
public void run(); {
runOnUiThread(new Runnable() { // run on ui thread
@Override
public void run() {
if (count < drawablearray.length) {
lnMain.setBackgroundDrawable(drawablearray[count]);
count = (count 1) % drawablearray.length;
}
}
});
}
}, 5000, 5000);
}
}
Есть идеи о том, как организовать его в соответствии с дизайном?
Ответ №1:
final Handler h = new Handler();
Runnable r = new Runnable() {
public void run() {
Home.this.getWindow.setBackgroundDrawableResource(drawableArray[count]);
cout = (count 1) % drawableArray.length;
h.postDelayed(this, 5000);
}
};
Ответ №2:
final Runnable r = new Runnable() {
public void run() {
imageView.setBackgroundDrawableResource(drawablearray[count]);
count = (count 1)%(drawablearray.length);
handler.postDelayed(this, 5000);
}
};
И вызов выглядит так:
handler.postDelayed(r,0);
Это вызовет runnable для выполнения и обработки.postDelayed будет запускать метод каждые 5000 миллисекунд.
Ответ №3:
Я уже исправил ошибку, используя constraintlayout вместо imageview и inmain. Я также получил идентификатор для макета:
constraintLayout = findViewById(R.id.layout);
constraintLayout.setBackgroundResource(R.drawable.burj_khalifa);
_t = new Timer();
_t.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() { // run on ui thread
@Override
public void run() {
if (count < drawable.length) {
constraintLayout.setBackgroundResource(drawable[count]);
count = (count 1) % drawable.length;
}
}
});
}
}, 5000, 5000);
}
}