android使用CountDownTimer动态设置视图的宽度

时间:2014-05-10 09:55:59

标签: android

嗨,我有一个倒数计时器,我想在倒数计时器运行其onTick()方法时添加一个宽度减小的栏。酒吧需要根据屏幕尺寸和倒数计时器调整其宽度。我最初传入一个在暂停计时器时保存的int值,例如,如果点数为100,则条形宽度为屏幕倒数计数的100%,持续10秒,点数将变为80点,因此条形图应该占80%的折扣屏幕。有谁知道如何做到这一点我没有太多经验动态创建我曾经在xml中使用的视图?

继承人我的计时器

public void startTimer(){
    try {
     points = Integer.valueOf(data.getString("points"));
     counter = new MyCount(points/2 * 1000,1000);
     counter.start();

    } catch (NumberFormatException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (JSONException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

}

public void pauseTimer(){

    try {
        counter.cancel();
        data.put("points", String.valueOf(points));
        updateData();

    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}


public class MyCount extends CountDownTimer{
    public MyCount(long totalTime, long countDownInterval) {
        super(totalTime, countDownInterval);
    }

    @Override
    public void onFinish() {
    pauseTimer();
    }

    @Override
    public void onTick(long millisUntilFinished) {
    points = points - 2; 
    //set length of bar based on int value of points
        // Countdown bar to reduce width on countdown
    // if width is less than half way change color of countdown bar to orange
    // if width is less than a 3rd change color to red  

    }

1 个答案:

答案 0 :(得分:1)

动态调整视图宽度可能有点棘手,因为视图所属的布局也可能会发生变化。

您可以编写自己的视图。只需覆盖onDraw(),然后使用Canvas绘制填充的矩形。将视图的宽度设置为match_parent。绘制时,您可以按getWidth() * percentage /100f计算填充宽度。

顺便说一下,如果只使用水平进度条会不会更容易?