导航:首页 > 操作系统 > android开源日历控件

android开源日历控件

发布时间:2022-07-25 21:50:44

android日历控件

1.DatePicker

在Android中,DatePicker用来实现日期输入设置,日期的设置范围为1900年1月1日至2100年12月31日。

1.1常用xml属性

DatePicker的常用xml属性如图1所示:

图1 DatePicker常用xml属性

其中,android:calendarViewShown[boolean]用于设置是否显示calendar view;android:endYear[int]用于设置截至日期;android:maxDate[int]用于设置最大的日期;android:minDate[int]用于设置最小的日期;android:spinnersShown[boolean]用于设置是否显示spinners;android:startYear[int]用于设置起始日期。

1.2常用方法

DatePicker的常用方法有以下一些:

(1)public CalendarView getCalendarView(); //获取CalendarView

(2)public boolean getCalendarViewShown(); //获取CalendarView是否显示

(3)public int getDayOfMonth(); //获取当前日期的日

(4)public long getMaxDate(); //获取最大日期

(5)public long getMinDate(); //获取最小日期

(6)public int getMonth(); //获取当前日期的月

(7)public boolean getSpinnersShown(); //获取Spinners是否显示

(8)public int getYear(); //获取当前日期的年

(9)public void init(int year,int monthOfYear,int dayOfMonth,

DatePicker.OnDateChangedListener onDateChangedListener); //初始化日期

(10)public void setCalendarViewShown(boolean shown);//设置是否显示CalendarView

(11)public void setMaxDate(long maxDate); //设置最大日期

(12)public void setMinDate(long minDate); //设置最小日期

(13)public void setSpinnersShown(boolean shown); //设置是否显示Spinners

(14)public void updateDate(int year,int month,int dayOfMonth); //更新当前日期2.TimePicker

在Android中,TimePicker用来实现时间输入设置,可以选择12或24小时模式。TimePicker的常用方法有以下一些:

(1)public Integer getCurrentHour(); //获取当前时间的小时

(2)public Integer getCurrentMinute(); //获取当前时间的分钟

(3)public boolean is24HourView(); //获取是否为24小时模式

(4)public void setCurrentHour(Integer currentHour); //设置当前时间的小时

(5)public void setCurrentMinute(Integer currentMinute); //设置当前时间的分钟

(6)public void setIs24HourView(Boolean is24HourView); //设置24小时模式3.DatePickerDialog

在Android中,DatePickerDialog用来显示日期对话框。DatePickerDialog的常用方法有以下一些:

(1)public DatePicker getDatePicker(); //获取DatePicker中的日期值

(2)public void onClick(DialogInterface dialog,int which); //响应对话框中的点击事件

(3)public void onDateChanged(DatePicker view,int year,int month,int day); //响应日期改变事件

(4)public void updateDate(int year,int monthOfYear,int dayOfMonth); //更新当前日期4.TimePickerDialog

在Android中,TimePickerDialog用来显示时间对话框。TimePickerDialog的常用方法有以下一些:

(1)public void onClick(DialogInterface dialog,int which); //响应对话框中的点击事件

(2)public void onTimeChanged(TimePicker view,int hourOfDay,int minute); //响应时间改变事件

(3)public void updateTime(int hourOfDay,int minuteOfHour); //更新当前时间5.AnalogClock

在Android中,AnalogClock用于显示指针式时钟,该时钟仅有时钟和分钟两个指针。6.DigitalClock

在Android中,DigitalClock用来显示数字式时钟,显示格式为HH:MM:SS AM/PM。

⑵ Android下几个相关的时间日期控件的用法

获取年月日,之前的日期不能选择

