0
点赞
收藏
分享

微信扫一扫

android自定义时间选择器

detail: 自定义的选择器 时间日期,支持多种可扩展特性
ps:需要lib,请自己去找

step1:

package com.example.demoanalytic;

import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.bigkoo.pickerview.builder.TimePickerBuilder;
import com.bigkoo.pickerview.listener.CustomListener;
import com.bigkoo.pickerview.listener.OnTimeSelectListener;
import com.bigkoo.pickerview.view.TimePickerView;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * author : zhangzf
 * date   : 2020/11/28
 * desc   :
 */
public class HomeActivity extends AppCompatActivity {
    private TimePickerView pvTime;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn_main = findViewById(R.id.btn_main);

        btn_main.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                initTimePicker();
            }
        });
    }

    private void initTimePicker() {
        Date curDate = new Date(System.currentTimeMillis());
        SimpleDateFormat formatter_mouth = new SimpleDateFormat("MM ");
        String mouth_str = formatter_mouth.format(curDate);
        int mouth_int = (int) Double.parseDouble(mouth_str);

        SimpleDateFormat formatter_day = new SimpleDateFormat("dd ");
        String day_str = formatter_day.format(curDate);
        int day_int = (int) Double.parseDouble(day_str);

//        Calendar selectedDate = Calendar.getInstance();//系统当前时间
        Calendar startDate = Calendar.getInstance();
        startDate.set(2014, 0, 1);
        Calendar endDate = Calendar.getInstance();
        endDate.set(2027, 11, 31);

        Calendar selectedDate = Calendar.getInstance();//系统当前时间

        selectedDate.set(Calendar.MINUTE, 1);
        selectedDate.set(Calendar.HOUR_OF_DAY, 1);

        //时间选择器
        pvTime = new TimePickerBuilder(this, new OnTimeSelectListener() {

            @Override
            public void onTimeSelect(Date date, View v) {
                String data = DateUtil.covert(date.getTime(), DateUtil.TIME);
                if (data == "00:00") {
                    return;
                }
                Log.e("TAG", "时间选择器:"+data);
            }
        })
                .setLayoutRes(R.layout.pickerview_mindor_time, new CustomListener() {
                    @Override
                    public void customLayout(View v) {
                        Button btnCancel = v.findViewById(R.id.btnCancel);
                        Button btnSubmit = v.findViewById(R.id.btnSubmit);
                        btnCancel.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                pvTime.dismiss();
                            }
                        });
                        btnSubmit.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                pvTime.returnData();
                                pvTime.dismiss();
                            }
                        });
                    }
                })
                .setType(new boolean[]{false, false, false, true, true, false}) //年月日时分秒 的显示与否,不设置则默认全部显示
                .setLabel("", "月", "日", "时", "分", "秒")//默认设置为年月日时分秒
                .isCenterLabel(false)
                .setTitleColor(Color.parseColor("#333333"))//标题文字颜色
                .setSubmitColor(Color.parseColor("#FF3B30"))//确定按钮文字颜色
                .setCancelColor(Color.parseColor("#777777"))//取消按钮文字颜色
                .setTitleBgColor(Color.parseColor("#ffffff"))//标题背景颜色 Night mode
                .setTextColorCenter(Color.parseColor("#0091FF"))
                .setSubCalSize(24)
                .setContentTextSize(32)//滚轮文字大小
                .setTitleSize(24)//标题文字大小
                .setSubmitText("确定")
                .setCancelText("取消")
                .setDate(selectedDate)
                .isCyclic(false)//是否循环滚动
                .setLineSpacingMultiplier(1.5f)
                .setTextXOffset(0, 0, 0, 0, 0, 0)//设置X轴倾斜角度[ -90 , 90°]
                .setRangDate(startDate, endDate)
                .setDecorView(null)
                .build();
        pvTime.show();
    }

}

step2:

package com.example.demoanalytic

