关于android自定义日期输出格式的例子,很不错。
只作自己学习之用,详细请访问原出处。
本文转自:http://tech.cncms.com/shouji/android/50490.html
package com.test;
import java.util.Calendar;
import android.content.Context;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.os.Handler;
import android.os.SystemClock;
import android.provider.Settings;
import android.text.format.DateFormat;
import android.util.AttributeSet;
/**
*
* 自定义DigitalClock输出格式
*
* @author 农民伯伯
*
*
*/
public class DigitalClock extends android.widget.DigitalClock
{
Calendar mCalendar;
private final static String m12 = "h:mm aa";// h:mm:ss aa
private final static String m24 = "k:mm";// k:mm:ss
private FormatChangeObserver mFormatChangeObserver;
private Runnable mTicker;
private Handler mHandler;
private boolean mTickerStopped = false;
String mFormat;
public DigitalClock(Context context)
{
super(context);
initClock(context);
}
public DigitalClock(Context context, AttributeSet attrs)
{
super(context, attrs);
initClock(context);
}
private void initClock(Context context)
{
Resources r = context.getResources();
if (mCalendar == null)
{
mCalendar = Calendar.getInstance();
}
mFormatChangeObserver = new FormatChangeObserver();
getContext().getContentResolver().registerContentObserver(
Settings.System.CONTENT_URI, true, mFormatChangeObserver);
setFormat();
}
@Override
protected void onAttachedToWindow()
{
mTickerStopped = false;
super.onAttachedToWindow();
mHandler = new Handler();
/**
*
* requests a tick on the next hard-second boundary
*/
mTicker = new Runnable()
{
public void run()
{
if (mTickerStopped)
return;
mCalendar.setTimeInMillis(System.currentTimeMillis());
invalidate();
long now = SystemClock.uptimeMillis();
long next = now + (1000 - now % 1000);
mHandler.postAtTime(mTicker, next);
}
};
mTicker.run();
}
@Override
protected void onDetachedFromWindow()
{
super.onDetachedFromWindow();
mTickerStopped = true;
}
/**
*
* Pulls 12/24 mode from system settings
*/
private boolean get24HourMode()
{
return android.text.format.DateFormat.is24HourFormat(getContext());
}
private void setFormat()
{
if (get24HourMode())
{
mFormat = m24;
}
else
{
mFormat = m12;
}
}
private class FormatChangeObserver extends ContentObserver
{
public FormatChangeObserver()
{
super(new Handler());
}
@Override
public void onChange(boolean selfChange)
{
setFormat();
}
}
}