日历c = Calendar.getInstance(); //获取系统的工具类【可以获取时间】DatePickerDialog datePickerDialog = new DatePickerDialog(context,new DatePickerDialog.OnDateSetListener(){@覆盖public void onDateSet(DatePicker view,int year,int month,int dayOfMonth){月+ = 1;yuyueTime.setText(year +“ - ”+ month +“ - ”+ dayOfMonth);}},c.get(Calendar.YEAR),c.get(Calendar.MONTH),c.get(Calendar.DATE)); //设置默认时间。datePickerDialog.getDatePicker()setMinDate(c.getTime()的getTime()); //设置最小值datePickerDialog.show();

相关类的认识
选取器(的DatePicker,TimerPicker,NumberPicker)
其中的DatePicker和TimerPicker都有窗口的形式显示日期和时间,再返回数据。

下面分别介绍这几种时间类的使用方法。

一.DatePicker日期选择类的使用

DatePicker的常用的XML属性

XML属性

描述

机器人:calendarViewShown 设置该日期选择是否显示CalendarView组件。

机器人:endYear 设置日期选择器允许选择的最后一年。

安卓的maxDate 设置该日期选择器的最大日期。以MM / DD / YYYY格式指定最大日期。

安卓的minDate 设置该日期选择器的最小日期。以MM / DD / YYYY格式指定最小日期。

机器人:spinnersShown 设置该日期选择器是否显示微调日期选择组件。

机器人:startYear 设置日期选择器允许选择的第一年。


当用户更改了的DatePicker里的年,月,日时,将触发OnDateChangedListener监听器的onDateChange()事件。

二.TimePicker日期选择类的使用


当用户更改了TimePicker里的时,分时,将触发OnTimeChangedListener监听器的onTimeChanged事件。

下面是日期选择类和时间选择类的一个使用示例:

(一)布局文件设计

<LinearLayout 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"android:orientation="vertical" ><TextView android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:text="显示日期的控件" /><DatePicker android:id="@+id/main_dp"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextView android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:text="显示时间的控件" /><TimePicker android:id="@+id/main_tp_showTime"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextView android:id="@+id/main_tv_showdate"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="显示日期" /><TextView android:id="@+id/main_tv_showtime"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="显示时间" /></LinearLayout>

⑶ 使用android自带的日历控件怎么标记

每个安卓系统自带的日历都不尽相同,而且有些日历为了节省内存过于精简,是没有这种功能的。如果可以做到的一般会有个新建的按钮,新建日程提醒。在更多按钮可以设置提醒的方式。

⑷ 如何用android设计一个日历

import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.TextView;

⑸ 使用android自带的日历控件怎么标记特定的

初始情况

3.这里还要感谢前辈的代码作为参考,毕竟以前也没有写过关于日历方面的东西,别人确实写得不错,我在原基础上加入了数据库操作等补充,以完成自己实际需求,作为尊重首先给出原作者的连接

就是这里–>Android自定义控件实现可多选课程日历CalendarView

4.然后贴出来关于数据库操作的代码,给大家作为参考

DatabaseHelper .java 这是关于简单数据库操作的部分

package com.xugongming38.editcalendar.utils;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;/*** Created by dell on 2017/5/18.*/public class DatabaseHelper extends SQLiteOpenHelper {public static final String CREATE_DIARY = "create table Hair("+ "id integer primary key autoincrement, "+ "content text)";private Context mContext;public DatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version){super(context, name, factory, version);mContext = context;}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL(CREATE_DIARY);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {db.execSQL("drop table if exists Hair");onCreate(db);}}

DataHelper .java 简化数据操作接口,避免直接操作数据库,做了再一层的封装,建议读者也这样做,可以让代码更清晰,更容易复用