import android.graphics.Color
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.TextView
import kotlinx.android.synthetic.main.activity_main.*
import java.util.*
import com.bigkoo.pickerview.builder.TimePickerBuilder
import com.bigkoo.pickerview.listener.CustomListener
import com.bigkoo.pickerview.listener.OnTimeSelectListener

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        btn_main.setOnClickListener {
            setClock()
        }
    }

    private fun setClock() {
        val selectedDate = Calendar.getInstance()
        selectedDate.set(Calendar.MINUTE, 1)
        selectedDate.set(Calendar.HOUR_OF_DAY, 1)
        val pvTimeStart = TimePickerBuilder(this, OnTimeSelectListener { date, v ->
            val startTime = DateUtil.covert(date.time, DateUtil.TIME)
            if (startTime == "00:00") {
                return@OnTimeSelectListener
            }
            println("postTiming")
            //   postTiming(timming, startTime)
        }).setLayoutRes(R.layout.pickerview_mindor_time, object : CustomListener {
            override fun customLayout(v: View) {
                v.findViewById<TextView>(R.id.tvTitle).text = "倒计时关"
                v.findViewById<Button>(R.id.btnSubmit).text = "保存"
                v.findViewById<Button>(R.id.btnCancel).text = "关闭倒计时"
                v.findViewById<Button>(R.id.btnCancel).setOnClickListener {
                    println("btnCancel")
                }
                v.findViewById<Button>(R.id.btnSubmit).setOnClickListener {
                    println("btnSubmit")
                }
            }

        })
            .setType(booleanArrayOf(false, false, false, true, true, false))// 默认全部显示
            .setCancelText(getString(R.string.app_name))//取消按钮文字
            .setSubmitText(getString(R.string.app_name))//确认按钮文字
            .setSubCalSize(24)
            .setContentTextSize(32)//滚轮文字大小
            .setTitleSize(24)//标题文字大小
            .setTitleText(getString(R.string.app_name))//标题文字
            .setOutSideCancelable(false)//点击屏幕,点在控件外部范围时,是否取消显示
            .isCyclic(false)//是否循环滚动
            .setTitleColor(Color.parseColor("#333333"))//标题文字颜色
            .setSubmitColor(Color.parseColor("#FF3B30"))//确定按钮文字颜色
            .setCancelColor(Color.parseColor("#777777"))//取消按钮文字颜色
            .setTitleBgColor(Color.parseColor("#ffffff"))//标题背景颜色 Night mode
            .setTextColorCenter(Color.parseColor("#0091FF"))
            .setBgColor(Color.WHITE)//滚轮背景颜色 Night mode
            .setDate(selectedDate)// 如果不设置的话,默认是系统时间*/
            .setLineSpacingMultiplier(1.5f)
            .setDividerColor(Color.TRANSPARENT)
            .setLabel("", "月", "日", "时", "分", "秒")//默认设置为年月日时分秒
            .isCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。
            .isDialog(false)//是否显示为对话框样式
            .setOutSideCancelable(true)
            .build()
        pvTimeStart?.show()
    }

}

step3:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/shape_time_bg"
    android:orientation="vertical">

    <TextView
        android:id="@+id/tvTitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        android:gravity="center"
        android:text="开启时间"
        android:textColor="#000000"
        android:textSize="24dp" />

    <LinearLayout
        android:id="@+id/timepicker"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:background="@android:color/white"
        android:orientation="horizontal">

        <com.contrarywind.view.WheelView
            android:id="@+id/year"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.96" />

        <com.contrarywind.view.WheelView
            android:id="@+id/month"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" />

        <com.contrarywind.view.WheelView
            android:id="@+id/day"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" />

        <com.contrarywind.view.WheelView
            android:id="@+id/hour"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" />

        <com.contrarywind.view.WheelView
            android:id="@+id/min"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" />

        <com.contrarywind.view.WheelView
            android:id="@+id/second"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
    </LinearLayout>

    <RelativeLayout
        android:id="@+id/rv_topbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="34dp"
        android:layout_marginBottom="34dp"
        android:background="@android:color/white">

        <Button
            android:id="@+id/btnCancel"
            style="@style/Widget.AppCompat.Button.Borderless"
            android:layout_width="138dp"
            android:layout_height="44dp"
            android:layout_marginLeft="36dp"
            android:background="@drawable/shape_time_pop"
            android:gravity="center"
            android:text="取消"
            android:textColor="#000000"
            android:textSize="20dp" />

        <Button
            android:id="@id/btnSubmit"
            style="@style/Widget.AppCompat.Button.Borderless"
            android:layout_width="138dp"
            android:layout_height="44dp"
            android:layout_alignParentRight="true"
            android:layout_marginRight="36dp"
            android:background="@drawable/selector_btn_common"
            android:gravity="center"
            android:text="保存"
            android:textColor="@drawable/selector_common_btn_text"
            android:textSize="20dp" />
    </RelativeLayout>
</LinearLayout>

end

举报

相关推荐

0 条评论