我想删除DigitalClock的秒数。
我找到了DigitalCLock的代码:http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/widget/DigitalClock.java/?v=source
现在我只使用DigitalClock:
DigitalClock dc = (DigitalClock) findViewById(R.id.digitalClock1);
如何使用GrepCode的代码?
答案 0 :(得分:2)
由于DigitalClock的格式是私有的,因此最简单的方法是将整个类剪切并粘贴到项目中。然后做一些改变:
":ss"
部分,例如将m24
更改为"k:mm";
。 将Runnable中的刷新率从每秒降低到每分钟:
long next = now + (60000 - now % 60000);
现在像任何其他小部件一样使用它(在XML范围内使用反向包名称):
<com.example.DigitalClock
android:width="wrap_content"
android:height="wrap_content" />
答案 1 :(得分:1)
改编自您链接到的DigitalClock类。
package com.t3hh4xx0r.examplewidget
import android.content.Context;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.os.Handler;
import android.os.SystemClock;
import android.text.format.DateFormat;
import android.util.AttributeSet;
import java.util.Calendar;
public class CustomDigitalClock extends TextView {
Calendar mCalendar;
private Runnable mTicker;
private Handler mHandler;
private boolean mTickerStopped = false;
String mFormat = "h:mm aa";
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 = mContext.getResources();
if (mCalendar == null) {
mCalendar = Calendar.getInstance();
}
}
@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());
setText(DateFormat.format(mFormat, mCalendar));
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;
}
}