0

我一直在这个论坛上搜索,但我找不到我的问题的任何答案。我有以下问题:

我有一个图像视图和两个文本,我想在加载下一个活动之前更改选择的颜色以显示视觉反馈。

@Override
public void onClick(View v) {
   openFormOverviewButton.setColorFilter(0x22FFFFFF, Mode.SRC_ATOP);
   openFormOverviewTitle.setTextColor(0xFF00851B);
   openFormOverviewText.setTextColor(0xFF00851B);
   Intent tki = new Intent();
   tki.setClass(getApplication(), DataCollectorFormOverviewActivity.class);
   startActivity(tki);
}

我希望更改按钮和文本,然后开始新的活动。但是,文本没有改变,活动开始。如果我在 UI 线程 (runOnUiThread(new Runnable() {...}) 上调用可运行对象中的三行,那么更改会在活动启动之前应用。这实际上很奇怪,因为 onClick 方法是在主线程又名 UI 线程。

这是否意味着对 UI 线程的更改不会立即在 UI 线程上执行?还是我做错了什么?

最好的,亚当

4

1 回答 1

2

正确的。对 UI 元素的更改不会立即执行。它们会在下次 UI 循环运行时执行,也就是在您释放控制之后。这就是为什么您不能在 UI 线程上执行昂贵操作的原因。

于 2011-01-17T21:05:23.977 回答