赞
踩
首先声明,我大多时候比较懒,喜欢用现成的,就是只需要简单的修改一下就可以直接使用的那种
2022 Hint:技术迭代非常快,如果要选择合适的工具,还是要自己去github找一下的!
在此之前,我找过几款日期选择器
的控件,也断断续续用了一天左右的时间,但是中途都不尽人意,还好修修补补实现了我的功能需求,那么下面直接看图,看代码吧。
转载请注明:timeSelector(日期选择器)简单、方便、快速的实现方式
框架名称,几近相同,但不是同一个开发者,且记,因该篇写的较早,所以兼容性、扩展性很有限,而且仅仅只是一个时间选择控制器而已
首先我的需求是实现一个年月日的选择器,不需要实现-小时分钟
Effect - 年月日时分
Effect - 年月日
被我抛弃,原因有俩点:
优点:
请求:如果后续有前辈找出缺点的补救方法,麻烦您评论留言
Hint:此控件作者的git地址:https://github.com/yellowhai/TimeSelector
build - 基于app
compile 'com.github.yellowhai:TimeSelector:1.4'
build - 基于project
allprojects {
repositories {
maven { url 'https://jitpack.io' }
jcenter()
}
}
MainActivity :
package com.example.dow.timeselector; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.TextView; import android.widget.Toast; import com.hh.timeselector.timeutil.datedialog.DateListener; import com.hh.timeselector.timeutil.datedialog.TimeConfig; import com.hh.timeselector.timeutil.datedialog.TimeSelectorDialog; public class MainActivity extends AppCompatActivity { private TextView mContent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView mBtn = (TextView) findViewById(R.id.btn); mContent = (TextView) findViewById(R.id.content); mBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { TimeSelectorDialog dialog = new TimeSelectorDialog(MainActivity.this); //设置标题 dialog.setTimeTitle("选择时间:"); //显示类型 dialog.setIsShowtype(TimeConfig.YEAR_MONTH_DAY_HOUR_MINUTE); //默认时间 dialog.setCurrentDate("2017-01-11 14:50"); //隐藏清除按钮 dialog.setEmptyIsShow(false); //设置起始时间 dialog.setStartYear(1888); dialog.setDateListener(new DateListener() { @Override public void onReturnDate(String time,int year, int month, int day, int hour, int minute, int isShowType) { Toast.makeText(MainActivity.this,time,Toast.LENGTH_LONG).show(); mContent.setText(time); } @Override public void onReturnDate(String empty) { Toast.makeText(MainActivity.this,empty,Toast.LENGTH_LONG).show(); } }); dialog.show(); } }); } }
activity_main
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent" tools:context="com.example.dow.timeselector.MainActivity"> <TextView android:id="@+id/btn" android:padding="5dp" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="时间选择器" /> <TextView android:id="@+id/content" android:padding="5dp" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" /> </LinearLayout>
Effect - 年月日:
build
compile 'com.feezu.liuli:timeselector:1.1.3+'
所遇问题
问题1:调用不了setMode这个方法,也就是实用不了年月日的效果
答疑:因为我一开始引用的是0.0.8+的依赖包,而setMode这个api是出现在1.1.0之后的,所以更换依赖之后,此问题解决
问题2:获取数据之后,默认返回还包含00.00的时分单位
答疑:使用substring直接截取字符串长度,获取我们所需(这个要是集成到他的项目中可能更好)
优点
:可快速实现需求,在setIsShowtype中有多种样式,代码较少,使用方便
Hint:此控件作者的git地址:https://github.com/mrfluency/Time-Selector
MainActivity
package com.example.dow.timerdemo; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.TextView; import android.widget.Toast; import org.feezu.liuli.timeselector.TimeSelector; public class MainActivity extends AppCompatActivity { private TextView mContent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView mBtn = (TextView) findViewById(R.id.btn); mContent = (TextView) findViewById(R.id.content); mBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { TimeSelector timeSelector = new TimeSelector(MainActivity.this, new TimeSelector.ResultHandler() { @Override public void handle(String time) { //截取字符串长度,只需要年月日 String substring = time.substring(0,10); mContent.setText(substring); } }, "1988-01-01 00:00", "2018-12-1 17:34"); //样式-当前为年月日 timeSelector.setMode(TimeSelector.MODE.YMD); //小时分钟不现实 timeSelector.disScrollUnit(TimeSelector.SCROLLTYPE.HOUR, TimeSelector.SCROLLTYPE.MINUTE); //dialog的弹出 meSelector.show(); } }); } }
activity_main
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.dow.timerdemo.MainActivity"> <TextView android:id="@+id/btn" android:layout_width="match_parent" android:gravity="center" android:layout_height="wrap_content" android:padding="5dp" android:text="时间选择器" /> <TextView android:id="@+id/content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" /> </LinearLayout>
DateUtils(记得添加依赖,还有自己导包):
package com.example.dow.timerdemo; import android.content.Context; import android.widget.TextView; //import org.feezu.liuli.timeselector.TimeSelector; /** * Created by YongLiu on 2017/5/18. */ public class DateUtils { /** * 年月日 * @param mContext 上下文 * @param textView 显示日期的View * */ public static void showDayDate(Context mContext,final TextView textView){ TimeSelector timeSelector = new TimeSelector(mContext, new TimeSelector.ResultHandler() { @Override public void handle(String time) { //截取字符串长度,只需要年月日 String substring = time.substring(0,10); textView.setText(substring); } }, "1988-01-01 00:00", "2018-12-1 17:34"); //样式-当前为年月日 timeSelector.setMode(TimeSelector.MODE.YMD); //小时分钟不现实 timeSelector.disScrollUnit(TimeSelector.SCROLLTYPE.HOUR, TimeSelector.SCROLLTYPE.MINUTE); //dialog的弹出 timeSelector.show(); } /** * 年月日时分 * @param mContext 上下文 * @param textView 显示日期的View * */ public static void showMinuteDate(Context mContext,final TextView textView){ TimeSelector timeSelector = new TimeSelector(mContext, new TimeSelector.ResultHandler() { @Override public void handle(String time) { textView.setText(time); } }, "1988-01-01 00:00", "2018-12-1 17:34"); //样式-当前为年月日 timeSelector.setMode(TimeSelector.MODE.YMD); //小时分钟不现实 timeSelector.disScrollUnit(TimeSelector.SCROLLTYPE.HOUR, TimeSelector.SCROLLTYPE.MINUTE); //dialog的弹出 timeSelector.show(); } }
在需要调用日期的地方,直接使用以下这一行代码即可:
DateUtils.showDayDate(MainActivity.this,mContent);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。