博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android开发之日历控件实现
阅读量:6820 次
发布时间:2019-06-26

本文共 3911 字,大约阅读时间需要 13 分钟。

  本文介绍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官方文档:l,这里不再详述。 

 

  当然了,有的朋友可能在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();             }    }

 

  下载地址: 

 

       

 

  这个日历控件也比较强大,但外观不够友好,有兴趣或需要的朋友可以将其进行修改。

 

  下载地址: 

 

   

 

  下载地址: 

 

      

 

  这是我们自己实现的日历控件。可以通过选择日期查询相关数据等操作。

 

  下载地址: 

 

  以上关于Android平台中几种有用的日历控件,关于源码已经发布。

 

  最后,希望转载的朋友能够尊重作者的劳动成果,加上转载地址:  谢谢。

 

  完毕。^_^ 

 

你可能感兴趣的文章
时间格式2016-12-12 12:32:12.0带毫秒转换正常yyyy-MM-dd HH:mm:ss
查看>>
你百分百不知道的四大PS技巧
查看>>
linux 查看文件内容
查看>>
oracle开机启动脚本
查看>>
python练习-raw_input()
查看>>
php 发送post请求且header中带参数bug调试
查看>>
Migrate Instance 操作详解 - 每天5分钟玩转 OpenStack(40)
查看>>
java jdbc mysql 连接失败 获取不到connection
查看>>
centos7 搭建GlusterFS
查看>>
Qt配置文件系列1
查看>>
VMware Workstation tools在新Linux内核(3.19)无法运行的修改方法
查看>>
32位linux安装32位oracle11g-netca报错解决方法
查看>>
VBScript脚本实现在目录中自动获取某个文件
查看>>
依据奖品权重值实现的随机抽奖,PHP实现
查看>>
一些总结
查看>>
Unity3D入门中文版doc文档下载
查看>>
F5与BoCloud博云因技术结缘 携手加速容器生态系统在华落地
查看>>
Intent序列化
查看>>
js 计算两个时间的差
查看>>
有趣的Linux命令行功效
查看>>