亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

android實現倒計時功能代碼

2020-04-11 12:15:27
字體:
來源:轉載
供稿:網友
效果圖,每隔1秒,變換一下時間
 
xml:
復制代碼 代碼如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:background="#000000"
>
<com.gettime.CustomDigitalClock
android:id="@+id/time"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:gravity="center"
android:textColor="#FF0000"
android:textSize="45sp" />
</RelativeLayout>
//上面 <com.gettime.CustomDigitalClock 為類的完整位置
MainActivity.java
package com.gettime;
import android.os.Bundle;
import android.app.Activity;
public class MainActivity extends Activity {
private CustomDigitalClock timeClock;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
timeClock=(CustomDigitalClock) findViewById(R.id.time);
timeClock.setEndTime(System.currentTimeMillis()+30*1000*24*24);
}
}
CustomDigitalClock.java
/*
* Copyright (C) 2012 The * Project
* All right reserved.
* Version 1.00 2012-2-11
* Author veally@foxmail.com
*/
package com.gettime;
import java.util.Calendar;
import android.content.Context;
import android.database.ContentObserver;
import android.os.Handler;
import android.os.SystemClock;
import android.provider.Settings;
import android.text.Html;
import android.text.Spannable;
import android.text.Spanned;
import android.text.style.AbsoluteSizeSpan;
import android.util.AttributeSet;
import android.widget.DigitalClock;
/**
* Custom digital clock
*
* @author veally@foxmail.com
*/
public class CustomDigitalClock extends DigitalClock {
Calendar mCalendar;
private final static String m12 = "h:mm aa";
private final static String m24 = "k:mm";
private FormatChangeObserver mFormatChangeObserver;
private Runnable mTicker;
private Handler mHandler;
private long endTime;
public static long distanceTime;
private ClockListener mClockListener;
private static boolean isFirst;
private boolean mTickerStopped;
@SuppressWarnings("unused")
private String mFormat;
public CustomDigitalClock(Context context) {
super(context);
initClock(context);
}
public CustomDigitalClock(Context context, AttributeSet attrs) {
super(context, attrs);
initClock(context);
}
private void initClock(Context context) {
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;
long currentTime = System.currentTimeMillis();
if (currentTime / 1000 == endTime / 1000 - 5 * 60) {
mClockListener.remainFiveMinutes();
}
distanceTime = endTime - currentTime;
distanceTime /= 1000;
if (distanceTime == 0) {
setText("00:00:00");
onDetachedFromWindow();
} else if (distanceTime < 0) {
setText("00:00:00");
onDetachedFromWindow();
} else {
setText(dealTime(distanceTime));
}
invalidate();
long now = SystemClock.uptimeMillis();
long next = now + (1000 - now % 1000);
mHandler.postAtTime(mTicker, next);
}
};
mTicker.run();
}
/**
* deal time string
*
* @param time
* @return
*/
public static Spanned dealTime(long time) {
Spanned str;
StringBuffer returnString = new StringBuffer();
long day = time / (24 * 60 * 60);
long hours = (time % (24 * 60 * 60)) / (60 * 60);
long minutes = ((time % (24 * 60 * 60)) % (60 * 60)) / 60;
long second = ((time % (24 * 60 * 60)) % (60 * 60)) % 60;
String dayStr = String.valueOf(day);
String hoursStr = timeStrFormat(String.valueOf(hours));
String minutesStr = timeStrFormat(String.valueOf(minutes));
String secondStr = timeStrFormat(String.valueOf(second));
returnString.append(dayStr).append("天").append(hoursStr).append("小時")
.append(minutesStr).append("分鐘").append(secondStr).append("秒");
str = Html.fromHtml(returnString.toString());
if (day >= 10) {
((Spannable) str).setSpan(new AbsoluteSizeSpan(16), 2, 3,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
((Spannable) str).setSpan(new AbsoluteSizeSpan(16), 5, 7,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
((Spannable) str).setSpan(new AbsoluteSizeSpan(16), 9, 11,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
((Spannable) str).setSpan(new AbsoluteSizeSpan(16), 13, 14,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
} else {
((Spannable) str).setSpan(new AbsoluteSizeSpan(16), 1, 2,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
((Spannable) str).setSpan(new AbsoluteSizeSpan(16), 4, 6,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
((Spannable) str).setSpan(new AbsoluteSizeSpan(16), 8, 10,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
((Spannable) str).setSpan(new AbsoluteSizeSpan(16), 12, 13,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
// return returnString.toString();
return str;
}
/**
* format time
*
* @param timeStr
* @return
*/
private static String timeStrFormat(String timeStr) {
switch (timeStr.length()) {
case 1:
timeStr = "0" + timeStr;
break;
}
return timeStr;
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
mTickerStopped = true;
}
/**
* Clock end time from now on.
*
* @param endTime
*/
public void setEndTime(long endTime) {
this.endTime = endTime;
}
/**
* 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();
}
}
public void setClockListener(ClockListener clockListener) {
this.mClockListener = clockListener;
}
public interface ClockListener {
void timeEnd();
void remainFiveMinutes();
}
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91av视频在线观看| 在线播放日韩精品| 国产精品丝袜一区二区三区| 96sao精品视频在线观看| 久久影视三级福利片| 成人精品一区二区三区电影黑人| 午夜精品久久久久久99热| 国产一区二区三区丝袜| 姬川优奈aav一区二区| 国产精品爽爽ⅴa在线观看| 国产精品91久久久| 色噜噜狠狠狠综合曰曰曰| 最近的2019中文字幕免费一页| 久久福利视频网| 欧美性视频精品| 国产脚交av在线一区二区| 日本成人激情视频| 日韩国产激情在线| 在线亚洲午夜片av大片| 久久影院在线观看| 欧美专区福利在线| xxxx性欧美| 欧美中文在线观看| 91视频免费网站| 国产精品久久久久久久久久免费| 国产视频亚洲视频| 亚洲性生活视频| 精品国内产的精品视频在线观看| 2018国产精品视频| 国产999视频| 精品久久久久久中文字幕一区奶水| 亚洲男女自偷自拍图片另类| 国产精品中文在线| 亚洲最大福利网| 亚洲毛片在线观看.| 另类视频在线观看| 国产日产亚洲精品| 国产成人精品久久二区二区91| 亚洲国产欧美在线成人app| 在线色欧美三级视频| 国产成人在线亚洲欧美| 国产在线98福利播放视频| 久久精品免费播放| 午夜精品一区二区三区在线视频| 日韩美女在线观看一区| 91精品久久久久久久久青青| 亚洲图片欧美日产| 亚洲美女又黄又爽在线观看| 中文字幕日韩在线观看| 国产精品久久久久久影视| 国产精品一区二区三区在线播放| 国产va免费精品高清在线观看| 欧美性猛交xxxx乱大交3| 欧美电影免费看| 在线精品国产成人综合| 久久天天躁日日躁| 日本不卡高字幕在线2019| 精品国产一区二区三区久久久| 2020欧美日韩在线视频| 97在线免费观看| 久热在线中文字幕色999舞| 欧美精品一区在线播放| 午夜精品一区二区三区在线视频| 国产99久久精品一区二区永久免费| 亚洲一区二区在线播放| 欧美精品在线网站| 91在线免费观看网站| 亚州av一区二区| 欧美在线视频a| 久久福利网址导航| 亚洲免费小视频| 国产精品久久久久久av福利软件| 欧美亚洲视频在线观看| 欧美性xxxxxxxxx| 中文字幕亚洲图片| 一区二区三区回区在观看免费视频| 狠狠躁夜夜躁人人爽超碰91| 日韩在线播放一区| 欧美超级乱淫片喷水| 欧美精品18videos性欧| 成人a免费视频| 亚洲三级av在线| 久久久久久国产三级电影| 日韩av一区二区在线观看| 成人性教育视频在线观看| 不卡伊人av在线播放| 欧美成人午夜视频| 色综合久久88色综合天天看泰| 国产精品国产三级国产专播精品人| 成人欧美在线视频| 红桃视频成人在线观看| 久久久精品在线观看| 国产精品一区二区三区久久| 国产在线拍偷自揄拍精品| 久久天天躁狠狠躁老女人| 欧美激情videoshd| 国产亚洲a∨片在线观看| 在线观看久久久久久| 亚洲精品中文字幕av| 成人福利免费观看| 国产精品视频成人| 久久视频精品在线| 91精品在线播放| 日韩一中文字幕| 亚洲视频精品在线| 久久中文精品视频| 日韩精品免费视频| 亚洲专区在线视频| 国产精品一区专区欧美日韩| 久久久免费高清电视剧观看| 欧美大片网站在线观看| 亚洲精品一区二三区不卡| 亚洲精品久久久久久下一站| 欧美电影在线免费观看网站| 欧美日韩电影在线观看| 成人在线激情视频| 久久久精品2019中文字幕神马| 亚洲少妇激情视频| 国产精品亚洲一区二区三区| 国产啪精品视频网站| 日韩av理论片| 中文字幕亚洲色图| 日韩在线免费视频| 欧美性xxxxxx| 国产香蕉精品视频一区二区三区| 欧美成年人视频网站欧美| 中文字幕在线成人| 91网站免费观看| 91在线色戒在线| 久久人人爽亚洲精品天堂| 黑人巨大精品欧美一区二区三区| 成人欧美一区二区三区黑人孕妇| 国产精品99免视看9| 欧美高清视频在线播放| 亚洲精品按摩视频| 91精品国产沙发| 日韩av影视在线| 欧美激情网友自拍| 欧美日韩在线视频观看| 高跟丝袜欧美一区| 亚洲午夜精品久久久久久性色| 欧美肥臀大乳一区二区免费视频| 一区二区三区天堂av| 98精品国产自产在线观看| 久久色精品视频| 国内精品久久久久影院优| 日韩av手机在线看| 日韩精品中文字幕在线观看| 国产日产亚洲精品| 4388成人网| 日韩视频亚洲视频| 亚洲欧美国产另类| 国产精品一区二区久久久| 在线播放精品一区二区三区| 九九久久久久99精品| 欧美精品久久久久久久免费观看| 久久精品99久久久久久久久| 欧美激情精品久久久久久黑人| 国产欧美精品xxxx另类| 日本欧美中文字幕| 精品亚洲夜色av98在线观看| 亚洲人免费视频| 国产91精品视频在线观看| 欧美激情国产日韩精品一区18|