我在考虑动态显示文字,我有一个问题。
我有很长的字符串....几千个字符或更多。而且我的价值随着时间的推移而增加。现在开始时值为0我想要什么都不显示(到目前为止很容易:))但是随着值的增加,我希望字符串慢慢显示(让每个人说50个'增量' 39;)......实现打字效果是理想的。
我的解决方案是在onCreate方法中声明空字符串
string displayedText = "";
然后我在我的处理程序中调用显示函数来等待增量
private Handler mHandler = new Handler() {
@Override public void handleMessage(Message msg) {
switch (msg.what) {
case VALUE_CHANGE:
value = (int)msg.arg1; // get value from message
mValueView.setText("" + mStepValue); // display value on screen
//here call the function to display text
break;
default:
super.handleMessage(msg);
}
}
};
这到目前为止工作......现在有问题(对我来说)部分显示文字。该值可以以不同的时间从1秒递增到10秒(当值改变时随机发送)
答案 0 :(得分:0)
使用延迟讯息。不要有大量的UI。
private boolean isCanChange = true;
private Handler mHandler = new Handler() {
@Override public void handleMessage(Message msg) {
switch (msg.what) {
case VALUE_CHANGE:
value = (int)msg.arg1; // get value from message
mValueView.setText("" + mStepValue); // display value on screen
//here call the function to display text
isCanChange = true;
break;
default:
super.handleMessage(msg);
}
}
};
while(isParsingRunning) {
//running parse thread
if(isCanChange) {
isCanChange = false;
mHandler.sendEmptyMessageDelayed(VALUE_CHANGE, 1000);// update every second
}
}
降低更新速度
public void parseDocument(...)
{
long startParsingTime= System.currentTimeMillis();
while(isParsing) {
// parse
if(isCanChange) {
isCanChange = false;
mHandler.sendEmptyMessageDelayed(VALUE_CHANGE, (System.currentTimeMillis() - startParsingTime)/1000);// update every second
}
}
}
注意:可能你需要施放。我的手上没有任何IDE。
答案 1 :(得分:0)
使用substring
方法从完整的String
中提取。
private String extractText(String input, int length)
{
return input.substring(0, length - 1);
}