• 扩展DigitalClock显示日期+时间


    DigitalClock类:

     

    Java代码  收藏代码
    1. package com.ex.view;  
    2.   
    3. import java.text.SimpleDateFormat;  
    4. import java.util.Calendar;  
    5. import java.util.Date;  
    6.   
    7. import android.content.Context;  
    8. import android.content.res.Resources;  
    9. import android.database.ContentObserver;  
    10. import android.os.Handler;  
    11. import android.os.SystemClock;  
    12. import android.provider.Settings;  
    13. import android.text.format.DateFormat;  
    14. import android.util.AttributeSet;  
    15.   
    16. public class DigitalClock extends android.widget.DigitalClock{  
    17.     Calendar mCalendar;  
    18.     private final static String mFormat = "EEEE,MMMM-dd-yyyy hh:mm aa";//h:mm:ss aa  
    19.     private FormatChangeObserver mFormatChangeObserver;  
    20.       
    21.     private Runnable mTicker;  
    22.     private Handler mHandler;  
    23.       
    24.     private boolean mTickerStopped = false;  
    25.       
    26.     public DigitalClock(Context context) {  
    27.         super(context);  
    28.         initClock(context);  
    29.     }  
    30.       
    31.     public DigitalClock(Context context, AttributeSet attrs) {  
    32.         super(context, attrs);  
    33.         initClock(context);  
    34.     }  
    35.       
    36.     private void initClock(Context context){  
    37.         Resources r = context.getResources();  
    38.         if(mCalendar == null){  
    39.             mCalendar = Calendar.getInstance();  
    40.         }  
    41.         mFormatChangeObserver = new FormatChangeObserver();  
    42.         getContext().getContentResolver().registerContentObserver(Settings.System.CONTENT_URI, true, mFormatChangeObserver);  
    43.           
    44.     }  
    45.       
    46.     @Override  
    47.     protected void onAttachedToWindow() {  
    48.         mTickerStopped = false;  
    49.         super.onAttachedToWindow();  
    50.           
    51.         mHandler = new Handler();  
    52.           
    53.         mTicker = new Runnable(){  
    54.             @Override  
    55.             public void run() {  
    56.                 if(mTickerStopped){  
    57.                     return ;  
    58.                 }  
    59.                 mCalendar.setTimeInMillis(System.currentTimeMillis());  
    60.                 setText(DateFormat.format(mFormat, mCalendar));  
    61.                 invalidate();  
    62.                 long now = SystemClock.uptimeMillis();  
    63.                 long next = now + (1000 - now % 1000);  
    64.                 mHandler.postAtTime(mTicker, next);  
    65.             }  
    66.         };  
    67.         mTicker.run();  
    68.     }  
    69.       
    70.       
    71.               
    72.     private class FormatChangeObserver extends ContentObserver{  
    73.   
    74.         public FormatChangeObserver() {  
    75.             super(new Handler());  
    76.         }  
    77.           
    78.         @Override  
    79.         public void onChange(boolean selfChange) {  
    80.               
    81.         }  
    82.     }  
    83. }  

     

     

    使用:

     

    Xml代码  收藏代码
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:orientation="vertical"  
    4.     android:layout_width="fill_parent"  
    5.     android:layout_height="fill_parent"  
    6.     >  
    7. <com.ex.view.DigitalClock    
    8.     android:layout_width="wrap_content"   
    9.     android:layout_height="wrap_content"   
    10.     />  
    11. </LinearLayout>  
  • 相关阅读:
    HTML常用标签1
    mysql 多对多拆分成 一对多(学生,选修课,成绩)
    JDBC工具包使用
    类反射,用于JDBC
    JDBC基础语句使用
    关于线程等待、线程唤醒方法的引入
    synchronized站点抢票同步例题
    python-装饰器
    jwt, token, session和cookies
    miniapp之登录、授权和支付
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13318950.html
Copyright © 2020-2023  润新知