美文网首页
Android时间选择器以及回调的使用

Android时间选择器以及回调的使用

作者: 移动端_小刚哥 | 来源:发表于2019-10-14 15:20 被阅读0次

在iOS开发中使用block回调是很普遍的,当然在Android中也有回调可以使用,但是形式不太一样,更像是iOS中的代理模式,在这里我们不单独介绍Android中回调的使用,而是结合时间选择器一起使用,简单粗暴直接上代码

package com.example.jizhigang.crm_android_j.utils;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.util.Log;
import android.widget.DatePicker;
import android.widget.TimePicker;

import java.util.Calendar;





/*时间、日期选择器*/

public class DatePickerHelper {



    /*
    * 日期选择器的回调
    * 格式 年-月-日
    * */
    public interface OnDateSelectedBlock {
        void onDateSelected(int year, int month, int dayOfMonth);
    }


    /*
    * 时间选择器的回调
    * 格式 时-分
    * */
    public interface OnTimeSelectedBlock {
        void onTimeSelected(int hour, int min);
    }


    /**
     * 日期选择 年-月-日
     * @param activity
     * @param themeResId
     * @param calendar
     */
    public static void showDatePickerDialog(final Activity activity, int themeResId, Calendar calendar, final OnDateSelectedBlock block) {
        // 直接创建一个DatePickerDialog对话框实例,并将它显示出来
        new DatePickerDialog(activity, themeResId, new DatePickerDialog.OnDateSetListener() {
            // 绑定监听器(How the parent is notified that the date is set.)
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                // 此处得到选择的时间,可以进行你想要的操作
                block.onDateSelected(year,monthOfYear,dayOfMonth);
            }
        }
                // 设置初始日期
                , calendar.get(Calendar.YEAR)
                , calendar.get(Calendar.MONTH)
                , calendar.get(Calendar.DAY_OF_MONTH)
        ).show();
    }

    
    
    
    /**
     * 时间选择 时-分
     * @param activity
     * @param themeResId
     * @param calendar
     */
    public static void showTimePickerDialog(Activity activity, int themeResId, Calendar calendar, final OnTimeSelectedBlock block) {
        // Calendar c = Calendar.getInstance();
        // 创建一个TimePickerDialog实例,并把它显示出来
        // 解释一哈,Activity是context的子类
        new TimePickerDialog( activity,themeResId,
                // 绑定监听器
                new TimePickerDialog.OnTimeSetListener() {
                    @Override
                    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                        block.onTimeSelected(hourOfDay,minute);
                    }
                }
                // 设置初始时间
                , calendar.get(Calendar.HOUR_OF_DAY)
                , calendar.get(Calendar.MINUTE)
                // true表示采用24小时制
                ,true).show();
    }

    
}

首先在需要使用的activity中声明

    /*日期回调*/
    private DatePickerHelper.OnDateSelectedBlock dateSelectedBlock = new DatePickerHelper.OnDateSelectedBlock() {
        @Override
        public void onDateSelected(int year, int month, int dayOfMonth) {
            Log.d("日期选择器回调",String.valueOf(year)+"年"+String.valueOf(month+1)+"月"+String.valueOf(dayOfMonth)+"号");
        }
    };

    /*时间回调*/
    private DatePickerHelper.OnTimeSelectedBlock timeSelectedBlock = new DatePickerHelper.OnTimeSelectedBlock() {
        @Override
        public void onTimeSelected(int hour, int min) {
            Log.d("时间选择器回调",String.valueOf(hour)+"时"+String.valueOf(min)+"分");
        }
    };

使用方法

 /*年月日时间选择器*/
Calendar calendar= Calendar.getInstance(Locale.CHINA);
DatePickerHelper.showDatePickerDialog(getActivity(),2,calendar,dateSelectedBlock);
img-01.jpg
/*时分时间选择器*/
Calendar calendar= Calendar.getInstance(Locale.CHINA);
DatePickerHelper.showTimePickerDialog(getActivity(),2,calendar,timeSelectedBlock);
img-02.jpg

我们在这里将themeResId设置为2是这种样式,修改这个值为其他值还有其他样式可选,这里就不详细介绍了。

回调参考文章
https://blog.csdn.net/qq_31881469/article/details/80089675

时间选择器参考文章
https://blog.csdn.net/ceaningking/article/details/89916700

相关文章

网友评论

      本文标题:Android时间选择器以及回调的使用

      本文链接:https://www.haomeiwen.com/subject/ysuructx.html