上一篇文章中我们解释了为什么要在Android Wear重写这个计时器app(因为之前已经在“I’m Watch”里面开发过了),下面我们就来看看代码。
我们以这个app的一个核心类开始,这个类负责控制计时器的状态。这个类包含了4个long类型的变量:第一个代表计时器开始的时间;第二个代表计时器停止的时间(在运行中的话,它就是0);第三个代表计时器停表的时间(如果当前没有停表,那它也是0),第四个代表总共停表的时长。通过这四个变量我们就可以维持计时器的状态了,还可以通过计算得到我们需要展示的其他信息。这个类的基本功能就是都是为了操作这些变量,即维持计时器的这些状态。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
; html-script: false ] public final class MatchTimer { . . . public static final int MINUTE_MILLIS = 60000; private long start; private long currentStoppage; private long totalStoppages; private long end; . . . public long getElapsed() { if (isRunning()) { return System.currentTimeMillis() - start; } if (end > 0) { return end - start; } return 0; } public boolean isRunning() { return start > 0 && end == 0; } public boolean isPaused() { return currentStoppage > 0; } public int getElapsedMinutes() { return (int) ((System.currentTimeMillis() - start) / MINUTE_MILLIS); } public long getTotalStoppages() { long now = System.currentTimeMillis(); if (isPaused()) { return totalStoppages + (now - currentStoppage); } return totalStoppages; } public long getPlayed() { return getElapsed() - getTotalStoppages(); } public long getStartTime() { return start; } . . . } |
这些都是基本的java代码,就不费时间讲了。下面的函数更高级一些,可以操作计时器的状态。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
; html-script: false ] public final class MatchTimer ayon-5812c358a2ec8501334394-2"> public final class MatchTimer 这个计时器app(因为之前已经在“I’m Watch”里面开发过了),下面我们就来看看代码。
我们以这个app的一个核心类开始,这个类负责控制计时器的状态。这个类包含了4个long类型的变量:第一个代表计时器开始的时间;第二个代表计时器停止的时间(在运行中的话,它就是0);第三个代表计时器停表的时间(如果当前没有停表,那它也是0),第四个代表总共停表的时长。通过这四个变量我们就可以维持计时器的状态了,还可以通过计算得到我们需要展示的其他信息。这个类的基本功能就是都是为了操作这些变量,即维持计时器的这些状态。
这些都是基本的java代码,就不费时间讲了。下面的函数更高级一些,可以操作计时器的状态。
|