android日历控件
发布时间:2025-05-14 02:32:38 发布人:远客网络
一、android日历控件
在Android中,DatePicker用来实现日期输入设置,日期的设置范围为1900年1月1日至2100年12月31日。
DatePicker的常用xml属性如图1所示:
其中,android:calendarViewShown[boolean]用于设置是否显示calendar view;android:endYear[int]用于设置截至日期;android:maxDate[int]用于设置最大的日期;android:minDate[int]用于设置最小的日期;android:spinnersShown[boolean]用于设置是否显示spinners;android:startYear[int]用于设置起始日期。
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);//更新当前日期
在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小时模式
在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);//更新当前日期
在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);//更新当前时间
在Android中,AnalogClock用于显示指针式时钟,该时钟仅有时钟和分钟两个指针。
在Android中,DigitalClock用来显示数字式时钟,显示格式为HH:MM:SS AM/PM。
二、Android系统列表控件
1、在Android系统中,展示列表数据的控件多样且各有特点。首先,我们来介绍ListView,这是Android中常用的UI组件,通过滑动屏幕展示多个内容。
2、ListView以列表形式展示数据,并能根据数据长度自适应显示,适配器是关键。有ArrayAdapter、SimpleAdapter和SimpleCursorAdapter三种类型。在开发中,通常继承BaseAdapter来自定义适配器和效果。
3、数据更新时,需重新设置适配器数据并调用`notifyDataSetChanged`方法。对于ListView的自定义视图,开发者常使用自定义Holder类。
4、接下来是GridView,它以网格形式展示数据,通过自定义BaseAdapter实现。与ListView类似,主要关注如何实现自定义Adapter和交互。
5、接着是RecyclerView,它被认为是ListView和GridView的增强版,适合处理大量数据集。布局管理器是其特点之一,有默认的三个布局管理器,支持横向、纵向排列和反向滑动。通过`setLayoutManager`方法调整滑动方向。
6、对于监听和点击事件,RecyclerView不自带,开发者需自定义实现。此外,RecyclerView支持丰富的动画效果,增强用户交互体验。
7、实现下拉刷新和上拉加载功能,通过监听滑动事件,当用户滑动达到特定距离时触发刷新或加载操作。可以使用`addHeaderView`和`addFooterView`为列表添加头部和底部视图,实现刷新和加载效果。
8、另外,SwipeRefreshLayout控件专门用于实现滑动刷新功能,提供独特的进度条展示,并触发回调方法。需注意控件使用时的兼容性问题。
9、在列表控件的交互中,事件是核心,通过事件实现各种效果和功能。列表控件的优化是一个系统性工作,涉及性能、布局、动画等多个方面,需结合业务场景进行优化。
10、总结,掌握常用优化方法是列表控件开发的关键,同时,团队合作与业务场景的深度理解对优化工作至关重要。随着应用功能和系统迭代,优化工作将不断进行。
三、Android 自定义控件 layout
View:View主要执行layout方法,使用 serFrame方法来设置本身 View的四个顶点的位置,确定View本身的位置。
ViewGroup:ViewGroup主要执行onLayout方法,递归遍历所有子View,确定子View的位置。
我们来看ViewRootImpl中的 performLayout()方法
看到这里,那host.getMeasuredWidth()/ host.getMeasuredHeight()是什么?它是直接调用View中的方法,其实就是经过measure后的DecorView的测量宽度和高度。在 Android自定义控件 measure中有说明。
2.3.2.1我们先来看ViewGroup中的 layout()方法
ViewGroup里面的layout最终会调入到父类View中的layout,View的layout后面讲解。这里可以先告诉大家,最终会调用View的onLayout方法,而ViewGroup的onLayout是抽象方法,所以它的子类LinearLayout必须要实现。
2.3.2.2我们再来看LinearLayout中的 onLayout()方法。
2.3.2.3挑一个纵向的吧,我们再来看LinearLayout中的 layoutVertical()方法。
2.3.2.4我们再来看LinearLayout中的 setChildFrame()方法。
又一次回到了View的layout方法,接下来就看View分发的layout。
我们先来看View中的 layout()方法。
我们先来看View中的 onLayout()方法。
空空如也,其实View的布局由父容器决定,所以空实现是正常的,当然也可以在自定义View中进行更改。
Android开发之自定义控件(二)---onLayout详解
自定义View Layout过程-最易懂的自定义View原理系列(3)