2017-02-26 76 views

回答

3

该代码做你所说的。你说onStart:

end.add(Calendar.MINUTE, 4); 
end.add(Calendar.SECOND, 5); 

它告诉系统你想在4分4秒开始倒计时。相反,这样做:

end.add(Calendar.SECOND, 45); 

编辑

了好一会儿才明白你的意思。首先,转到github并将TickTockView复制到您自己的项目中。删除对原始项目的依赖关系。打开文件,并在onDraw有,更改:

if (mCircleDuration == DURATION_TOTAL && mStartTime != null) { 
     long totalTime = mEndTime.getTimeInMillis() - mStartTime.getTimeInMillis(); 
     float percentage = (((float) mTimeRemaining)/((float) totalTime)); 
     angle = 360f * percentage; 
    } 

到:

if (mCircleDuration == DURATION_TOTAL && mStartTime != null) { 
     long totalTime = mEndTime.getTimeInMillis() - mStartTime.getTimeInMillis(); 
     float percentage = (((float) mTimeRemaining)/((float) 45000));//45000(ms) = 45 seconds 
     angle = 360f * percentage; 
    } 

在你的XML文件,其中圆的定义,添加:

app:tickCircleDuration="total_time" 

而且通过这样做,你只需要在TickTockView中更改onDraw中的totalTime。请记得在XML文件中更新包名,以指向您保存文件的位置,而不是原始项目。

仅供参考,this是你应该复制

+0

这不是我的意思。我的问题是这个圈子在45秒内没有完成一个完整的循环。我现在会用GIF更新这个问题。 – Me123

+0

它在45秒内没有完成一个完整的循环,因为你告诉它从4分5秒倒数。或240秒。当您的周期请求总共为245秒时,它无法在45秒内完成一个周期。 – Zoe

+0

GIF没有解释任何东西比图像 – Zoe

1

更改下面的代码文件到

Calendar end = Calendar.getInstance(); 
    end.add(Calendar.MINUTE, 4); 
    end.add(Calendar.SECOND, 5); 

Calendar end = Calendar.getInstance(); 
    end.add(Calendar.MINUTE, 0);//O minute 
    end.add(Calendar.SECOND, 45);//45 second 
2

的好方法是透过Android所提供CountDownTimer类及时向下计数。我最近在我的游戏中使用它,使用起来很简单。首先你

CountDownTimer timer = new CountDownTimer(45000, 1000) { 

     // 45000 milliseconds countdown and 1000 milliseconds decrement at each tick. 

    public void onTick(long millisUntilFinished) { 

     //you can change your UI here based on time 

    } 

    public void onFinish() { 

      // you can define something to happen when timer ends. 

    } 
    }; 

timer.start();