发布于 2016-04-06 21:57:13 | 327 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

Android移动端操作系统

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。


实现倒计时每隔1秒,变换一下时间,截图如下,感兴趣的朋友想看下实现代码,希望对你学习有所帮助
效果图,每隔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(); 
} 
} 


最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务