CN105468374B - 一种智能设备的日历时间控件的实现方法和*** - Google Patents
一种智能设备的日历时间控件的实现方法和*** Download PDFInfo
- Publication number
- CN105468374B CN105468374B CN201510838064.3A CN201510838064A CN105468374B CN 105468374 B CN105468374 B CN 105468374B CN 201510838064 A CN201510838064 A CN 201510838064A CN 105468374 B CN105468374 B CN 105468374B
- Authority
- CN
- China
- Prior art keywords
- control
- value
- calendar
- time
- month
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Electric Clocks (AREA)
Abstract
本发明公开一种智能设备的日历时间控件的实现方法和***,其中,方法包括:创建继承于线性布局控件的日历控件,所述日历控件包含用于代表日历的8个可编辑控件;创建继承于线性布局控件的时间控件,所述时间控件包含用于代表时间的6个可编辑控件;在日历控件和时间中实现编辑框***类,对每个可编辑控件进行监听、条件限制和修改。本发明通过创建的日历控件和时间控件,实现日历和时间的可编辑输入,并且实现对输入的数据的条件限制和修改,保证输入的日历和时间的正确性。
Description
技术领域
本发明涉及日历时间应用领域,尤其涉及一种智能设备的日历时间控件的实现方法和***。
背景技术
Android控件EditView是可以进行编辑的一个标准控件,该控件可以满足基本的输入需求,但是,对于日历、时间等这种特殊的输入需求,标准控件EditView并不能自动识别日历时间输入,也无法判断输入的正确性。
因此,现有技术还有待于改进和发展。
发明内容
鉴于上述现有技术的不足,本发明的目的在于提供一种智能设备的日历时间控件的实现方法和***,旨在解决现有技术中标准控件无法自动识别日历时间输入以及无法判断输入正确与否的问题。
本发明的技术方案如下:
一种智能设备的日历时间控件的实现方法,其中,包括步骤:
创建继承于线性布局控件的日历控件,所述日历控件包含用于代表日历的8个可编辑控件;在日历控件中实现编辑框***类,对每个可编辑控件进行监听、条件限制和修改;
创建继承于线性布局控件的时间控件,所述时间控件包含用于代表时间的6个可编辑控件;在时间控件中实现编辑框***类,对每个可编辑控件进行监听、条件限制和修改。
所述的实现方法,其中,日历控件的8个可编辑控件包括:用于显示年份的4个可编辑控件、用于显示月份的2个可编辑控件、用于显示日期的2个可编辑控件。
所述的实现方法,其中,日历控件所要满足的条件为:
当日历控件中年份为非闰年且月份为2月时,日期小于29,当日历控件中年份为闰年且月份为2月时,日期小于30;
日期、月份、年份的可编辑控件中的数据不同时为0;
当月份为4月、6月、9月或11月时,日期小于31,当月份为1月、3月、5月、7月、8月、10月或12月时,日期小于32;
月份的数据范围为[01,12];
日期的数据范围为[01,31]。
所述的实现方法,其中,时间控件的6个可编辑控件包括用于显示时的2个可编辑控件、用于显示分的2个可编辑控件和用于显示秒的2个可编辑控件。
所述的实现方法,其中,时间控件所要满足的条件为:
时的数据范围为[00,23];
分的数据范围为[00,59];
秒的数据范围为[00,59]。
一种智能设备的日历时间控件的实现***,其中,包括:
日历控件实现模块,用于创建继承于线性布局控件的日历控件,所述日历控件包含用于代表日历的8个可编辑控件;在日历控件中实现编辑框***类,对每个可编辑控件进行监听、条件限制和修改;
时间控件实现模块,用于创建继承于线性布局控件的时间控件,所述时间控件包含用于代表时间的6个可编辑控件;在时间控件中实现编辑框***类,对每个可编辑控件进行监听、条件限制和修改。
所述的实现***,其中,日历控件的8个可编辑控件包括:用于显示年份的4个可编辑控件、用于显示月份的2个可编辑控件、用于显示日期的2个可编辑控件。
所述的实现***,其中,日历控件所要满足的条件为:
当日历控件中年份为非闰年且月份为2月时,日期小于29,当日历控件中年份为闰年且月份为2月时,日期小于30;
日期、月份、年份的可编辑控件中的数据不同时为0;
当月份为4月、6月、9月或11月时,日期小于31,当月份为1月、3月、5月、7月、8月、10月或12月时,日期小于32;
月份的数据范围为[01,12];
日期的数据范围为[01,31]。
所述的实现***,其中,时间控件的6个可编辑控件包括用于显示时的2个可编辑控件、用于显示分的2个可编辑控件和用于显示秒的2个可编辑控件。
所述的实现***,其中,时间控件所要满足的条件为:
时的数据范围为[00,23];
分的数据范围为[00,59];
秒的数据范围为[00,59]。
有益效果:本发明通过创建的日历控件和时间控件,实现日历和时间的可编辑输入,并且在每个可编辑控件中实现对输入的数据的条件限制和修改,保证输入的日历和时间的正确性。
附图说明
图1为本发明一种智能设备的日历时间控件的实现方法较佳实施例的流程图。
图2为本发明中日历检测算法时序图。
图3为本发明中时间检测算法时序图。
图4为本发明一种智能设备的日历时间控件的实现***较佳实施例的结构框图。
具体实施方式
本发明提供一种智能设备的日历时间控件的实现方法和***,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参阅图1,图1为本发明所提供的一种智能设备的日历时间控件的实现方法较佳实施例的流程图,如图所示,其包括步骤:
S1、创建继承于线性布局控件的日历控件,所述日历控件包含用于代表日历的8个可编辑控件;在日历控件中实现编辑框***类,对每个可编辑控件进行监听、条件限制和修改;
S2、创建继承于线性布局控件的时间控件,所述时间控件包含用于代表时间的6个可编辑控件;在日历控件中实现编辑框***类,对每个可编辑控件进行监听、条件限制和修改。
本发明中的日历控件(简称DateView)继承于线性布局控件(简称LinearLayout),DateView是组合控件,在DateView中包含8个可编辑控件(简称EditView),一个EditView表示一个数值输入框,年份有4个EditView,月份有2个EditView,日期有2个EditView,这8个EditView优选采用横向布局方式。
本发明中的日历控件其显示顺序为日期、月份、年份(当然也可以是同样可以是年份、月份、日期或者月份、日期、年份)。
假设本发明的方法应用在智能电视中,那么在这8个EditView中,可以通过遥控器数字键或者输入法中数字键输入0~9的数字,当然也可应用在其他设备中,采用其他方式进行输入。
DateView中创建MyTextWatcher类,实现TextWatcher接口类(编辑框***类),对每个EditText通过addTextChangedListener监听textChange(文本改变)事件,实现抽象方法onTextChanged(CharSequence charsequence, int i, int j, int k)。日历检测算法逻辑在onTextChanged(CharSequence charsequence, int i, int j, int k)方法中实现,该日历检测算法如图2所示,首先获取当前***时间,初始化日历控件界面,然后输入数字,触发第i个EditView的TextWatcher事件(index=i),然后MyTextWatcher(i)向日历控件请求其年份、月份、日期,并由日历控件返回相关信息,由MyTextWatcher(i)完成数据检测。
即在本发明的日历控件中,需依次对日期、月份、年份的EditView输入的数据进行检测,使其满足日历控件的条件。日历控件所要满足的条件为:
当日历控件中年份为非闰年且月份为2月时,日期小于29,当日历控件中年份为闰年且月份为2月时,日期小于30;
日期、月份、年份的可编辑控件中的数据不同时为0;
当月份为4月、6月、9月或11月时,日期小于31,当月份为1月、3月、5月、7月、8月、10月或12月时,日期小于32;
月份的数据范围为[01,12];
日期的数据范围为[01,31]。
具体来说,本发明的日历检测算法如下:
输入:value表示当前EditView的输入值;prevalue表示当前EditView输入值之前的数值;i表示当前EditView的编号(日历检测算法中此值依次为0,1,2,3,4,5,6,7)。
输出:value’表示当前EditView最后的确定值。
处理流程如下:
1:当i=0时,判断DateView中月份是否为2月,若是2月,则进入流程1.1,反之,则进入流程1.2。
1.1:判断i=0的EditView中value值是否大于2,若大于2,则设置value’的值为prevalue;反之,则进入流程1.1.1。此步骤表示如果月份为2月并且i=0的EditView中输入值大于2时,那么需要将其调整为之前的输入值,因为对于2月的情况,其日期不可能大于29。
1.1.1:判断i=0的EditView中value值是否等于2,若等于2,则进入流程1.1.1.1;反之,则进入流程1.1.1.2。
1.1.1.1:判断以下条件是否为真:DateView中年份是非闰年,并且i=1的EditView值大于8,若为真,则设置8为i=1的EditView的输入值,同时设置value’的值为value;反之,设置value’的值为value。此步骤表示当前月份为2月,并且日期的首个EditView输入值为2,那么如果是非闰年并且第二个EditView输入值大于8,则需要将第二个EditView输入值调整为8,并且将首个EditView当前的输入值作为最后的确认值,反之,无需调整第二EditView输入值,直接将首个EditView当前的输入值作为最后的确认值。
1.1.1.2:判断i=0的EditView中value值是否等于0,若等于0,则进入流程1.1.1.2.1;反之,设置value’的值为value。此步骤表示当前月份为2月,并且日期的首个EditView输入值如果为1,那么直接将其作为最后的确认值。
1.1.1.2.1:判断i=1的EditView值是否等于0,若等于0,则设置1为i=1的EditView输入值,同时设置value’的值为value;反之,设置value’的值为value。此步骤表示当前月份为2月,并且日期的首个EditView输入值为0,并且第二个EditView输入值也为0,那么需要将第二个EditView的输入值调整为1,并且将第一个EditView当前的输入值作为最后的确认值。如果当前月份为2月,并且日期的首个EditView输入值为0,并且第二个EditView输入值不为0,那么直接将首个EditView输入值作为最后的确认值。
1.2:判断i=0的EditView中value值是否大于3,若大于3,则设置value’的值为prevalue;反之,则进入流程1.2.1。此步骤表示若当前月份不为2月,并且日期的首个EditView输入值大于3,则将日期的首个EditView输入值设置成之前的输入值。
1.2.1:判断i=0的EditView中value值是否等于3,若等于3,则进入流程1.2.1.1;反之,则进入流程1.1.1.2。
1.2.1.1:判断以下条件是否为真:DateView中月份为4月或6月或9月或11月,并且i=1的EditView输入值大于0,若为真,则设置0为i=1的EditView输入值,同时设置value’的值为value;反之,则进入流程1.2.1.1.1。此步骤表示如果月份4月或6月或9月或11月,并且日期的首个EditView输入值为3,以及日期的第二个EditView输入值大于0,则需要将日期的第二个EditView输入值调整为0,并且将首个EditView当前的输入值设置为最后的确认值。
1.2.1.1.1:判断以下条件是否为真:DateView中月份为1月或3月或5月或7月或8月或10月或12月,并且i=1的EditView输入值大于1,若为真,则设置1为i=1的EditView输入值,同时设置value’的值为value;反之,设置value’的值为value。此步骤表示当前月份为1月或3月或5月或7月或8月或10月或12月,并且日期的首个EditView输入值为3,以及第二个EditView输入值大于1,则需要将第二个EditView输入值调整为1,并且设置首个EditView当前的输入值作为最后的确认值。
2:当i=1时,判断i=0的EditView输入值是否小于2,若小于2,则进入流程2.1;反之则进入流程2.2。
2.1:判断以下条件是否为真:i=1的EditView中value值等于0,并且i=0的EditView输入值等于0,若为真,则设置value’值为prevalue;反之,设置value’值为value。此步骤表示如果日期的首个EditView输入值为0,并且第二个EditView输入值等于0,则将第二个EditView输入值调整为之前的输入值,反之则直接将第二个EditView输入值调整为之前的输入值。
2.2:判断i=0的EditView输入值是否等于2,若等于2,则进入流程2.2.1;反之,则进入流程2.2.2。
2.2.1:判断DateView中月份是否为2月,若是2月,则进入流程2.2.1.1;反之,设置value’值为value。此步骤表示当前月份若不为2月,并且首个EditView输入值为2,则可以直接将第二个EditView输入值作为最后的确认值。
2.2.1.1:判断DateView中年份是否为闰年,若是闰年,则设置value’值为value;反之则进入流程2.2.1.1.1。此步骤表示当前月份为2月,且年份为闰年,那么直接将第二个EditView输入值作为最后的确认值。
2.2.1.1.1:判断i=1的EditView中value值是否大于8,若大于8,则设置value’值为prevalue;反之,设置value’值为value。此步骤表示当前月份为2月,且年份为非闰年,并且第二个EditView输入值大于8,那么将第二个EditView输入值调整为之前的输入值。
2.2.2:判断以下条件是否为真:DateView中月份为1月或3月或5月或7月或8月或10月或12月,若为真,则进入流程2.2.2.1;反之,则进入流程2.2.2.2。
2.2.2.1:判断i=1的EditView中value值是否大于等于2,若大于等于2,则设置value’值为prevalue;反之,设置value’值为value。此步骤表示当前月份为1月或3月或5月或7月或8月或10月或12月,并且首个EditView输入值大于2,以及第二个EditView输入值大于等于2,那么将第二个EditView输入值调整为之前的输入值,如果当前月份为1月或3月或5月或7月或8月或10月或12月,并且首个EditView输入值大于2,以及第二个EditView输入值小于2,那么直接将第二个EditView当前的输入值作为最后的确认值。
2.2.2.2:判断i=1的EditView中value值是否大于等于1,若大于等于1,则设置value’值为prevalue;反之,设置value’值为value。此步骤表示当前月份不是1月或3月或5月或7月或8月或10月或12月,并且首个EditView输入值大于2,以及第二个EditView输入值大于等于1,那么将第二个EditView输入值调整为之前的输入值;如果当前月份不是1月或3月或5月或7月或8月或10月或12月,并且首个EditView输入值大于2,以及第二个EditView输入值小于1,那么直接将第二个EditView当前的输入值作为最后的确认值。
3:当i=2时,判断i=2的EditView中value值是否大于1,若大于1,则设置value’值为prevalue;反之,则进入流程3.1。此步骤表示月份的首个EditView输入值大于1,那么直接将其设置成之前的输入值。
3.1:判断i=2的EditView中value值是否等于0,若等于0,则进入流程3.1.1;反之,则进入流程3.1.2。
3.1.1:判断i=3的EditView输入值是否等于0,若等于0,则设置1为i=3的EditView输入值,同时设置value’的值为value;反之,则进入流程3.1.1.1。此步骤表示月份的第二个EditView输入值等于0,并且月份的首个EditView输入值为0,则设置将月份的第二个EditView输入值调整为1,并且将月份的第一个EditView当前的输入值作为最后的确认值。
3.1.1.1:判断i=3的EditView输入值是否等于2,若等于2,则进入流程3.1.1.1.1;反之,设置value’的值为value。此步骤表示月份的第二个EditView输入值不为2,并且月份的首个EditView输入值为0,则直接将月份的首个EditView输入值作为最后的确认值。
3.1.1.1.1:判断以下条件是否为真:DateView中年份是非闰年,并且DateView中日期大于28,若为真,则设置DateView中日期为28,同时设置value’的值为value;反之,则进入流程3.1.1.1.1.1。此步骤表示月份的第二个EditView输入值为2,并且月份的首个EditView输入值为0,并且如果年份是非闰年,日期大于28,则需要将日期设置为28,同时设置月份的首个EditView当前的输入值为最后的确认值。
3.1.1.1.1.1:判断以下条件是否为真:DateView中年份为闰年,并且DateView中日期大于29,若为真,则设置DateView中日期为29,同时设置value’的值为value;反之,设置value’的值为value。此步骤表示月份的第二个EditView输入值为2,并且月份的首个EditView输入值为0,并且如果年份是闰年,日期大于29,则需要将日期设置为29,同时设置月份的首个EditView当前的输入值为最后的确认值。如果年份是闰年,日期不大于29,则直接设置月份的首个EditView当前的输入值为最后的确认值。
3.1.2:判断i=3的EditView输入值是否大于2,若大于2,则设置2为i=3的EditView输入值,同时设置value’的值为value;反之,则进入流程3.1.2.1。此步骤表示月份的首个EditView输入值为1,并且月份的第二个EditView输入值大于2,那么将月份的第二个EditView输入值为2,同时设置月份的首个EditView当前输入值作为最后的确认值。
3.1.2.1:判断i=3的EditView输入值是否等于1,若等于1,则进入流程3.1.2.1.1;反之,设置value’的值为value。此步骤表示月份的首个EditView输入值为1,并且月份的第二个EditView输入值为0或2,则设置月份的首个EditView当前输入值作为最后的确认值。
3.1.2.1.1:判断DateView中日期大于30,若为真,则设置DateView中日期为30,同时设置value’的值为value;反之,设置value’的值为value。此步骤表示月份的首个EditView输入值为1,并且月份的第二个EditView输入值为1,并且日期大于30,那么设置日期为30,同时设置月份的第二个EditView当前的输入值作为最后的确认值。
4:当i=3时,判断i=2的EditView输入值是否等于0,若等于0,则进入流程4.1;反之,则进入流程4.2。
4.1:判断i=3的EditView中value是否等于0,若等于0,则设置value’值为prevalue;反之,则进入流程4.1.1。此步骤表示月份的首个EditView输入值为0,并且月份的第二个EditView输入值为0,那么将月份的第二个EditView输入值调整为之前的输入值。
4.1.1:判断以下条件是否为真:i=3的EditView中value值是否等于2,并且DateView中年份是闰年,若为真,则进入流程4.1.1.1;反之,则进入流程4.1.1.2。
4.1.1.1:判断DateView中日期是否大于29,若大于29,则设置DateView中日期为29,同时设置value’值为value;反之,设置value’值为value。此步骤表示月份的首个EditView输入值为0,且月份的第二个EditView输入值为2,且年份为闰年,日期大于29,那么设置DateView中日期为29,同时设置月份的第二个EditView当前的输入值作为最后的确认值。如果日期不大于29,那么直接将月份的第二个EditView当前的输入值作为最后的确认值。
4.1.1.2:判断以下条件是否为真:i=3的EditView中value值等于2,并且DateView中年是非闰年,若为真,则进入流程4.1.1.2.1;反之,则进入流程4.1.1.2.2。
4.1.1.2.1:判断DateView中日期是否大于28,若大于28,则设置DateView中日期为28,同时设置value’值为value;反之,设置value’值为value。此步骤表示月份的首个EditView输入值为0,且月份的第二个EditView输入值为2,且年份为非闰年,日期大于28,则设置DateView中日期为28,同时设置月份的第二个EditView当前的输入值作为最后的确认值。如果满足以上条件,但日期不大于28,则直接将月份的第二个EditView当前的输入值作为最后的确认值。
4.1.1.2.2:判断以下条件是否为真:i=3的EditView中value值等于4或6或9,若为真,则进入流程4.1.1.2.2.1;反之,设置value’值为value。此步骤表示月份的首个EditView输入值为0,且月份的第二个EditView输入值不是4、6或9,那么直接将月份的第二个EditView当前的输入值作为最后的确认值。
4.1.1.2.2.1:判断DateView中日期是否大于30,若大于30,则设置DateView中日期为30,同时设置value’值为value;反之,设置value’值为value。此步骤表示月份的首个EditView输入值为0,且月份的第二个EditView输入值是4或6或9,并且日期大于30,则设置日期调整为30,并且将月份的第二个EditView当前的输入值作为最后的确认值。如果日期不大于30,则可以直接将月份的第二个EditView当前的输入值作为最后的确认值。
4.2:判断i=2的EditView输入值是否等于1,若等于1,则进入流程4.2.1;反之,设置value’值为value。此步骤表示月份的首个EditView输入值不为0也不为1,则将月份的第二个EditView当前的输入值作为最后的确认值,至于月份的第一个EditView输入值是否合理,则由i=2的算法来进行检测即可。
4.2.1:判断DateView中日期大于30,并且value值等于1,若为真,则设置DateView中日期为30,同时设置value’值为value;反之,则进入流程4.2.1.1。此步骤表示月份的首个EditView输入值为1,月份第二个EditView输入值为1,并且日期大于30,则将日期调整为30,并且将月份的第二个EditView输入值调整为之前的输入值。
4.2.1.1:判断i=3的EditView中value值是否大于2,若大于2,则设置value’值为prevalue;反之,设置value’值为value。此步骤表示月份的首个EditView输入值为1,月份第二个EditView输入值大于2,那么将月份第二个EditView输入值调整为之前的输入值,反之,就直接将月份的第二个EditView当前的输入值作为最后的确认值。
5:当i=4时,判断i=4的EditView中value值是否不等于2,若不等于2,则设置value’值为2;反之,则进入流程5.1。此步骤表示年份的首个EditView输入值需要等于2。
5.1:判断以下条件是否为真:DateView中月份是2月,并且DateView中年份为非闰年,并且DateView中日期大于28,若为真,则设置DateView中日期为28,同时设置value’值为value;反之,设置value’值为value。此步骤表示月份为2月,年份为非闰年,日期大于28,则需要调整日期为28,并且将年份的首个EditView当前的输入值作为最后的确认值。
6:当i=5时,判断以下条件是否为真:DateView中月份是2月,并且DateView中年份为非闰年,并且DateView中日期大于28,若为真,则设置DateView中日期为28,同时设置value’值为value;反之,则进入流程6.1。此步骤表示月份为2月,年份为非闰年,日期大于28,则需要调整日期为28,并且将年份的第二个EditView当前的输入值作为最后的确认值。
6.1:判断以下条件是否为真:DateView中月份是4月或6月或9月或11月,并且DateView中日期大于30,若为真,则设置DateView中日期为30,同时设置value’值为value;反之,设置value’值为value。此步骤月份为4月或6月或9月或11月,并且DateView中日期大于30,则需要调整日期为30,并将年份的第二个EditView当前的输入值作为最后的确认值。
7:当i=6时,判断以下条件是否为真:DateView中月份是2月,并且DateView中年份为非闰年,并且DateView中日期大于28,若为真,则设置DateView中日期为28,同时设置value’值为value;反之,则进入流程7.1。此步骤表示月份为2月,年份为非闰年,日期大于28,则需要调整日期为28,并且将年份的第三个EditView当前的输入值作为最后的确认值。
7.1:判断以下条件是否为真:DateView中月份是4月或6月或9月或11月,并且DateView中日期大于30,若为真,则设置DateView中日期为30,同时设置value’值为value;反之,设置value’值为value。此步骤月份为4月或6月或9月或11月,并且DateView中日期大于30,则需要调整日期为30,并将年份的第三个EditView当前的输入值作为最后的确认值。
8:当i=7时,判断以下条件是否为真:DateView中月份是2月,并且DateView中年份为非闰年,并且DateView中日期大于28,若为真,则设置DateView中日期为28,同时设置value’值为value;反之,则进入流程8.1。此步骤表示月份为2月,年份为非闰年,日期大于28,则需要调整日期为28,并且将年份的最后一个EditView当前的输入值作为最后的确认值。
8.1:判断以下条件是否为真:DateView中月份是4月或6月或9月或11月,并且DateView中日期大于30,若为真,则设置DateView中日期为30,同时设置value’值为value;反之,设置value’值为value。此步骤月份为4月或6月或9月或11月,并且DateView中日期大于30,则需要调整日期为30,并将年份的最后一个EditView当前的输入值作为最后的确认值。
本发明中的时间控件(简称TimeView)继承于线性布局控件(简称LinearLayout),TimeView是组合控件,在TimeView中包含6个可编辑控件(简称EditView),一个EditView表示一个数值输入框,时有4个EditView,分有2个EditView,秒有2个EditView,这6个EditView优选采用横向布局方式。
假设本发明的方法应用在智能电视中,那么在这6个EditView中,可以通过遥控器数字键或者输入法中数字键输入0~9的数字,当然也可应用在其他设备中,采用其他方式进行输入。
本发明中时间控件界面显示顺序为时、分、秒(当然也可采用秒、分、时的显示顺序或者分、时、秒的显示顺序,或者其他的显示顺序)。
TimeView中创建MyTextWatcher类,实现TextWatcher接口类(编辑框***类),对每个EditText通过addTextChangedListener监听textChange(文本改变)事件,实现抽象方法onTextChanged(CharSequence charsequence, int i, int j, int k)。时间检测算法逻辑在onTextChanged(CharSequence charsequence, int i, int j, int k)方法中实现。该时间检测算法如图3所示,首先获取当前***时间,初始化时间控件界面,然后输入数字,触发第i个EditView的TextWatcher事件(index=i),然后MyTextWatcher(i)向时间控件请求其年份、月份、日期,并由时间控件返回相关信息,由MyTextWatcher(i)完成数据检测。
即在本发明的时间控件中,需要依次对时、分、秒的可编辑控件输入的数据进行检测,使其满足时间控件的条件。时间控件所要满足的条件如下:
时的数据范围为[00,23];
分的数据范围为[00,59];
秒的数据范围为[00,59]。
具体来说,时间检测算法步骤如下:
输入:value表示当前EditView的输入值;prevalue表示当前EditView输入值之前的数值;i表示当前EditView的编号(时间检测算法中此值依次为0,1,2,3,4,5)。
输出:value’表示当前EditView最后的确定值。
处理流程如下:
1:当i=0时,判断i=0的EditView中value值是否大于2,若大于2,则设置value’值为prevalue;反之,则进入流程1.1。此步骤表示时的首个EditView输入值大于2,则将其调整为之前的输入值。
1.1:判断i=0的EditView中value值是否等于2,若等于2,则设置value’值为value;反之,则进入流程1.1.1。此步骤表示时的首个EditView输入值为2,则将其作为最后的确认值。
1.1.1:判断i=1的EditView输入值是否大于3,若大于3,则设置3为i=1的EditView输入值,同时设置value’的值为value;反之,设置value’的值为value。此步骤表示时的首个EditView输入值为0或者1,并且时的第二个EditView输入值大于3,则将时的第二个EditView输入值调整为3,并将时的第一个EditView当前的输入值作为最后的确认值。
2:当i=1时,判断i=0的EditView输入值是否小于2,若小于2,则设置value’值为value;反之,则进入流程2.1。此步骤表示时的首个EditView输入值小于2,则将时的第二个EditView当前的输入值作为最后的确认值。
2.1:判断i=1的EditView中value值是否大于等于4,若大于等于4,则设置value’值为prevalue;反之,则设置value’值为value。此步骤表示时的首个EditView输入值不小于2,并且时的第二个EditView输入值大于等于4,则将时的第二个EditView输入值调整为之前的输入值。
3:当i=2时,判断i=2的EditView中value值是否大于等于6,若大于等于6,则设置value’值为prevalue;反之,则设置value’的值为value。此步骤表示分的首个EditView输入值若大于等于6,则将其调整为之前的输入值。
4:当i=4时,判断i=4的EditView中value值是否大于等于6,若大于等于6,则设置value’值为prevalue;反之,则设置value’的值为value。此步骤表示秒的首个EditView输入值若大于等于6,则将其调整为之前的输入值。
基于上述方法,本发明还提供智能设备的日历时间控件的实现***较佳实施例,如图4所示,其包括:
日历控件实现模块100,用于创建继承于线性布局控件的日历控件,所述日历控件包含用于代表日历的8个可编辑控件;在日历控件中实现编辑框***类,对每个可编辑控件进行监听、条件限制和修改;
时间控件实现模块200,用于创建继承于线性布局控件的时间控件,所述时间控件包含用于代表时间的6个可编辑控件;在时间控件中实现编辑框***类,对每个可编辑控件进行监听、条件限制和修改。
进一步,日历控件的8个可编辑控件包括:用于显示年份的4个可编辑控件、用于显示月份的2个可编辑控件、用于显示日期的2个可编辑控件。
进一步,日历控件所要满足的条件为:
当日历控件中年份为非闰年且月份为2月时,日期小于29,当日历控件中年份为闰年且月份为2月时,日期小于30;
日期、月份、年份的可编辑控件中的数据不同时为0;
当月份为4月、6月、9月或11月时,日期小于31,当月份为1月、3月、5月、7月、8月、10月或12月时,日期小于32;
月份的数据范围为[01,12];
日期的数据范围为[01,31]。
进一步,时间控件的6个可编辑控件包括用于显示时的2个可编辑控件、用于显示分的2个可编辑控件和用于显示秒的2个可编辑控件。
进一步,时间控件所要满足的条件为:
时的数据范围为[00,23];
分的数据范围为[00,59];
秒的数据范围为[00,59]。
关于上述模块的技术细节在前面的方法中已有详述,故不再赘述。
综上所述本发明的方法保证了输入日期和时间的正确性;同时将复杂的日历检测算法和时间检测算法抽离,重新封装到控件逻辑中,对外提供获取日历和时间的接口方法,供使用者直接调用,从而节省开发时间,并且减少代码逻辑。并且本发明支持数字按键直接输入,可以快速调整日历和时间。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (10)
1.一种智能设备的日历时间控件的实现方法,其特征在于,包括步骤:
创建继承于线性布局控件的日历控件,所述日历控件包含用于代表日历的8个可编辑控件;在日历控件中实现编辑框***类,对每个可编辑控件进行监听、条件限制和修改;
创建继承于线性布局控件的时间控件,所述时间控件包含用于代表时间的6个可编辑控件;在时间控件中实现编辑框***类,对每个可编辑控件进行监听、条件限制和修改;
在日历控件和时间控件中创建MyTextWatcher类,实现TextWatcher接口类,对每个EditText通过addTextChangedListener监听textChange事件,日历检测算法和时间检测算法逻辑均在onTextChanged方法中实现,首先获取当前***时间,初始化日历控件或时间控件界面,然后输入数字,触发第i个EditView的TextWatcher事件,然后MyTextWatcher(i)向日历控件请求年份、月份、日期,并由日历控件返回信息,或MyTextWatcher(i)向时间控件请求时、分、秒,并由时间控件返回信息。
2.根据权利要求1所述的实现方法,其特征在于,日历控件的8个可编辑控件包括:用于显示年份的4个可编辑控件、用于显示月份的2个可编辑控件、用于显示日期的2个可编辑控件。
3.根据权利要求2所述的实现方法,其特征在于,日历控件所要满足的条件为:
当日历控件中年份为非闰年且月份为2月时,日期小于29,当日历控件中年份为闰年且月份为2月时,日期小于30;
日期、月份、年份的可编辑控件中的数据不同时为0;
当月份为4月、6月、9月或11月时,日期小于31,当月份为1月、3月、5月、7月、8月、10月或12月时,日期小于32;
月份的数据范围为[01,12];
日期的数据范围为[01,31]。
4.根据权利要求1所述的实现方法,其特征在于,时间控件的6个可编辑控件包括用于显示时的2个可编辑控件、用于显示分的2个可编辑控件和用于显示秒的2个可编辑控件。
5.根据权利要求4所述的实现方法,其特征在于,时间控件所要满足的条件为:
时的数据范围为[00,23];
分的数据范围为[00,59];
秒的数据范围为[00,59]。
6.一种智能设备的日历时间控件的实现***,其特征在于,包括:
日历控件实现模块,用于创建继承于线性布局控件的日历控件,所述日历控件包含用于代表日历的8个可编辑控件;在日历控件中实现编辑框***类,对每个可编辑控件进行监听、条件限制和修改;
时间控件实现模块,用于创建继承于线性布局控件的时间控件,所述时间控件包含用于代表时间的6个可编辑控件;在时间控件中实现编辑框***类,对每个可编辑控件进行监听、条件限制和修改;
在日历控件和时间控件中创建MyTextWatcher类,实现TextWatcher接口类,对每个EditText通过addTextChangedListener监听textChange事件,日历检测算法和时间检测算法逻辑均在onTextChanged方法中实现,首先获取当前***时间,初始化日历控件或时间控件界面,然后输入数字,触发第i个EditView的TextWatcher事件,然后MyTextWatcher(i)向日历控件请求年份、月份、日期,并由日历控件返回信息,或MyTextWatcher(i)向时间控件请求时、分、秒,并由时间控件返回信息。
7.根据权利要求6所述的实现***,其特征在于,日历控件的8个可编辑控件包括:用于显示年份的4个可编辑控件、用于显示月份的2个可编辑控件、用于显示日期的2个可编辑控件。
8.根据权利要求7所述的实现***,其特征在于,日历控件所要满足的条件为:
当日历控件中年份为非闰年且月份为2月时,日期小于29,当日历控件中年份为闰年且月份为2月时,日期小于30;
日期、月份、年份的可编辑控件中的数据不同时为0;
当月份为4月、6月、9月或11月时,日期小于31,当月份为1月、3月、5月、7月、8月、10月或12月时,日期小于32;
月份的数据范围为[01,12];
日期的数据范围为[01,31]。
9.根据权利要求6所述的实现***,其特征在于,时间控件的6个可编辑控件包括用于显示时的2个可编辑控件、用于显示分的2个可编辑控件和用于显示秒的2个可编辑控件。
10.根据权利要求9所述的实现***,其特征在于,时间控件所要满足的条件为:
时的数据范围为[00,23];
分的数据范围为[00,59];
秒的数据范围为[00,59]。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510838064.3A CN105468374B (zh) | 2015-11-26 | 2015-11-26 | 一种智能设备的日历时间控件的实现方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510838064.3A CN105468374B (zh) | 2015-11-26 | 2015-11-26 | 一种智能设备的日历时间控件的实现方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105468374A CN105468374A (zh) | 2016-04-06 |
CN105468374B true CN105468374B (zh) | 2020-02-07 |
Family
ID=55606117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510838064.3A Active CN105468374B (zh) | 2015-11-26 | 2015-11-26 | 一种智能设备的日历时间控件的实现方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105468374B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110022285B (zh) * | 2018-01-08 | 2021-09-07 | 武汉斗鱼网络科技有限公司 | 一种用于检测用户信息的方法、装置及计算机设备 |
CN111949142A (zh) * | 2020-08-10 | 2020-11-17 | 智业软件股份有限公司 | 一种时间录入方法、终端设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103279559A (zh) * | 2013-06-13 | 2013-09-04 | 北京神鹰城讯科技有限公司 | 基于安卓***的富文本编辑方法及富文本编辑器 |
JP5666038B1 (ja) * | 2014-03-20 | 2015-02-04 | 竹井 一男 | 録音機能付きカレンダー装置 |
CN104932883A (zh) * | 2015-06-04 | 2015-09-23 | 苏州全维软件科技有限公司 | 基于wap的动态日历控件生成方法 |
-
2015
- 2015-11-26 CN CN201510838064.3A patent/CN105468374B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103279559A (zh) * | 2013-06-13 | 2013-09-04 | 北京神鹰城讯科技有限公司 | 基于安卓***的富文本编辑方法及富文本编辑器 |
JP5666038B1 (ja) * | 2014-03-20 | 2015-02-04 | 竹井 一男 | 録音機能付きカレンダー装置 |
CN104932883A (zh) * | 2015-06-04 | 2015-09-23 | 苏州全维软件科技有限公司 | 基于wap的动态日历控件生成方法 |
Non-Patent Citations (1)
Title |
---|
简单的日期输入格式化控件dateInputer;IT小兵;《简单的日期输入格式化控件dateInputer》;20150312;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN105468374A (zh) | 2016-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10929109B2 (en) | Method and apparatus for converting building block programming into program code | |
CN108648810B (zh) | 医学审核的数据处理方法、装置、及计算机可读存储介质 | |
CN109408262B (zh) | 一种业务数据处理方法及相关设备 | |
CN106803197A (zh) | 拼单方法和设备 | |
CN105468374B (zh) | 一种智能设备的日历时间控件的实现方法和*** | |
CN104808959B (zh) | 一种信息处理方法及电子设备 | |
CN110277092A (zh) | 一种语音播报方法、装置、电子设备及可读存储介质 | |
CN108287718A (zh) | 基于游戏引擎的特效编辑方法及装置 | |
CN115599640A (zh) | 异常供应端告警方法、电子设备和介质 | |
CN106155477A (zh) | 屏幕图标尺寸的调整方法、装置及终端 | |
US20230005100A1 (en) | Method, apparatus, device and storage medium for detecting a card surface picture | |
US20140278313A1 (en) | Simulation methods and systems for an aircraft | |
CN111599298A (zh) | 色温调节方法、可穿戴设备及存储介质 | |
CN116028255A (zh) | 异常检测方法及装置、***、电子设备及存储介质 | |
CN104536709A (zh) | 一种显示控制方法 | |
EP4009142A1 (en) | Apparatus, method and program to adjust the parameters of a display | |
CN115619170A (zh) | 电量负荷调整方法、装置、设备、计算机介质和程序产品 | |
CN114187092A (zh) | 一种利率确定方法、装置、设备及介质 | |
CN110457063B (zh) | 脚本程序的封装方法及装置、电子设备、可读存储介质 | |
WO2016091010A1 (zh) | 倒计时方法及装置 | |
CN108228216A (zh) | 更新方法、信息处理***和电子设备 | |
CN109634765B (zh) | 消息获取方法、电子设备和计算机存储介质 | |
CN115645741A (zh) | 一种眼部电波治疗仪的电波输出控制*** | |
CN116264017A (zh) | 基于场景的人脸识别方法、终端、电子设备和存储介质 | |
CN118115294A (zh) | 一种用户提示方法、装置、设备及其存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |