Изменить imageView со временем дня - PullRequest
0 голосов
/ 18 ноября 2018

Я пытаюсь обновить imageView в зависимости от времени суток, но по какой-то причине он не работает и не получает никаких ошибок компиляции.

Код:

     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            ImageView imageView = findViewById(R.id.imageView);
            Calendar cal = Calendar.getInstance();
            int timeOfDay = cal.get(Calendar.HOUR_OF_DAY);
            if (timeOfDay >=20 && timeOfDay <=4) {
                imageView.setImageResource(R.drawable.night);
            }else if (timeOfDay >= 5 && timeOfDay <= 8) {
                imageView.setImageResource(R.drawable.sunset);

            } else if (timeOfDay >= 9 && timeOfDay <= 16) {
                imageView.setImageResource(R.drawable.morning);

            }
            else if (timeOfDay >= 17 && timeOfDay <= 19) {
                imageView.setImageResource(R.drawable.sunset);
            }
        }

Код Activity.xml:

 <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="606dp"
        android:scaleType="fitXY"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

Ответы [ 3 ]

0 голосов
/ 18 ноября 2018

Это if (timeOfDay >=20 && timeOfDay <=4) условие не выполнено (ложно). Потому что нет времени, которое> = 20 и <= 4 </p>

в зависимости от вашего состояния, вам также нужны эти два условия

   if (timeOfDay >=0 && timeOfDay <=4)

и

   else if (timeOfDay >=20 && timeOfDay <=24)

добавить эти два и связанные изображения для него и удалить, не выполняя вышеупомянутое условие

вы можете сделать это, как показано ниже

   if (timeOfDay >= 5 && timeOfDay <= 8) {
            imageView.setImageResource(R.drawable.sunset);

        } else if (timeOfDay >= 9 && timeOfDay <= 16) {
            imageView.setImageResource(R.drawable.morning);

        }
        else if (timeOfDay >= 17 && timeOfDay <= 19) {
            imageView.setImageResource(R.drawable.sunset);
        }
        else{
             //exectue this for 0-4 and 20-24
            imageView.setImageResource(R.drawable.night);
        }
0 голосов
/ 18 ноября 2018

(timeOfDay> = 20 && timeOfDay <= 4) </p>

Состояние не достижимо. Потому что нет времени, которое> = 20 и <= 4. В этом случае, потому что timeOfDay всегда> 0, поэтому измените код на

(timeOfDay> = 20 || timeOfDay <= 4) </p>

И не забудьте переформатировать ваш код.

0 голосов
/ 18 ноября 2018

Ваш код работает только с 5 до 19, потому что (timeOfDay >=20 && timeOfDay <=4) всегда возвращает false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...