嗨,我有一个倒数计时器,我想在倒数计时器运行其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
}
答案 0 :(得分:1)
动态调整视图宽度可能有点棘手,因为视图所属的布局也可能会发生变化。
您可以编写自己的视图。只需覆盖onDraw()
,然后使用Canvas
绘制填充的矩形。将视图的宽度设置为match_parent
。绘制时,您可以按getWidth() * percentage /100f
计算填充宽度。
顺便说一下,如果只使用水平进度条会不会更容易?