我正在使用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,我想根据天气自动完成这一切。
1条答案
按热度按时间798qvoo81#
我建议定义一个长时间运行的后台service,它以一定的间隔运行。类似于question。
使用alarm manager,您可以触发服务代码按时间间隔运行。
在每隔一段时间运行的代码中,您可以进行API调用以获取当前天气并相应地更新背景照片。