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 ,來顯示畫面,完整的程式如下,
-
<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”
-
tools:context=“.MainActivity” >
-
<Button
-
android:id=“@+id/button1”
-
android:layout_width=“wrap_content”
-
android:layout_height=“wrap_content”
-
android:layout_alignParentLeft=“true”
-
android:layout_alignParentTop=“true”
-
android:text=“Button” />
-
-
<CalendarView
-
android:id=“@+id/calendarView1”
-
android:layout_below=“@+id/button1”
-
android:layout_width=“match_parent”
-
android:layout_height=“match_parent”
-
/>
-
-
-
-
</RelativeLayout>
-
在這畫面中,
在這個範例中,我們會將會用
CalendarView 來顯示
日曆,並且設定一個按鈕,可以跟CalendarView 日曆作互動的動作。
畫面顯示出來,看起來是這樣。
程式範例
Android 原始檔案
MainActivity.java的代碼片段如下所示:
-
package com.example.tutorial_ui_calendarview;
-
-
importjava.text.ParseException;
-
importjava.text.SimpleDateFormat;
-
import java.util.Date;
-
-
import android.app.Activity;
-
importandroid.content.Intent;
-
import android.os.Bundle;
-
import android.view.Menu;
-
import android.view.View;
-
importandroid.view.View.OnClickListener;
-
import android.widget.Button;
-
import android.widget.CalendarView;
-
import android.widget.CalendarView.OnDateChangeListener;
-
import android.widget.Toast;
-
-
publicclass MainActivity extends Activity {
-
-
staticfinalintPICK_DATE_REQUEST = 1;
-
@Override
-
protectedvoid onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.activity_main);
-
-
CalendarView calendarView=(CalendarView) findViewById(R.id.calendarView1);
-
calendarView.setOnDateChangeListener(new OnDateChangeListener() {
-
@Override
-
publicvoid onSelectedDayChange(CalendarView arg0, int year, int month,
-
int date) {
-
Toast.makeText(getApplicationContext(), date + “/” + month + “/” + year, 4000).show();
-
}
-
});
-
-
-
-
-
Button get = (Button) findViewById(R.id.button1 );
-
// get date from CalendarView.
-
final Date tmpDate = new Date(calendarView.getDate());
-
get.setOnClickListener(new View.OnClickListener() {
-
@Override
-
publicvoid onClick(View v) {
-
Toast.makeText(getApplicationContext(), tmpDate.toString(), Toast.LENGTH_SHORT).show();
-
}
-
});
-
-
}
-
-
-
@Override
-
publicboolean onCreateOptionsMenu(Menu menu) {
-
// Inflate the menu; this adds items to the action bar if it is present.
-
getMenuInflater().inflate(R.menu.activity_main, menu);
-
returntrue;
-
}
-
-
}
-
在這畫面中,
在這個範例中,我們會將會用
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;
}
}
好,我們來看看完成後的效果。