本文介紹Android平台上幾種有用的的日歷控件。日歷控件在Web開發中有很多的解決方案,而且很容易實現,但是在Android平台上的解決方案較少且不容易實現。下面給大家開始介紹幾種及我們實現的示例。
我們大家都知道,在Android平台3.0中才新增了日歷視圖控件,可以顯示網格狀的日歷內容,那么對於Android 3.0以下的版本要使用日歷控件只能借助第三方,目前用的最多的是CalendarView。先簡單介紹下CalendarView日歷控件的使用。
android.widget.CalendarView是從android.widget.FrameLayout中繼承的。
long getDate(); //獲取從1970年,1月1日,0點0分0秒到現在的毫秒數,因為返回是long型最終只能截止到2038年 int getFirstDayOfWeek(); //獲取當天是本周的第幾天,Android123提示返回的定義在java.util.Calendar類中,比如Calendar.Monday為星期一,定義值為2。 long getMaxDate(); //獲取CalendarView支持1970年到那天的最大天數 long getMinDate(); //獲取CalendarView支持1970年到那天的最小天數 boolean getShowWeekNumber(); //獲取是否顯示星期號 boolean isEnabled(); //是否顯示本日歷視圖 public void setDate(long date, boolean animate, boolean center); //設置選擇日期到1970年的描述 void setDate(long date); //設置選擇的日期描述到1970年 void setEnabled(boolean enabled); //設置是否啟用視圖 void setFirstDayOfWeek(int firstDayOfWeek); //設置本周起始天數 void setMaxDate(long maxDate); void setMinDate(long minDate); void setOnDateChangeListener(CalendarView.OnDateChangeListener listener); //日歷視圖修改的接口,這個介紹看下面。 void setShowWeekNumber(boolean showWeekNumber); //設置是否顯示周號
有關日歷控件CalendarView的設置接口 android.widget.CalendarView.OnDateChangeListener 只實現了一個回調方法void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth)。
這四個參數的具體介紹為:
view:CalendarView對象。
year:要設置的年。
month:要設置的月份,范圍是0-11。
dayOfMonth:要設置每月的某一天。
使用示例如下:
public class CalendarActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); CalendarView calendarView=(CalendarView) findViewById(R.id.calendarView1); calendarView.setOnDateChangeListener(new OnDateChangeListener() { @Override public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) { // TODO Auto-generated method stub String date = year + "年" + month + "月" + dayOfMonth + "日"; Toast.makeText(getApplicationContext(), date, 0).show(); } }); } }
CalendarView控件的實現效果圖如下所示:
這是Android3.0及以上版本自帶的日歷控件,我們可通過流動鼠標滑輪來選擇上一月或是下一月,然后選擇自己想要的日期,感覺就是靈活度不夠,如果需要CalendarView更多的信息,可以查看Android官方文檔:http://developer.android.com/reference/android/widget/CalendarView.html,這里不再詳述。
當然了,有的朋友可能在Android3.0以下的版本做開發,如果在Android3.0以下的版本中使用日歷控件,第一種解決方案是使用第三方開發的控件,就如同下面介紹的這幾種;第二種解決方案是我們可以將Android3.0以上的代碼移植到以下的版本中。
下面給大家展示其他幾種有用的日歷控件效果圖:
這是CalendarView的效果圖。可以實現上月和下月翻頁,設置事件等。如果是打開日歷控件界面則可通過如下方式:
startActivity(new Intent(Intent.ACTION_VIEW).setDataAndType(null, CalendarActivity.MIME_TYPE));
如果是想點擊控件上選擇某一個日期並返回結果,可通過下面方式:
// 打開日歷控件界面 startActivityForResult(new Intent(Intent.ACTION_PICK). setDataAndType(null, CalendarActivity.MIME_TYPE), 100); // 重寫onActivityResult()方法處理返回的日期 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if(resultCode==RESULT_OK) { int year = data.getIntExtra("year", 0); // 得到年 int month = data.getIntExtra("month", 0); // 得到月 int day = data.getIntExtra("day", 0); // 得到天 // 格式化日期顯示 final Calendar dat = Calendar.getInstance(); dat.set(Calendar.YEAR, year); dat.set(Calendar.MONTH, month); dat.set(Calendar.DAY_OF_MONTH, day); // 顯示日期結果 SimpleDateFormat format = new SimpleDateFormat("yyyy MMM dd"); Toast.makeText(TestActivity.this, format.format(dat.getTime()), Toast.LENGTH_LONG).show(); } }
下載地址: 點擊下載
這個日歷控件也比較強大,但外觀不夠友好,有興趣或需要的朋友可以將其進行修改。
下載地址:點擊下載
下載地址: 點擊下載
這是我們自己實現的日歷控件。可以通過選擇日期查詢相關數據等操作。
下載地址:/Files/hanyonglu/AndroidFile/MyCalendarDemo.rar
以上關於Android平台中幾種有用的日歷控件,關於源碼已經發布。
最后,希望轉載的朋友能夠尊重作者的勞動成果,加上轉載地址:http://www.cnblogs.com/hanyonglu/archive/2012/03/26/2418178.html 謝謝。
完畢。^_^