package com.xugongming38.editcalendar.utils;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import java.util.ArrayList;import java.util.List;/*** Created by dell on 2017/5/18.*/public class DataHelper {public static DatabaseHelper mHelper;public static void deleteData2List(String content) {SQLiteDatabase dbDelete = mHelper.getWritableDatabase();dbDelete.delete("Hair", "content = ?", new String[]{content});}public static void addData2List(String content) {SQLiteDatabase db = mHelper.getWritableDatabase();ContentValues values = new ContentValues();values.put("content", content);db.insert("Hair", null, values);values.clear();}public static List<String> getDataList(Context context) {if(mHelper==null){mHelper = new DatabaseHelper(context, "Hair.db", null, 1);}List<String> dataList = new ArrayList<>();SQLiteDatabase sqLiteDatabase = mHelper.getWritableDatabase();Cursor cursor = sqLiteDatabase.query("Hair", null, null, null, null, null, null);if (cursor.moveToFirst()) {do {String content = cursor.getString(cursor.getColumnIndex("content"));dataList.add(content);} while (cursor.moveToNext());}cursor.close();return dataList;}}

⑹ android开发,日历控件问题,怎么得到当前选中的日期

看看日历都有哪些属性、方法

⑺ Android开源日历,materialcalendarview的选中背景如何缩小

因为项目需要,上github找了不少日历控件,最终敲定了MaterialCalendarView。
首先昵,要说下开源控件使用的好处,我感觉大致有以下几个方面:
1).网上有现成的为啥不去用,你觉得你自己写的比别人牛逼吗?
2).涉及年月日日期处理,滚动事件,相互交错,没有紧密的逻辑思维去构架,肯定漏洞百出,想想数不尽的bug,不寒而栗。
3).最关键的是,我懒,我懒,我懒!自己写费时费力,牛逼的日历组件都可以做一个app了,再说我只是想要一个选择日期功能。
说了一堆废话,现在我们来分析源码了。。。。。
老外写的东西层次感还是很分明的,我大致给它分为三个部分:日期的格式化,自定义的span效果,以及日历控件的实现。不用说日历实现是最重要的一部分了,我们由简入繁,从日期分析开始。
1)format,顾名思义,格式化,达到我们想要的日期展示样式。
format包中有八个java文件,其中有三个接口,五个实现类。
三个接口:
DayFormatter 通过自定义的CalendarDay对象,得到一个日期的字符串标签。其实现类是DateFormatDayFormatter。
TitleFormatter 通过自定义的CalendarDay对象,得到一个包含年月的字符串标签,作为MaterialCalendarView的标签。其实现类为DateFormatTitleFormatter和MonthArrayTitleFormatter。
WeekDayFormatter 将一个日期中Calendar.DAY_OF_YEAR对应的值转换成一个字符串标签。其实现类是ArrayWeekDayFormatter。
这三个接口都只有一个方法,有的提供了一个公有的默认实现类。其功能就是将日期的数值转换成本地化的可读字符串。在这里我可以想到的是,因为使用了接口,我们可以很灵活的替换其实现类,而不用更改日历控件中的代码,实现定制化的需求。
2)span
spans包中只有一个类DotSpan,实现了在文字下方画一个小圆点的效果。这是一个示例,我们可以模仿它来实现自己想要的效果。比如,如果想在日期的下方用一行小字显示,用span是很方便的一种实现方式。
3)MaterialCalendarView
这个包中有16个Java文件,是此开源控件主要的代码所在。其中,组合成最终控件的四个最重要的类是DayView,WeekDayView,MonthView和MaterialCalendarView。
DayView 继承自CheckedTextView。之所以用CheckedTextView而不是TextView,是为了使用android.R.attr.state_checked状态,在日期被选中时显示不同的背景图片。
WeekDayView 继承自TextView,用于在日历的第一排显示星期的标签。
MonthView 继承自ViewGroup,它包含7个WeekDayView和42个DayView,即一个7*7的矩形,其中每一个矩形称为一个tile。
MaterialCalendarView 继承自ViewGroup,包含上方的title和下方的ViewPager。这个控件的宽度如果不能被7整除,那么它会自动缩小其内容,并居中。
老外实现MaterialCalendarView层次感非常强烈,注释清楚,本人愚钝啊,时刻不丢粗心的毛病,改造日历期间很多功能点找不到,修改日历的disable事件,点击效果,日历字体大小。。。。。等等。好了,废话不多说,先来一份改造好的日历图,压压惊!左边是我改造的,右边是我们伟大开源作者的。(提倡开源,一直很欣赏这些懂的分享的人,只有弱者才会害怕自己的东西被人拿去)

