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