kotlin 如何根据天气自动改变背景?

yizd12fk  于 2023-10-23  发布在  Kotlin
关注(0)|答案(1)|浏览(104)

我正在使用Kotlin中的openweathermap API构建一个当前天气应用程序,并希望背景根据天气状态而变化,例如。在冬天下雪的时候,背景是白雪皑皑的(从我的可绘制文件夹)等等。
下面是一个函数,应该根据id改变背景,但我需要使其自动。

private fun updateUI(id: Int){    
    if(id in 200..232){    
        binding.ivWeatherBg.setImageResource(R.drawable.thunderstorm_bg)    
        binding.ivWeatherIcon.setImageResource(R.drawable.thunderstorm)    
    } else if (id in 300..321){    
        binding.ivWeatherBg.setImageResource(R.drawable.drizzle_bg)    
        binding.ivWeatherIcon.setImageResource(R.drawable.drizzle)    
    } else if (id in 500..531){    
        binding.ivWeatherBg.setImageResource(R.drawable.drizzle_bg)    
        binding.ivWeatherIcon.setImageResource(R.drawable.rain)    
    } else if (id in 600..620){    
        binding.ivWeatherBg.setImageResource(R.drawable.snow_bg)    
        binding.ivWeatherIcon.setImageResource(R.drawable.snow)    
    } else if (id in 701..781){    
        binding.ivWeatherBg.setImageResource(R.drawable.mist_bg)    
        binding.ivWeatherIcon.setImageResource(R.drawable.mist)    
    } else if (id == 800){    
        binding.ivWeatherBg.setImageResource(R.drawable.clear_bg)    
        binding.ivWeatherIcon.setImageResource(R.drawable.clear)    
    } else {    
        binding.ivWeatherBg.setImageResource(R.drawable.clouds_bg)    
        binding.ivWeatherIcon.setImageResource(R.drawable.clouds)    
    }    
}

我似乎已经准备好了一切,但当我添加背景变化功能时,这一切都取决于我需要编写的天气id,我想根据天气自动完成这一切。

798qvoo8

798qvoo81#

我建议定义一个长时间运行的后台service,它以一定的间隔运行。类似于question
使用alarm manager,您可以触发服务代码按时间间隔运行。
在每隔一段时间运行的代码中,您可以进行API调用以获取当前天气并相应地更新背景照片。

相关问题