CalendarView的範例程式

 

 

 

 以前在舊的SDK時,如果要顯示日曆在應用程式上面,就是一個痛苦的經驗,和幸運的是在Android 3.0 之後,就開始有一個新個功能CalendarView 的元件,可以提供你使用。

 

 

範例程式

 

Android的 的範例程式其路徑爲: Tutorial_ui_calendarview

其中各個文件目錄爲:

AndroidManifest.xml:各個應用描述文件

asset/:資産文件

res/:資源檔案目錄

res/layout/畫面設定資源代碼

MainActivity.java 主程式

 

概念性描述

我們會透過這一個程式範例,介紹如何設一個擁有A

CalendarView 元件,並且理解如何取得用戶在上面的點選動作。

 

 

SDK版本: API 11 ,Android

3.0

 

畫面設定資源

 

 

 

主畫面是透過

activity_main.xml ,來顯示畫面,完整的程式如下,

  1. <RelativeLayout xmlns:android=“http://schemas.android.com/apk/res/android”

  2. xmlns:tools=“http://schemas.android.com/tools”

  3. android:layout_width=“match_parent”

  4. android:layout_height=“match_parent”

  5. tools:context=“.MainActivity” >

  6. <Button

  7. android:id=“@+id/button1”

  8. android:layout_width=“wrap_content”

  9. android:layout_height=“wrap_content”

  10. android:layout_alignParentLeft=“true”

  11. android:layout_alignParentTop=“true”

  12. android:text=“Button” />

  13. <CalendarView

  14. android:id=“@+id/calendarView1”

  15. android:layout_below=“@+id/button1”

  16. android:layout_width=“match_parent”

  17. android:layout_height=“match_parent”

  18. />

  19. </RelativeLayout>

 

 

 

在這畫面中,

在這個範例中,我們會將會用

 

CalendarView 來顯示

日曆,並且設定一個按鈕,可以跟CalendarView 日曆作互動的動作。

 

 

 

 

畫面顯示出來,看起來是這樣。

 

 

 

 

程式範例

 

Android 原始檔案

MainActivity.java的代碼片段如下所示:

 

  1. package com.example.tutorial_ui_calendarview;

  2. importjava.text.ParseException;

  3. importjava.text.SimpleDateFormat;

  4. import java.util.Date;

  5. import android.app.Activity;

  6. importandroid.content.Intent;

  7. import android.os.Bundle;

  8. import android.view.Menu;

  9. import android.view.View;

  10. importandroid.view.View.OnClickListener;

  11. import android.widget.Button;

  12. import android.widget.CalendarView;

  13. import android.widget.CalendarView.OnDateChangeListener;

  14. import android.widget.Toast;

  15. publicclass MainActivity extends Activity {

  16. staticfinalintPICK_DATE_REQUEST = 1;

  17. @Override

  18. protectedvoid onCreate(Bundle savedInstanceState) {

  19. super.onCreate(savedInstanceState);

  20. setContentView(R.layout.activity_main);

  21. CalendarView calendarView=(CalendarView) findViewById(R.id.calendarView1);

  22. calendarView.setOnDateChangeListener(new OnDateChangeListener() {

  23. @Override

  24. publicvoid onSelectedDayChange(CalendarView arg0, int year, int month,

  25. int date) {

  26. Toast.makeText(getApplicationContext(), date + “/” + month + “/” + year, 4000).show();

  27. }

  28. });

  29. Button get = (Button) findViewById(R.id.button1 );

  30. // get date from CalendarView.

  31. final Date tmpDate = new Date(calendarView.getDate());

  32. get.setOnClickListener(new View.OnClickListener() {

  33. @Override

  34. publicvoid onClick(View v) {

  35. Toast.makeText(getApplicationContext(), tmpDate.toString(), Toast.LENGTH_SHORT).show();

  36. }

  37. });

  38. }

  39. @Override

  40. publicboolean onCreateOptionsMenu(Menu menu) {

  41. // Inflate the menu; this adds items to the action bar if it is present.

  42. getMenuInflater().inflate(R.menu.activity_main, menu);

  43. returntrue;

  44. }

  45. }

 

 

在這畫面中,

在這個範例中,我們會將會用

 

CalendarView 來顯示

日曆,並且設定一個按鈕,可以跟CalendarView 日曆作互動的動作。

 

package com.example.tutorial_ui_calendarview;

 

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

 

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.CalendarView;

import android.widget.CalendarView.OnDateChangeListener;

import android.widget.Toast;

 

 

在一開始的時候

 

 

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

先處理畫面的顯示,

setContentView(R.layout.activity_main);

 

再來取得這一次範例的重點 CalendarView元件的變數

CalendarView calendarView=(CalendarView) findViewById(R.id.calendarView1);

 

接下來,我們來處理當用戶在CalendarView元件上面按下日期的時候

,如何取的反應。

calendarView.setOnDateChangeListener(new OnDateChangeListener() {

@Override

public void onSelectedDayChange(CalendarView arg0, int year, int month,

int date) {

…….

}

});

 

 

這樣就可以了,再來我們透過 Toast來顯是用戶所選的日期。

Toast.makeText(getApplicationContext(), date + “/” + month + “/” + year, 4000).show();

 

 

 

 

 

再來我們透過另外一個按鍵的動作,來與CalendarView元件做互動,首先先來處理按鍵的動,和按下去的反應。

 

 

 

 

Button get = (Button) findViewById(R.id.button1 );

 

get.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

……. }

});

 

 

接下來,先把CalendarView上面的日期,轉換成

Date 的資料格式。

// get date from CalendarView.

final Date tmpDate = new Date(calendarView.getDate());

 

再來顯示出來就可以了。

Toast.makeText(getApplicationContext(), tmpDate.toString(), Toast.LENGTH_SHORT).show();

 

 

 

 

我們一起來看看結果:

 

 

 

 

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.activity_main, menu);

return true;

}

 

}

 

 

 

 

 

好,我們來看看完成後的效果。

 

 

 

 

 

 

 

 

Screen Shot 2013-01-09 at 2.46.12 PM

By admin-powenko

Dr. Powen Ko is a teacher and CEO on LoopTek LLC, and like to teaching. if you need to class, please let PowenKo know, he will love to service and sharing. LoopTek web site is www.looptek.com

Leave a Reply