Android进阶之路

来源:互联网 发布:阿里云的好处 编辑:程序博客网 时间:2024/06/10 03:02

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

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

转载请注明:
http://blog.csdn.net/qq_20451879/article/details/72459273

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

第一种:

Effect - 年月日时分:

这里写图片描述

Effect - 年月日:

这里写图片描述

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

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

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

此控件作者的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();            }        });    }}

MainActivity Xml :

<?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中有多种样式,代码较少,使用方便

此控件作者的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();            }    });    }}

MainActivity Xml :

<?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);
原创粉丝点击