編輯:關於Android編程
本章內容
本章目標第1節 AnalogClock和DigitalClock
第2節 CalendarView
第3節 DatePicker和TimerPicker
第4節 Chronometer
第5節 Timer類
AnalogClock是一個模擬時鐘視圖,使用AnalogClock標簽進行布局,除了長寬外基本需要其他屬性,對應的Java類是android.widget.AnalogClock,布局示例如下:掌握圖形時鐘和數字時鐘的用法。
掌握日歷視圖的用法。
熟練掌握日期和時間選擇器的用法。
熟練掌握Chronometer的用法。
熟練掌握Timer類的用法。
<AnalogClock
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

DigitalClock是一個數字時鐘視圖,使用DigitalClock標簽進行布局,除了長寬外基本需要其他屬性,對應的Java類是android.widget.DigitalClock,布局示例如下:
<DigitalClock
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

日歷視圖CalendarView,可用於顯示和選擇日期
public void onSelectedDayChange(CalendarView view, int year,
int month, int dayOfMonth)
{
// 使用Toast顯示用戶選擇的日期
Toast.makeText(CalendarViewTest.this,
"你生日是" + year + "年" + month + "月" + dayOfMonth + "日" ,
Toast.LENGTH_SHORT).show();
}
});

DatePicker是一個用於日期選擇的控件,使用DatePicker進行布局,常用屬性如下:
android:calendarViewShown 表示是否顯示完整日歷
android:endYear 表示可以選擇的最大年份
android:maxDate 表示日歷顯示的最大日期
android:spinnerShown 表示是否顯示調節箭頭按鈕

DatePicker是一個用於日期選擇的控件,對應的類是android.widget.DatePicker,常用方法如下:
init() 用於初始化顯示日期和注冊日期選擇變化的監聽器
getYear() 用於提取選中的年份
getMonth() 用於提取選中的月份
getDayOfMonth() 用於提取選中的日
布局示例如下:
對應的類是android.widget.TimePicker,常用方法如下:
getCurrentHour() 獲取當前小時
getCurrentMinute() 獲取當前分鐘
android.widget.TimePicker.OnTimeChangedListener為事件監聽接口

計時器Chronometer,該組件與DigitalClock都繼承自TextView,因此它們都會顯示一段文本。但Chronometer並不顯示當前時間,它顯示的是從某個起始時間開始,一共過去了多長時間。
Chronometer支持如下常用方法。
setBase(long base):設置計時器的起始時間。
setFormat(String format):設置顯示時間的格式。
start():開始計時。
stop():停止計時。
setOnChronometerTickListener(Chronometer.OnChronometerTickListener listener):為計時器綁定事件監聽器,當計時器改變時觸發該監聽器。
使用Chronometer控件實現計器的操作,開始
// 設置開始計時時間
chronometer.setBase(SystemClock.elapsedRealtime());
// 開始記時
chronometer.start();
chronometer.stop(); //停止
計時器定時觸發的事件
chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
public void onChronometerTick(Chronometer chronometer) {
// 如果開始計時到現在超過了startime秒
if (SystemClock.elapsedRealtime()
- chronometer.getBase() > startTime * 1000) {
chronometer.stop();
// 給用戶提示
showDialog();
}
}
});
基於Chronometer制作幻燈片

Timer類
Timer類的功能與Chronometer組件類似,可以每隔特定時間執行程序代碼,且功能比Chronometer組件強大
語法
Timer對象是以schedule方法執行
Timer對象名稱.schedule(TimerTask對象,延遲時間,間隔時間);
TimerTask對象:是Timer對象定時執行的程序代碼所在,開發者必須自己編寫要執行的程序代碼。延遲時間:設置多長時間後才開始執行Timer對象,單位是毫秒。間隔時間:設置間隔多長時間執行TimerTask對象一次,單位是毫秒。
TimerTask類
TimerTask對象是Timer對象的主體,也就是用來定義Timer對象定時要執行的工作內容。在TimerTask對象中run方法裡的程序代碼就是重復執行的代碼塊,語法為
private TimerTask變量名稱=new TimerTask() {
public void run()
{
執行程序代碼…
}
);
public void run ()
{
Message message=new Message () ;
message.what=送出消息;
handler.sendMessage (message) ;
}
private Handler變量名稱=new Handler(){
public void handleMessage(Message msg
{ super.handleMessage (msg);
switch (msg.what){
case接收消息: 程序代碼
break;
) }};
計時秒表初始化計時器
Timer timer=new Timer();//創建Timer對象
timer.schedule(new TimerTask() {//創建TimerTask對象
public void run() {
if(flag){
tSec++;
Message msg=new Message();//創建消息對象
msg.what=1;//設定類型
handler.sendMessage(msg);//傳送消息給Handler
}
}
}, 0,1000);//立刻開始執行,時間間隔為1000毫秒
public void handleMessage(Message msg){//接受消息
super.handleMessage(msg);
switch(msg.what){//判斷消息類型
case 1:
cSec=tSec%60;//獲取秒數
cMin=tSec/60;//獲取分鐘數
String str=String.format("%02d:%02d", cMin,cSec);//以00:00的格式顯示數據
txtClock.setText(str);
break;
}
}

Android實現圖片壓縮(bitmap的六種壓縮方式)
Android中圖片是以bitmap形式存在的,那麼bitmap所占內存,直接影響到了應用所占內存大小,首先要知道bitmap所占內存大小計算方式:圖片長度 x 圖片寬度
Android基礎入門教程——8.3.16 Canvas API詳解(Part 1)
Android基礎入門教程——8.3.16 Canvas API詳解(Part 1)標簽(空格分隔): Android基礎入門教程本節引言: 前面
ubuntu移植libcurl到Android平台
最近移植了很多C++平台的庫,很多都是後台開發的庫,因為NDK開發,以後很可能會使用,提前預研一下。libcurl這個庫很有名,用的人比較多,下載源碼,直接就可以編譯使用
策略模式在android中使用
策略模式(Strategy)策略模式是對象的行為模式。它的用意是針對一組算法,將每一個算法封裝到具有共同接口的獨立類中,從而使得它們可以相互替換。策略模式使得算法可以在不