封装一个实用的日期时间选择器,时钟组件

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>


























 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CADENCE 96 连接器封装库是一个用于电子设计自动化的工具库。它包含了一系列针对Cadence设计软件的连接器封装模型和设计规范。 连接器封装库提供了一种方便的方式,帮助设计工程师在电子系统设计中使用连接器。它包含了各种不同规格和类型的连接器模型,如D型连接器、引线连接器、端子和插座等。通过这些模型,设计工程师能够在设计过程中方便地选取和布局连接器,并与其他电子组件进行连接。 CADENCE 96 连接器封装库的设计规范确保了设计的准确性和一致性。这些规范包括尺寸、引脚排列、引脚功能和物料属性等方面的要求。设计工程师可以根据项目的需求选择适合的封装和规范,以确保设计的可靠性和性能。 使用CADENCE 96 连接器封装库有几个优势。首先,它提供了一个广泛和完整的连接器模型库,包括各种不同类型和规格的连接器。这大大简化了设计工程师的工作,节省了设计时间和成本。 其次,连接器封装库的设计规范确保了资源的一致性和兼容性。这意味着设计工程师可以轻松地更换连接器,而不必担心物料和引脚的不匹配问题。 最后,通过使用CADENCE 96 连接器封装库,设计工程师能够在设计过程中更好地优化电路布局和信号传输路径,从而提高系统的性能和可靠性。 总之,CADENCE 96 连接器封装库为设计工程师提供了一个方便、准确和可靠的工具,用于选取和使用连接器。它简化了设计流程,提高了设计的效率和质量,是电子设计自动化中一个重要的资产。 ### 回答2: Cadence 96 连接器封装库是一种用于电子设计自动化 (EDA) 软件中的封装库。它包含了与 Cadence 96 连接器相关的封装模型和数据,为设计师提供了方便使用和集成该连接器的工具和资源。 Cadence 96 连接器是一种常用的高速数字信号连接器,广泛应用于计算机和通信设备领域。连接器的封装是指将硬件组件进行物理尺寸、布局和电气特性的描述,并将其集成到电子设计中。 Cadence 96 连接器封装库提供了一系列预定义的连接器封装模型。这些模型包含了连接器的外形、引脚位置、地线、电源线、信号线等信息。设计师可以根据实际需要选择合适的连接器封装模型,并将其应用到设计中。 使用 Cadence 96 连接器封装库,设计师可以快速和准确地完成连接器的布局和布线。通过引入连接器封装模型,设计师可以更好地预测连接器的物理特性,如传输线长度、阻抗匹配等,以提高信号完整性和系统性能。 此外,Cadence 96 连接器封装库还提供了连接器的仿真和验证工具。设计师可以通过仿真工具对连接器的电气特性进行验证,如信号完整性、串扰和时钟性能等。这有助于设计师在设计的早期阶段发现和解决潜在的问题,提高设计的可靠性和稳定性。 总之,Cadence 96 连接器封装库是为了方便设计师使用和集成 Cadence 96 连接器而提供的资源库。它提供了连接器封装模型、布局工具和验证工具,能够帮助设计师快速和准确地完成连接器的设计和调试工作,提高设计的效率和质量。 ### 回答3: CADENCE 96 连接器封装库是一个用于电路设计的连接器封装库。连接器是电子设备中常用的一种组件,用于连接电路板与其他设备或组件,如传感器、电源等。CADENCE 96 连接器封装库为设计师提供了一系列符合标准的连接器封装,方便他们在电路设计中使用。 CADENCE 96 连接器封装库中的封装具有以下特点和优势。首先,该库提供了多种不同类型的连接器封装,包括直插式、贴片式和表面贴装式等,可以满足不同应用场景的需求。其次,这些封装具有标准化的设计和尺寸,使得设计师能够方便地在电路设计中引用和布局这些连接器。此外,CADENCE 96 连接器封装库还包含了连接器的3D模型,使得设计师能够在设计过程中进行可视化的检查和验证。 在实际应用中,CADENCE 96 连接器封装库的使用可以带来多方面的好处。首先,它提高了设计效率,设计师无需从头开始设计连接器的封装,直接引用封装库中的现成封装即可,节省了大量的设计时间和精力。其次,使用标准化的封装可以提高设计的可靠性和稳定性,减少电路板的问题和故障。此外,CADENCE 96 连接器封装库还可以方便设计师进行设计验证和仿真,提前发现潜在的问题,减少后期修改和调试的工作量。 总之,CADENCE 96 连接器封装库是一种方便、高效且可靠的电路设计工具,可以为设计师提供各种类型的连接器封装,并提供3D模型和设计验证的功能。它的使用可以提高设计效率、保证设计质量,是电子设备设计中不可或缺的工具之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值