热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android进阶之路timeSelector(日期选择器)简单、方便、快速的实现方式

首先声明,我大多时候比较懒,喜欢用现成的,就是只需要简单的修改一下就可以直接使用的那种2022Hint:技术迭代非常快&#x

首先声明,我大多时候比较懒,喜欢用现成的,就是只需要简单的修改一下就可以直接使用的那种


2022 Hint:技术迭代非常快,如果要选择合适的工具,还是要自己去github找一下的!

在此之前,我找过几款日期选择器的控件,也断断续续用了一天左右的时间,但是中途都不尽人意,还好修修补补实现了我的功能需求,那么下面直接看图,看代码吧。

转载请注明:timeSelector(日期选择器)简单、方便、快速的实现方式

框架名称,几近相同,但不是同一个开发者,且记,因该篇写的较早,所以兼容性、扩展性很有限,而且仅仅只是一个时间选择控制器而已


      • TimeSelector 框架
        • 先行配置
        • 具体实现
      • timeselector 框架
        • 先行配置
        • 具体使用


TimeSelector 框架

首先我的需求是实现一个年月日的选择器,不需要实现-小时分钟

Effect - 年月日时分

这里写图片描述

Effect - 年月日

这里写图片描述

被我抛弃,原因有俩点:


  1. 确定与取消的左右位置,不太习惯,不符合大多数人的惯性思维
  2. 确定与取消的按钮没有居中,样式不被产品看好(自己都不看好)

优点:


  1. 可快速实现需求,在setIsShowtype中有多种样式,总有一款可以满足我们
  2. 窗外关闭,也就是点击外面直接关闭控件

请求:如果后续有前辈找出缺点的补救方法,麻烦您评论留言

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;@Overrideprotected 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() {@Overridepublic 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() {@Overridepublic 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);}@Overridepublic void onReturnDate(String empty) {Toast.makeText(MainActivity.this,empty,Toast.LENGTH_LONG).show();}});dialog.show();}});}
}

activity_main

<?xml version&#61;"1.0" encoding&#61;"utf-8"?>
<LinearLayout xmlns:android&#61;"http://schemas.android.com/apk/res/android"xmlns:tools&#61;"http://schemas.android.com/tools"android:id&#61;"&#64;&#43;id/activity_main"android:layout_width&#61;"match_parent"android:orientation&#61;"vertical"android:layout_height&#61;"match_parent"tools:context&#61;"com.example.dow.timeselector.MainActivity"><TextViewandroid:id&#61;"&#64;&#43;id/btn"android:padding&#61;"5dp"android:layout_gravity&#61;"center"android:layout_width&#61;"wrap_content"android:layout_height&#61;"wrap_content"android:text&#61;"时间选择器" /><TextViewandroid:id&#61;"&#64;&#43;id/content"android:padding&#61;"5dp"android:layout_gravity&#61;"center"android:layout_width&#61;"wrap_content"android:layout_height&#61;"wrap_content"android:text&#61;"" />
</LinearLayout>



timeselector 框架

Effect - 年月日:

这里写图片描述


先行配置

build

compile &#39;com.feezu.liuli:timeselector:1.1.3&#43;&#39;

所遇问题

问题1&#xff1a;调用不了setMode这个方法&#xff0c;也就是实用不了年月日的效果
答疑&#xff1a;因为我一开始引用的是0.0.8&#43;的依赖包&#xff0c;而setMode这个api是出现在1.1.0之后的&#xff0c;所以更换依赖之后&#xff0c;此问题解决

问题2&#xff1a;获取数据之后&#xff0c;默认返回还包含00.00的时分单位
答疑&#xff1a;使用substring直接截取字符串长度&#xff0c;获取我们所需&#xff08;这个要是集成到他的项目中可能更好&#xff09;

优点&#xff1a;可快速实现需求&#xff0c;在setIsShowtype中有多种样式&#xff0c;代码较少&#xff0c;使用方便

Hint&#xff1a;此控件作者的git地址&#xff1a;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;&#64;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);TextView mBtn &#61; (TextView) findViewById(R.id.btn);mContent &#61; (TextView) findViewById(R.id.content);mBtn.setOnClickListener(new View.OnClickListener() {&#64;Overridepublic void onClick(View v) {TimeSelector timeSelector &#61; new TimeSelector(MainActivity.this, new TimeSelector.ResultHandler() {&#64;Overridepublic void handle(String time) {//截取字符串长度&#xff0c;只需要年月日String substring &#61; 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


<LinearLayout xmlns:android&#61;"http://schemas.android.com/apk/res/android"xmlns:tools&#61;"http://schemas.android.com/tools"android:id&#61;"&#64;&#43;id/activity_main"android:layout_width&#61;"match_parent"android:layout_height&#61;"match_parent"android:orientation&#61;"vertical"tools:context&#61;"com.example.dow.timerdemo.MainActivity"><TextViewandroid:id&#61;"&#64;&#43;id/btn"android:layout_width&#61;"match_parent"android:gravity&#61;"center"android:layout_height&#61;"wrap_content"android:padding&#61;"5dp"android:text&#61;"时间选择器" /><TextViewandroid:id&#61;"&#64;&#43;id/content"android:layout_width&#61;"wrap_content"android:layout_height&#61;"wrap_content"android:layout_gravity&#61;"center"/>LinearLayout>

DateUtils&#xff08;记得添加依赖&#xff0c;还有自己导包&#xff09;&#xff1a;

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 {/*** 年月日* &#64;param mContext 上下文* &#64;param textView 显示日期的View* */public static void showDayDate(Context mContext,final TextView textView){TimeSelector timeSelector &#61; new TimeSelector(mContext, new TimeSelector.ResultHandler() {&#64;Overridepublic void handle(String time) {//截取字符串长度&#xff0c;只需要年月日String substring &#61; 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();}/*** 年月日时分* &#64;param mContext 上下文* &#64;param textView 显示日期的View* */public static void showMinuteDate(Context mContext,final TextView textView){TimeSelector timeSelector &#61; new TimeSelector(mContext, new TimeSelector.ResultHandler() {&#64;Overridepublic 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();}
}

在需要调用日期的地方&#xff0c;直接使用以下这一行代码即可&#xff1a;

DateUtils.showDayDate(MainActivity.this,mContent);

推荐阅读
author-avatar
275514908_9369d7
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有