我有一个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)。我怎么能这样做?
答案 0 :(得分:0)
调用setMinutes的循环是什么样的?如果是这样的话:
setMinutes(20);
sleep(100);
setMinutes(0);
UI线程没有机会进行重绘。