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.