左边的日历我针对自己项目进行了定制设计,调节了日历大小,之前的dayview是宽高等比大小,宽度是平分屏幕,所以这样导致高度很高,相互之间间隔比较大,我通过monthview的onMeasure方法,将高度修改为
int childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(
(int)(measureTileSize*0.65),
MeasureSpec.EXACTLY
);
这样长宽就3/2了,这个时候只是第一步,仅仅只有monthview大小变了,整体的view大小还没有变,所以我们还要处理下MaterialCalendarView的onMeasure 方法,对整体高度进行修改

⑻ Android开发有没有人做过日历控件,可以签到的

可以按照这个思路:

首先是MainActivity,源码如下

<prename="code"class="java">{

privateSignCalendarcalendar;
privateStringdate;
privateintyears;
privateStringmonths;
privateButtonbtn_sign;

@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SimpleDateFormatformatter=newSimpleDateFormat("yyyy-MM-dd");
DatecurDate=newDate(System.currentTimeMillis());//获取当前时间
date=formatter.format(curDate);
calendar=(SignCalendar)findViewById(R.id.sc_main);
btn_sign=(Button)findViewById(R.id.btn_sign);
btn_sign.setOnClickListener(newOnClickListener(){

@Override
publicvoidonClick(Viewv){
//TODOAuto-generatedmethodstub
List<String>list=newArrayList<String>();
list.add("2016-06-30");
list.add(date);
//calendar.setCalendarDaysBgColor(list,
//R.drawable.bg_sign_today);
calendar.addMarks(list,0);
}
});
}

}


以下是布局文件:

<LinearLayoutxmlns: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"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.h.cheng.signcalendar.MainActivity">

<com.h.cheng.signcalendar.SignCalendar
android:id="@+id/sc_main"
android:layout_width="match_parent"
android:layout_height="320dp"
android:clickable="true">
</com.h.cheng.signcalendar.SignCalendar>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:orientation="horizontal">

<Button
android:id="@+id/btn_sign"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:background="#f00"
android:text="签到"
android:textColor="#fff"/>
</LinearLayout>

</LinearLayout>

⑼ android studio 日历控件怎么简单些

每个安卓系统自带的日历都不尽相同,而且有些日历为了节省内存过于精简,是没有这种功能的。如果可以做到的一般会有个新建的按钮,新建日程提醒。在更多按钮可以设置提醒的方式。首先你要自定义一个控件,一般采用继承原有控件的方式,然后在布局文件使用你要用的自定义控件,需要包含包名,再就是在activity中写控件的控制代码。可以看看安卓巴士教程:http://www.apkbus.com/forum-96-1.html

⑽ android怎么把3.0自带日历控件calendarview每个日期按钮设置事件,如跳转之类的。

阅读全文

与android开源日历控件相关的资料

热点内容
Python取ID对应的值 浏览:632
现在我的世界什么服务器最混乱 浏览:764
美国好的源码出售 浏览:325
苹果ipad文件夹怎么添加文字 浏览:485
腾讯云连接自己的服务器地址 浏览:218
硕士英语综合教程pdf 浏览:46
分段加密的安全性 浏览:507
咪咕直播为什么没有适配安卓系统 浏览:172
php模版大全 浏览:102
没车能解压吗 浏览:634
php开发oa系统源码 浏览:759
怎么安装苹果ios的app 浏览:581
app拉新如何机刷 浏览:480
zendeclipseforphp 浏览:480
同时有几个微信如何加密微信 浏览:86
大众20t压缩比 浏览:566
程序员要记住的500个单词 浏览:831
wq快捷方式在哪个文件夹 浏览:965
云南到河北源码 浏览:92
安卓手机怎么玩造梦3 浏览:60