Android開發之日曆控制項實現

來源:互聯網
上載者:User

  本文介紹Android平台上幾種有用的的日曆控制項。日曆控制項在Web開發中有很多的解決方案,而且很容易實現,但是在Android平台上的解決方案較少且不容易實現。下面給大家開始介紹幾種及我們實現的樣本。

 

  我們大家都知道,在Android平台3.0中才新增了行事曆檢視控制項,可以顯示網格狀的日曆內容,那麼對於Android 3.0以下的版本要使用日曆控制項只能藉助第三方,目前用的最多的是CalendarView。先簡單介紹下CalendarView日曆控制項的使用。

  android.widget.CalendarView是從android.widget.FrameLayout中繼承的。

 

  CalendarView 類提供了基本的日曆設定方法,看下面代碼所示:
    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  謝謝。
 

  完畢。^_^ 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.