Android块每隔100ms更改一次TextView值

时间:2015-02-24 13:16:28

标签: android textview

我有一个TextView minutesValue

和听众:

 minutesView.addTextChangedListener(new TextWatcher() {
            public String oldMinutesText;

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                String currentText = s.toString();
                boolean b = !currentText.equals(oldMinutesText);
                if (b) {
                    oldMinutesText = currentText;
                    mSoundPlayer.playClickSound(); // Play more times than expected.
                }
            }
        });

我每隔1-10ms将值设置为TextView时有一个逻辑。

setMinutes 0
setMinutes 0
setMinutes 0
setMinutes 20 //这里我传递新值
setMinutes 0 //在10ms内再次传递新值
setMinutes 0

所以我采取了下一个效果 - textview不会重新绘制,但逻辑有效。 TextView显示 0 ,但实际值 20 ,并且由于值变化如此之快,我认为TextView没有及时重新绘制得如此之快。在上面的示例中,当textview真正改变了含义并重新绘制时,我需要播放声音。

我想允许set,每100ms一个新值(块重绘ms <100)。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

调用setMinutes的循环是什么样的?如果是这样的话:

setMinutes(20);
sleep(100);
setMinutes(0);

UI线程没有机会进行重绘。