随时间更改imageView

时间:2018-11-18 07:45:08

标签: java android kotlin imageview

我正在尝试根据一天中的时间更新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 :(得分:1)

if (timeOfDay >=20 && timeOfDay <=4)条件未执行(假)。因为没有时间是> = 20和<= 4

根据您的情况,您也需要同时满足这两个条件

   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);
        }

答案 1 :(得分:0)

您的代码只能在5到19之间工作,因为(timeOfDay >=20 && timeOfDay <=4)始终返回false。

答案 2 :(得分:0)

  

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

无法达到条件。因为没有时间> = 20和<= 4。在这种情况下,因为timeOfDay始终> 0,所以将代码更改为

  

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

不要忘记重新格式化代码。