从Java更新协调器布局背景(动态)

时间:2016-08-08 05:27:43

标签: java android

我在开发天气应用程序。 我的主要活动布局中有一个协调员布局,我必须根据其状况更新背景(晴天,晴朗的夜晚等等)。 我一直在使用以下代码: coordinatorLayout = (CoordinatorLayout)findViewById(R.id.viewApp); coordinatorLayout.setBackground(getResources().getDrawable(R.drawable.sunny_day); 它第一次应用程序运行时工作正常,但随着我改变位置,它给了我强制停止错误。我认为问题是因为我从java(动态)更新UI。所以我尝试使用以下代码,而且没有强制停止了:

                MainActivity.this.runOnUiThread(new Runnable() {
                public void run() {
                    coordinatorLayout.setBackground(getResources().getDrawable(R.drawable.sunny_day));
                }
            });

现在我有另一个问题! 当我运行具有特定位置的应用程序时,例如' dallas'它工作得很好,并正确显示背景。但是当我寻找像上海这样的另一个城市时,由于它有不同的天气条件,我希望它能改变背景,但是背景会改变一秒,然后立即回到上一个! 这是我设置背景的方法:

    private String setWeatherIcon(int actualId, int hourOfDay) {
    int id = actualId / 100;
    String icon = "";
    if (actualId == 800) {
        if (hourOfDay >= 7 && hourOfDay < 20) {
            MainActivity.this.runOnUiThread(new Runnable() {
                public void run() {
                    coordinatorLayout.setBackground(getResources().getDrawable(R.drawable.sunny_day));
                }
            });
            icon = this.getString(R.string.weather_sunny);

        } else {
            MainActivity.this.runOnUiThread(new Runnable() {
                public void run() {
                    coordinatorLayout.setBackground(getResources().getDrawable(R.drawable.sunny_day));
                }
            });
            icon = this.getString(R.string.weather_clear_night);
        }
    } else {
        switch (id) {
            case 2:
                icon = this.getString(R.string.weather_thunder);
                break;
            case 3:
                icon = this.getString(R.string.weather_drizzle);
                break;
            case 7:
                icon = this.getString(R.string.weather_foggy);
                break;
            case 8:
                icon = this.getString(R.string.weather_cloudy);
                break;
            case 6:
                icon = this.getString(R.string.weather_snowy);
                break;
            case 5:
                icon = this.getString(R.string.weather_rainy);
                break;
        }
    }
    return icon;
}

顺便说一下,到目前为止,我实现了前两个条件。 有人能给我一点关于这个UI线程是如何工作的暗示吗?!

0 个答案:

没有答案