2014-05-10 35 views
0

嗨,我有一个倒数计时器和即时通讯想添加一个条宽度减少作为倒数计时器运行其onTick()方法。酒吧需要根据屏幕尺寸和倒数计时器调整其宽度。我在内部传递一个int值,当定时器暂停时保存所以例如,如果点数是100,那么酒吧的宽度是屏幕100%的倒数计数为10秒,点数变为80点,所以酒吧应该占用80%的折扣屏幕。有谁知道如何做到这一点,我没有太多的经验动态创建视图即时通讯使用它在XML中做呢?android使用CountDownTimer动态设置视图的宽度

我的继承人定时器

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计算填充宽度。

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

+0

我怎样才能达到与进度条相同的效果 –

+0

只需将'style =“?android:attr/progressBarStyleHorizo​​ntal”'添加到布局xml以使进度条保持水平。使用'setMax()'和'setProgress()'调整值。 – Onur