1.界面布局:
<code class="hljs xml has-numbering"><span class="hljs-tag"><<span class="hljs-title">LinearLayout</span> <span class="hljs-attribute">xmlns:android</span>=<span class="hljs-value">"http://schemas.android.com/apk/res/android"</span> <span class="hljs-attribute">xmlns:tools</span>=<span class="hljs-value">"http://schemas.android.com/tools"</span> <span class="hljs-attribute">android:layout_width</span>=<span class="hljs-value">"match_parent"</span> <span class="hljs-attribute">android:layout_height</span>=<span class="hljs-value">"match_parent"</span> <span class="hljs-attribute">android:orientation</span>=<span class="hljs-value">"vertical"</span> ></span> <span class="hljs-tag"><<span class="hljs-title">TextView </span> <span class="hljs-attribute">android:id</span>=<span class="hljs-value">"@+id/date_txt"</span> <span class="hljs-attribute">android:layout_width</span>=<span class="hljs-value">"fill_parent"</span> <span class="hljs-attribute">android:layout_height</span>=<span class="hljs-value">"wrap_content"</span> <span class="hljs-attribute">android:layout_marginTop</span>=<span class="hljs-value">"20dp"</span> <span class="hljs-attribute">android:text</span>=<span class="hljs-value">"点击设置日期"</span> <span class="hljs-attribute">android:textSize</span>=<span class="hljs-value">"20dp"</span> <span class="hljs-attribute">android:textColor</span>=<span class="hljs-value">"#ff0000"</span> /></span> <span class="hljs-tag"><<span class="hljs-title">TextView </span> <span class="hljs-attribute">android:id</span>=<span class="hljs-value">"@+id/time_txt"</span> <span class="hljs-attribute">android:layout_width</span>=<span class="hljs-value">"fill_parent"</span> <span class="hljs-attribute">android:layout_height</span>=<span class="hljs-value">"wrap_content"</span> <span class="hljs-attribute">android:layout_marginTop</span>=<span class="hljs-value">"20dp"</span> <span class="hljs-attribute">android:textSize</span>=<span class="hljs-value">"20dp"</span> <span class="hljs-attribute">android:textColor</span>=<span class="hljs-value">"#ff0000"</span> <span class="hljs-attribute">android:text</span>=<span class="hljs-value">"点击设置时间"</span> /></span> <span class="hljs-tag"><<span class="hljs-title">RelativeLayout </span> <span class="hljs-attribute">android:layout_width</span>=<span class="hljs-value">"fill_parent"</span> <span class="hljs-attribute">android:layout_marginTop</span>=<span class="hljs-value">"20dp"</span> <span class="hljs-attribute">android:background</span>=<span class="hljs-value">"@android:color/darker_gray"</span> <span class="hljs-attribute">android:layout_height</span>=<span class="hljs-value">"120dp"</span> ></span> <span class="hljs-tag"><<span class="hljs-title">ImageView </span> <span class="hljs-attribute">android:layout_width</span>=<span class="hljs-value">"fill_parent"</span> <span class="hljs-attribute">android:layout_height</span>=<span class="hljs-value">"fill_parent"</span> <span class="hljs-attribute">android:adjustViewBounds</span>=<span class="hljs-value">"true"</span> <span class="hljs-attribute">android:scaleType</span>=<span class="hljs-value">"centerInside"</span> <span class="hljs-attribute">android:src</span>=<span class="hljs-value">"@drawable/time_panel"</span> /></span> <span class="hljs-tag"><<span class="hljs-title">ImageView </span> <span class="hljs-attribute">android:id</span>=<span class="hljs-value">"@+id/time_minute"</span> <span class="hljs-attribute">android:layout_width</span>=<span class="hljs-value">"fill_parent"</span> <span class="hljs-attribute">android:layout_height</span>=<span class="hljs-value">"fill_parent"</span> <span class="hljs-attribute">android:adjustViewBounds</span>=<span class="hljs-value">"true"</span> <span class="hljs-attribute">android:scaleType</span>=<span class="hljs-value">"centerInside"</span> <span class="hljs-attribute">android:src</span>=<span class="hljs-value">"@drawable/time_minute"</span> /></span> <span class="hljs-tag"><<span class="hljs-title">ImageView </span> <span class="hljs-attribute">android:id</span>=<span class="hljs-value">"@+id/time_hour"</span> <span class="hljs-attribute">android:layout_width</span>=<span class="hljs-value">"fill_parent"</span> <span class="hljs-attribute">android:layout_height</span>=<span class="hljs-value">"fill_parent"</span> <span class="hljs-attribute">android:adjustViewBounds</span>=<span class="hljs-value">"true"</span> <span class="hljs-attribute">android:scaleType</span>=<span class="hljs-value">"centerInside"</span> <span class="hljs-attribute">android:src</span>=<span class="hljs-value">"@drawable/time_hour"</span> /></span> <span class="hljs-tag"></<span class="hljs-title">RelativeLayout</span>></span> <span class="hljs-tag"></<span class="hljs-title">LinearLayout</span>> </span></code><p>这里需要注意的是,自定义的时钟组件其实就是三张图片,一个表盘,一个时针,一个分针,然后根据时间来显示旋转的角度</p><p><strong>2.代码实现</strong></p><p>首先向大家推荐的是三个很实用的工具类,可以直接在自己的项目当中引用</p><p><strong><em>自定义的日期选择对话框</em></strong></p><pre class="prettyprint" name="code"><code class="hljs cs has-numbering"><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> DateDialog { <span class="hljs-keyword">private</span> Calendar calendar; <span class="hljs-comment">// 通过Calendar获取系统时间</span> <span class="hljs-keyword">private</span> Context context; <span class="hljs-keyword">public</span> <span class="hljs-title">DateDialog</span>(Context context) { <span class="hljs-keyword">this</span>.context = context; } @SuppressLint(<span class="hljs-string">"NewApi"</span>) <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setDate</span>(final TextView text) { calendar = Calendar.getInstance(); <span class="hljs-comment">// 通过自定义控件AlertDialog实现</span> AlertDialog.Builder builder = <span class="hljs-keyword">new</span> AlertDialog.Builder(context); View view = (LinearLayout) LayoutInflater.<span class="hljs-keyword">from</span>(context).inflate( R.layout.dialog_date, <span class="hljs-keyword">null</span>); final DatePicker datePicker = (DatePicker) view .findViewById(R.id.date_picker); <span class="hljs-comment">// 设置日期简略显示 否则详细显示 包括:星期周</span> datePicker.setCalendarViewShown(<span class="hljs-keyword">false</span>); <span class="hljs-comment">// 初始化当前日期</span> calendar.setTimeInMillis(System.currentTimeMillis()); datePicker.init(calendar.<span class="hljs-keyword">get</span>(Calendar.YEAR), calendar.<span class="hljs-keyword">get</span>(Calendar.MONTH), calendar.<span class="hljs-keyword">get</span>(Calendar.DAY_OF_MONTH), <span class="hljs-keyword">null</span>); <span class="hljs-comment">// 设置date布局</span> builder.setView(view); builder.setTitle(<span class="hljs-string">"设置日期信息"</span>); builder.setNegativeButton(<span class="hljs-string">"确 定"</span>, <span class="hljs-keyword">new</span> DialogInterface.OnClickListener() { @Override <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onClick</span>(DialogInterface dialog, <span class="hljs-keyword">int</span> which) { <span class="hljs-comment">// 日期格式</span> StringBuffer sb = <span class="hljs-keyword">new</span> StringBuffer(); sb.append(String.format(<span class="hljs-string">"%d-%02d-%02d"</span>, datePicker.getYear(), datePicker.getMonth() + <span class="hljs-number">1</span>, datePicker.getDayOfMonth())); text.setText(sb); dialog.cancel(); } }); builder.setPositiveButton(<span class="hljs-string">"取 消"</span>, <span class="hljs-keyword">new</span> DialogInterface.OnClickListener() { @Override <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onClick</span>(DialogInterface dialog, <span class="hljs-keyword">int</span> which) { dialog.cancel(); } }); builder.create().show(); } }</code>自定义的时间选择对话框
<code class="hljs java has-numbering"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">TimeDialog</span> {</span> <span class="hljs-keyword">private</span> Calendar calendar; <span class="hljs-comment">// 通过Calendar获取系统时间</span> <span class="hljs-keyword">private</span> <span class="hljs-keyword">int</span> hour; <span class="hljs-keyword">private</span> <span class="hljs-keyword">int</span> minute; <span class="hljs-keyword">private</span> Context context; <span class="hljs-keyword">public</span> <span class="hljs-title">TimeDialog</span>(Context context) { <span class="hljs-keyword">this</span>.context = context; } <span class="hljs-annotation">@SuppressLint</span>(<span class="hljs-string">"NewApi"</span>) <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setTime</span>(<span class="hljs-keyword">final</span> TextView text) { calendar = Calendar.getInstance(); <span class="hljs-comment">// 自定义控件</span> AlertDialog.Builder builder = <span class="hljs-keyword">new</span> AlertDialog.Builder(context); View view = (LinearLayout) LayoutInflater.from(context).inflate( R.layout.dialog_time, <span class="hljs-keyword">null</span>); <span class="hljs-keyword">final</span> TimePicker timePicker = (TimePicker) view .findViewById(R.id.time_picker); <span class="hljs-comment">// 初始化时间</span> calendar.setTimeInMillis(System.currentTimeMillis()); timePicker.setIs24HourView(<span class="hljs-keyword">false</span>); timePicker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY)); timePicker.setCurrentMinute(calendar.get(Calendar.MINUTE)); <span class="hljs-comment">// 设置time布局</span> builder.setView(view); builder.setTitle(<span class="hljs-string">"设置时间信息"</span>); builder.setNegativeButton(<span class="hljs-string">"确定"</span>, <span class="hljs-keyword">new</span> DialogInterface.OnClickListener() { <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onClick</span>(DialogInterface dialog, <span class="hljs-keyword">int</span> which) { hour = timePicker.getCurrentHour(); minute = timePicker.getCurrentMinute(); <span class="hljs-comment">// 时间小于10的数字 前面补0 如01:12:00</span> text.setText(<span class="hljs-keyword">new</span> StringBuilder() .append(hour < <span class="hljs-number">10</span> ? <span class="hljs-string">"0"</span> + hour : hour) .append(<span class="hljs-string">":"</span>) .append(minute < <span class="hljs-number">10</span> ? <span class="hljs-string">"0"</span> + minute : minute) .append(<span class="hljs-string">":00"</span>)); dialog.cancel(); MainActivity.instance.setTimeClock(text.getText().toString().trim()); } }); builder.setPositiveButton(<span class="hljs-string">"取消"</span>, <span class="hljs-keyword">new</span> DialogInterface.OnClickListener() { <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onClick</span>(DialogInterface dialog, <span class="hljs-keyword">int</span> which) { dialog.cancel(); } }); builder.create().show(); } }</code>实用的时间工具类
<code class="hljs lasso has-numbering"><span class="hljs-keyword">public</span> class GetDate { <span class="hljs-comment">// n天前的日期</span> <span class="hljs-keyword">public</span> static <span class="hljs-built_in">String</span> getDateBefore(int day) { <span class="hljs-built_in">Date</span> <span class="hljs-built_in">date</span> <span class="hljs-subst">=</span> <span class="hljs-literal">new</span> <span class="hljs-built_in">Date</span>(); Calendar now <span class="hljs-subst">=</span> Calendar<span class="hljs-built_in">.</span>getInstance(); now<span class="hljs-built_in">.</span>setTime(<span class="hljs-built_in">date</span>); now<span class="hljs-built_in">.</span><span class="hljs-built_in">set</span>(Calendar<span class="hljs-built_in">.</span><span class="hljs-built_in">DATE</span>, now<span class="hljs-built_in">.</span>get(Calendar<span class="hljs-built_in">.</span><span class="hljs-built_in">DATE</span>) <span class="hljs-subst">-</span> day); <span class="hljs-built_in">String</span> dateString <span class="hljs-subst">=</span> <span class="hljs-literal">new</span> SimpleDateFormat(<span class="hljs-string">"yyyy-MM-dd"</span>)<span class="hljs-built_in">.</span>format(now <span class="hljs-built_in">.</span>getTime()); <span class="hljs-keyword">return</span> dateString; } <span class="hljs-keyword">public</span> static <span class="hljs-built_in">String</span> currentTime() { <span class="hljs-built_in">String</span> dateString <span class="hljs-subst">=</span> <span class="hljs-literal">new</span> SimpleDateFormat(<span class="hljs-string">"yyyy-MM-dd HH:mm:ss"</span>) <span class="hljs-built_in">.</span>format(<span class="hljs-literal">new</span> <span class="hljs-built_in">Date</span>()); <span class="hljs-keyword">return</span> dateString; } <span class="hljs-keyword">public</span> static <span class="hljs-built_in">String</span> currentDayTime() { <span class="hljs-built_in">String</span> dateString <span class="hljs-subst">=</span> <span class="hljs-literal">new</span> SimpleDateFormat(<span class="hljs-string">"HH:mm:ss"</span>) <span class="hljs-built_in">.</span>format(<span class="hljs-literal">new</span> <span class="hljs-built_in">Date</span>()); <span class="hljs-keyword">return</span> dateString; } <span class="hljs-keyword">public</span> static <span class="hljs-built_in">String</span> lastDay() { <span class="hljs-built_in">String</span> dateString <span class="hljs-subst">=</span> <span class="hljs-literal">new</span> SimpleDateFormat(<span class="hljs-string">"yyyy-MM-dd"</span>) <span class="hljs-built_in">.</span>format(<span class="hljs-literal">new</span> <span class="hljs-built_in">Date</span>()); <span class="hljs-keyword">return</span> dateString; } <span class="hljs-keyword">public</span> static <span class="hljs-built_in">String</span> lastWeek() { <span class="hljs-built_in">Date</span> <span class="hljs-built_in">date</span> <span class="hljs-subst">=</span> <span class="hljs-literal">new</span> <span class="hljs-built_in">Date</span>(); int year <span class="hljs-subst">=</span> <span class="hljs-built_in">Integer</span><span class="hljs-built_in">.</span>parseInt(<span class="hljs-literal">new</span> SimpleDateFormat(<span class="hljs-string">"yyyy"</span>)<span class="hljs-built_in">.</span>format(<span class="hljs-built_in">date</span>)); int month <span class="hljs-subst">=</span> <span class="hljs-built_in">Integer</span><span class="hljs-built_in">.</span>parseInt(<span class="hljs-literal">new</span> SimpleDateFormat(<span class="hljs-string">"MM"</span>)<span class="hljs-built_in">.</span>format(<span class="hljs-built_in">date</span>)); int day <span class="hljs-subst">=</span> <span class="hljs-built_in">Integer</span><span class="hljs-built_in">.</span>parseInt(<span class="hljs-literal">new</span> SimpleDateFormat(<span class="hljs-string">"dd"</span>)<span class="hljs-built_in">.</span>format(<span class="hljs-built_in">date</span>)) <span class="hljs-subst">-</span> <span class="hljs-number">6</span>; <span class="hljs-keyword">if</span> (day <span class="hljs-subst"><</span> <span class="hljs-number">1</span>) { month <span class="hljs-subst">-=</span> <span class="hljs-number">1</span>; <span class="hljs-keyword">if</span> (month <span class="hljs-subst">==</span> <span class="hljs-number">0</span>) { year <span class="hljs-subst">-=</span> <span class="hljs-number">1</span>; month <span class="hljs-subst">=</span> <span class="hljs-number">12</span>; } <span class="hljs-keyword">if</span> (month <span class="hljs-subst">==</span> <span class="hljs-number">4</span> <span class="hljs-subst">||</span> month <span class="hljs-subst">==</span> <span class="hljs-number">6</span> <span class="hljs-subst">||</span> month <span class="hljs-subst">==</span> <span class="hljs-number">9</span> <span class="hljs-subst">||</span> month <span class="hljs-subst">==</span> <span class="hljs-number">11</span>) { day <span class="hljs-subst">=</span> <span class="hljs-number">30</span> <span class="hljs-subst">+</span> day; } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (month <span class="hljs-subst">==</span> <span class="hljs-number">1</span> <span class="hljs-subst">||</span> month <span class="hljs-subst">==</span> <span class="hljs-number">3</span> <span class="hljs-subst">||</span> month <span class="hljs-subst">==</span> <span class="hljs-number">5</span> <span class="hljs-subst">||</span> month <span class="hljs-subst">==</span> <span class="hljs-number">7</span> <span class="hljs-subst">||</span> month <span class="hljs-subst">==</span> <span class="hljs-number">8</span> <span class="hljs-subst">||</span> month <span class="hljs-subst">==</span> <span class="hljs-number">10</span> <span class="hljs-subst">||</span> month <span class="hljs-subst">==</span> <span class="hljs-number">12</span>) { day <span class="hljs-subst">=</span> <span class="hljs-number">31</span> <span class="hljs-subst">+</span> day; } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (month <span class="hljs-subst">==</span> <span class="hljs-number">2</span>) { <span class="hljs-keyword">if</span> (year <span class="hljs-subst">%</span> <span class="hljs-number">400</span> <span class="hljs-subst">==</span> <span class="hljs-number">0</span> <span class="hljs-subst">||</span> (year <span class="hljs-subst">%</span> <span class="hljs-number">4</span> <span class="hljs-subst">==</span> <span class="hljs-number">0</span> <span class="hljs-subst">&&</span> year <span class="hljs-subst">%</span> <span class="hljs-number">100</span> <span class="hljs-subst">!=</span> <span class="hljs-number">0</span>)) day <span class="hljs-subst">=</span> <span class="hljs-number">29</span> <span class="hljs-subst">+</span> day; <span class="hljs-keyword">else</span> day <span class="hljs-subst">=</span> <span class="hljs-number">28</span> <span class="hljs-subst">+</span> day; } } <span class="hljs-built_in">String</span> y <span class="hljs-subst">=</span> year <span class="hljs-subst">+</span> <span class="hljs-string">""</span>; <span class="hljs-built_in">String</span> m <span class="hljs-subst">=</span> <span class="hljs-string">""</span>; <span class="hljs-built_in">String</span> d <span class="hljs-subst">=</span> <span class="hljs-string">""</span>; <span class="hljs-keyword">if</span> (month <span class="hljs-subst"><</span> <span class="hljs-number">10</span>) m <span class="hljs-subst">=</span> <span class="hljs-string">"0"</span> <span class="hljs-subst">+</span> month; <span class="hljs-keyword">else</span> m <span class="hljs-subst">=</span> month <span class="hljs-subst">+</span> <span class="hljs-string">""</span>; <span class="hljs-keyword">if</span> (day <span class="hljs-subst"><</span> <span class="hljs-number">10</span>) d <span class="hljs-subst">=</span> <span class="hljs-string">"0"</span> <span class="hljs-subst">+</span> day; <span class="hljs-keyword">else</span> d <span class="hljs-subst">=</span> day <span class="hljs-subst">+</span> <span class="hljs-string">""</span>; <span class="hljs-keyword">return</span> y <span class="hljs-subst">+</span> <span class="hljs-string">"-"</span> <span class="hljs-subst">+</span> m <span class="hljs-subst">+</span> <span class="hljs-string">"-"</span> <span class="hljs-subst">+</span> d; } <span class="hljs-keyword">public</span> static <span class="hljs-built_in">String</span> lastMonth() { <span class="hljs-built_in">Date</span> <span class="hljs-built_in">date</span> <span class="hljs-subst">=</span> <span class="hljs-literal">new</span> <span class="hljs-built_in">Date</span>(); int year <span class="hljs-subst">=</span> <span class="hljs-built_in">Integer</span><span class="hljs-built_in">.</span>parseInt(<span class="hljs-literal">new</span> SimpleDateFormat(<span class="hljs-string">"yyyy"</span>)<span class="hljs-built_in">.</span>format(<span class="hljs-built_in">date</span>)); int month <span class="hljs-subst">=</span> <span class="hljs-built_in">Integer</span><span class="hljs-built_in">.</span>parseInt(<span class="hljs-literal">new</span> SimpleDateFormat(<span class="hljs-string">"MM"</span>)<span class="hljs-built_in">.</span>format(<span class="hljs-built_in">date</span>)) <span class="hljs-subst">-</span> <span class="hljs-number">1</span>; int day <span class="hljs-subst">=</span> <span class="hljs-built_in">Integer</span><span class="hljs-built_in">.</span>parseInt(<span class="hljs-literal">new</span> SimpleDateFormat(<span class="hljs-string">"dd"</span>)<span class="hljs-built_in">.</span>format(<span class="hljs-built_in">date</span>)); <span class="hljs-keyword">if</span> (month <span class="hljs-subst">==</span> <span class="hljs-number">0</span>) { year <span class="hljs-subst">-=</span> <span class="hljs-number">1</span>; month <span class="hljs-subst">=</span> <span class="hljs-number">12</span>; } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (day <span class="hljs-subst">></span> <span class="hljs-number">28</span>) { <span class="hljs-keyword">if</span> (month <span class="hljs-subst">==</span> <span class="hljs-number">2</span>) { <span class="hljs-keyword">if</span> (year <span class="hljs-subst">%</span> <span class="hljs-number">400</span> <span class="hljs-subst">==</span> <span class="hljs-number">0</span> <span class="hljs-subst">||</span> (year <span class="hljs-subst">%</span> <span class="hljs-number">4</span> <span class="hljs-subst">==</span> <span class="hljs-number">0</span> <span class="hljs-subst">&&</span> year <span class="hljs-subst">%</span> <span class="hljs-number">100</span> <span class="hljs-subst">!=</span> <span class="hljs-number">0</span>)) { day <span class="hljs-subst">=</span> <span class="hljs-number">29</span>; } <span class="hljs-keyword">else</span> day <span class="hljs-subst">=</span> <span class="hljs-number">28</span>; } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> ((month <span class="hljs-subst">==</span> <span class="hljs-number">4</span> <span class="hljs-subst">||</span> month <span class="hljs-subst">==</span> <span class="hljs-number">6</span> <span class="hljs-subst">||</span> month <span class="hljs-subst">==</span> <span class="hljs-number">9</span> <span class="hljs-subst">||</span> month <span class="hljs-subst">==</span> <span class="hljs-number">11</span>) <span class="hljs-subst">&&</span> day <span class="hljs-subst">==</span> <span class="hljs-number">31</span>) { day <span class="hljs-subst">=</span> <span class="hljs-number">30</span>; } } <span class="hljs-built_in">String</span> y <span class="hljs-subst">=</span> year <span class="hljs-subst">+</span> <span class="hljs-string">""</span>; <span class="hljs-built_in">String</span> m <span class="hljs-subst">=</span> <span class="hljs-string">""</span>; <span class="hljs-built_in">String</span> d <span class="hljs-subst">=</span> <span class="hljs-string">""</span>; <span class="hljs-keyword">if</span> (month <span class="hljs-subst"><</span> <span class="hljs-number">10</span>) m <span class="hljs-subst">=</span> <span class="hljs-string">"0"</span> <span class="hljs-subst">+</span> month; <span class="hljs-keyword">else</span> m <span class="hljs-subst">=</span> month <span class="hljs-subst">+</span> <span class="hljs-string">""</span>; <span class="hljs-keyword">if</span> (day <span class="hljs-subst"><</span> <span class="hljs-number">10</span>) d <span class="hljs-subst">=</span> <span class="hljs-string">"0"</span> <span class="hljs-subst">+</span> day; <span class="hljs-keyword">else</span> d <span class="hljs-subst">=</span> day <span class="hljs-subst">+</span> <span class="hljs-string">""</span>; <span class="hljs-keyword">return</span> y <span class="hljs-subst">+</span> <span class="hljs-string">"-"</span> <span class="hljs-subst">+</span> m <span class="hljs-subst">+</span> <span class="hljs-string">"-"</span> <span class="hljs-subst">+</span> d; }</code>然后就是在项目中引用他们了:
<code class="hljs java has-numbering"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MainActivity</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Activity</span> {</span> TextView dateTxt; TextView timeTxt; Context context; ImageView hourImg, minuteImg; <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> MainActivity instance =<span class="hljs-keyword">null</span>; <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">protected</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onCreate</span>(Bundle savedInstanceState) { <span class="hljs-keyword">super</span>.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); initviews(); context = <span class="hljs-keyword">this</span>; instance=<span class="hljs-keyword">this</span>; }</code>
<code class="hljs avrasm has-numbering">private void initviews() { hourImg = (ImageView) findViewById(R<span class="hljs-preprocessor">.id</span><span class="hljs-preprocessor">.time</span>_hour)<span class="hljs-comment">;</span> minuteImg = (ImageView) findViewById(R<span class="hljs-preprocessor">.id</span><span class="hljs-preprocessor">.time</span>_minute)<span class="hljs-comment">;</span> dateTxt = (TextView) findViewById(R<span class="hljs-preprocessor">.id</span><span class="hljs-preprocessor">.date</span>_txt)<span class="hljs-comment">;</span> dateTxt<span class="hljs-preprocessor">.setText</span>(GetDate<span class="hljs-preprocessor">.lastDay</span>())<span class="hljs-comment">;</span> dateTxt<span class="hljs-preprocessor">.setOnClickListener</span>(new OnClickListener() { @Override public void onClick(View arg0) { DateDialog dialog = new DateDialog(context)<span class="hljs-comment">;</span> dialog<span class="hljs-preprocessor">.setDate</span>(dateTxt)<span class="hljs-comment">;</span> } })<span class="hljs-comment">;</span> timeTxt = (TextView) findViewById(R<span class="hljs-preprocessor">.id</span><span class="hljs-preprocessor">.time</span>_txt)<span class="hljs-comment">;</span> timeTxt<span class="hljs-preprocessor">.setText</span>(GetDate<span class="hljs-preprocessor">.currentDayTime</span>())<span class="hljs-comment">;</span> timeTxt<span class="hljs-preprocessor">.setOnClickListener</span>(new OnClickListener() { @Override public void onClick(View arg0) { TimeDialog dialog = new TimeDialog(context)<span class="hljs-comment">;</span> dialog<span class="hljs-preprocessor">.setTime</span>(timeTxt)<span class="hljs-comment">;</span> } })<span class="hljs-comment">;</span> setTimeClock(timeTxt<span class="hljs-preprocessor">.getText</span>()<span class="hljs-preprocessor">.toString</span>()<span class="hljs-preprocessor">.trim</span>())<span class="hljs-comment">;</span> }</code>获取组件,设置初始日期,时间,绑定监听器,弹出日期时间选择对话框,设置完毕。简单的代码可以看到这些工具类的作用,使用起来很方便。然后就是时钟组件的实现:
<code class="hljs avrasm has-numbering">// 设置显示的时钟,值与设置的时间一致 public void setTimeClock(String time) { int hour = Integer<span class="hljs-preprocessor">.parseInt</span>(timeTxt<span class="hljs-preprocessor">.getText</span>()<span class="hljs-preprocessor">.toString</span>()<span class="hljs-preprocessor">.trim</span>() <span class="hljs-preprocessor">.substring</span>(<span class="hljs-number">0</span>, <span class="hljs-number">2</span>))<span class="hljs-comment">;</span> int minute = Integer<span class="hljs-preprocessor">.parseInt</span>(timeTxt<span class="hljs-preprocessor">.getText</span>()<span class="hljs-preprocessor">.toString</span>()<span class="hljs-preprocessor">.trim</span>() <span class="hljs-preprocessor">.substring</span>(<span class="hljs-number">3</span>, <span class="hljs-number">5</span>))<span class="hljs-comment">;</span> // 根据时间来设置偏转的度数 int hourDegree = (hour % <span class="hljs-number">12</span>) * <span class="hljs-number">30</span><span class="hljs-comment">;</span> int minuteDegree = minute * <span class="hljs-number">6</span><span class="hljs-comment">;</span> RotateAnimation animationHour = new RotateAnimation(hourDegree, hourDegree, Animation<span class="hljs-preprocessor">.RELATIVE</span>_TO_SELF, <span class="hljs-number">0.5</span>f, Animation<span class="hljs-preprocessor">.RELATIVE</span>_TO_SELF, <span class="hljs-number">0.5</span>f)<span class="hljs-comment">;</span> animationHour<span class="hljs-preprocessor">.setDuration</span>(<span class="hljs-number">1000</span>)<span class="hljs-comment">;// 设置动画持续时间</span> animationHour<span class="hljs-preprocessor">.setFillAfter</span>(true)<span class="hljs-comment">;// 动画执行完后是否停留在执行完的状态</span> hourImg<span class="hljs-preprocessor">.startAnimation</span>(animationHour)<span class="hljs-comment">;</span> RotateAnimation animationMinute = new RotateAnimation(minuteDegree, minuteDegree, Animation<span class="hljs-preprocessor">.RELATIVE</span>_TO_SELF, <span class="hljs-number">0.5</span>f, Animation<span class="hljs-preprocessor">.RELATIVE</span>_TO_SELF, <span class="hljs-number">0.5</span>f)<span class="hljs-comment">;</span> animationMinute<span class="hljs-preprocessor">.setDuration</span>(<span class="hljs-number">1000</span>)<span class="hljs-comment">;// 设置动画持续时间</span> animationMinute<span class="hljs-preprocessor">.setFillAfter</span>(true)<span class="hljs-comment">;// 动画执行完后是否停留在执行完的状态</span> minuteImg<span class="hljs-preprocessor">.setAnimation</span>(animationMinute)<span class="hljs-comment">;</span> }</code>