以定时间隔作为计数器,将值从1美元增加到125万美元

时间:2016-01-22 19:11:38

标签: java android loops textview increment

可视化:数字从$ 0开始增加到125万美元,并且使用每个增量之间的时间间隔(大概50-100毫秒?)在UI上显示增量过程。我尝试设置它,但遗憾的是,下面的代码失败了。

double maxValue = 10;
double currentValue = 0;

@Override
    public void onCreate(Bundle savedInstanceState) {
    //more code

        value_text = (TextView) rootView.findViewById(R.id.value_text);

        for (int i = 0; i < maxValue; i++) {
            if (currentValue != maxValue) {
                try {
                    currentValue++;
                    value_text.setText(String.valueOf(currentValue));
                    Thread.sleep(50);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }

棘手的部分: textview将从1美元增加到125万美元,这意味着我们必须在达到第一个百万之后更改为小数。并且快速地在UI上显示每一步。

你们有解决方案来实现这种增量效应吗?

修改

我甚至对现有的图书馆(如果有的话)感到满意,以实现这种递增效果

1 个答案:

答案 0 :(得分:1)

这样你就永远不会看到更新了,因为你在Main Thread(或android世界中的Looper)上做的每一个操作都是如此。你应该尝试这样的事情:

private final static long MAX_VALUE = 1000000L;
private final static int TIME = 100L;

private final Handler handler = new Handler();
private long value = 1;


private void scheduleIncrementation() {
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            if (value < MAX_VALUE) {
                textView.setText(String.valueOf(value++));
            }

            handler.postDelayed(this, TIME);
        }
    }, TIME);
}

在onCreate方法中只需调用:

scheduleIncrementation();