Android динамически задает ширину представления с помощью CountDownTimer

Привет, у меня есть таймер обратного отсчета, и я хочу добавить панель, которая уменьшается по ширине, поскольку таймер обратного отсчета запускает свой метод onTick(). необходимо настроить его ширину и размер экрана и таймер обратного отсчета. Я intially передаю значение int, которое сохраняется, когда таймер приостанавливается, например, если точки равны 100, ширина баров составляет 100% от отсчета обратного отсчета экрана в течение 10 секунд, точки становятся 80 точками, поэтому полоса должна занимать 80% экран. Кто-нибудь знает, как это сделать, у меня не было большого опыта динамического создания просмотров, которые я использовал для этого в xml?

heres мой таймер

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 ответ

Регулировка ширины представлений "на лету" может быть немного сложной, так как макет, который имеет вид, может также измениться.

Вы можете написать свой собственный взгляд. Просто переопределите onDraw() и нарисуйте заполненный прямоугольник с помощью Canvas. Установите ширину вашего представления в match_parent. А при рисовании вы можете рассчитать заполненную ширину getWidth() * percentage/100f.

Кстати, было бы не легче, если бы вы просто использовали горизонтальный индикатор прогресса?

licensed under cc by-sa 3.0 with attribution.