日期等选择器使用

This commit is contained in:
lijia 2024-02-05 17:26:48 +08:00
parent 7221f87a25
commit 5705e51a2d
12 changed files with 243 additions and 17 deletions

View File

@ -136,7 +136,6 @@
<activity
android:name=".ui.account.authperson.AuthPersonActivity"
android:configChanges="keyboardHidden|orientation|locale"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan|stateHidden" />
<activity

View File

@ -6,6 +6,8 @@ import com.dahe.gldriver.BuildConfig
import com.dahe.gldriver.base.App
import com.dahe.mylibrary.CommonBaseLibrary
import com.dahe.gldriver.net.Api
import com.github.gzuliyujiang.dialog.DialogConfig
import com.github.gzuliyujiang.dialog.DialogStyle
import java.lang.Exception
import java.security.SecureRandom
import java.security.cert.X509Certificate
@ -19,6 +21,8 @@ class App : Application() {
super.onCreate()
app = this
CommonBaseLibrary.getInstance().init(this, Api.BASE_URL)
//选择器样式切换
DialogConfig.setDialogStyle(DialogStyle.One)
if (BuildConfig.DEBUG) {
// CrashHandler.getInstance().init(this);
// CrashHandler2.getInstance().init(getApplicationContext());

View File

@ -3,8 +3,13 @@ package com.dahe.gldriver.ui.account.authperson
import android.os.Bundle
import com.dahe.gldriver.R
import com.dahe.gldriver.databinding.ActivityAuthDriverBinding
import com.dahe.gldriver.utils.PickDateUtils
import com.dahe.gldriver.utils.SPUtils
import com.dahe.mylibrary.base.BaseActivity
import com.dahe.mylibrary.utils.ActivityUtils
import com.dahe.mylibrary.utils.ToastUtils
import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener
import com.github.gzuliyujiang.wheelpicker.entity.DateEntity
/**
* @ClassName AuthRoleActivity
@ -15,9 +20,38 @@ import com.dahe.mylibrary.utils.ActivityUtils
class AuthDriverActivity : BaseActivity<ActivityAuthDriverBinding>() {
override fun initView(savedInstanceState: Bundle?) {
setStatusBarColor(R.color.white)
setTitleBar("实名认证",true)
binding.btnOk.setOnClickListener {
ActivityUtils.startActivity(mContext,AuthQualificationActivity::class.java)
setTitleBar("实名认证", true)
binding.run {
btnOk.setOnClickListener {
ActivityUtils.startActivity(mContext, AuthQualificationActivity::class.java)
}
tvStart.run {
setOnClickListener {
PickDateUtils.getInstance()
.showDate(this@AuthDriverActivity, "有效起始日期") { year, month, day ->
this.text = "$year-$month-$day"
}
}
}
tvEnd.run {
setOnClickListener {
PickDateUtils.getInstance()
.showDate(this@AuthDriverActivity, "有效结束日期") { year, month, day ->
this.text = "$year-$month-$day"
}
}
}
tvCarType.run {
setOnClickListener {
PickDateUtils.getInstance()
.showSelectCarType(this@AuthDriverActivity, "选择准驾车型") { _, item ->
this.text = item.toString()
}
}
}
}
}

View File

@ -3,8 +3,10 @@ package com.dahe.gldriver.ui.account.authperson
import android.os.Bundle
import com.dahe.gldriver.R
import com.dahe.gldriver.databinding.ActivityAuthPersonBinding
import com.dahe.gldriver.utils.PickDateUtils
import com.dahe.mylibrary.base.BaseActivity
import com.dahe.mylibrary.utils.ActivityUtils
import com.dahe.mylibrary.utils.ToastUtils
/**
* @ClassName AuthRoleActivity
@ -15,9 +17,28 @@ import com.dahe.mylibrary.utils.ActivityUtils
class AuthPersonActivity : BaseActivity<ActivityAuthPersonBinding>() {
override fun initView(savedInstanceState: Bundle?) {
setStatusBarColor(R.color.white)
setTitleBar("实名认证",true)
setTitleBar("实名认证", true)
binding.btnOk.setOnClickListener {
ActivityUtils.startActivity(mContext,AuthDriverActivity::class.java)
ActivityUtils.startActivity(mContext, AuthDriverActivity::class.java)
}
binding.run {
tvStart.run {
setOnClickListener {
PickDateUtils.getInstance()
.showDate(this@AuthPersonActivity,"有效起始日期") { year, month, day ->
this.text = "$year-$month-$day"
}
}
}
tvEnd.run {
setOnClickListener {
PickDateUtils.getInstance()
.showDate(this@AuthPersonActivity,"有效结束日期") { year, month, day ->
this.text = "$year-$month-$day"
}
}
}
}
}

View File

@ -3,6 +3,7 @@ package com.dahe.gldriver.ui.account.authperson
import android.os.Bundle
import com.dahe.gldriver.R
import com.dahe.gldriver.databinding.ActivityAuthQualificationBinding
import com.dahe.gldriver.utils.PickDateUtils
import com.dahe.mylibrary.base.BaseActivity
import com.dahe.mylibrary.utils.ActivityUtils
@ -12,12 +13,23 @@ import com.dahe.mylibrary.utils.ActivityUtils
* @Date 2024/1/25 15:20
* @Description 从业资格证认证
*/
class AuthQualificationActivity : BaseActivity<ActivityAuthQualificationBinding>(){
class AuthQualificationActivity : BaseActivity<ActivityAuthQualificationBinding>() {
override fun initView(savedInstanceState: Bundle?) {
setStatusBarColor(R.color.white)
setTitleBar("实名认证",true)
setTitleBar("实名认证", true)
binding.btnOk.setOnClickListener {
ActivityUtils.startActivity(mContext,AuthBankCardActivity::class.java)
ActivityUtils.startActivity(mContext, AuthBankCardActivity::class.java)
}
binding.run {
tvDate.run {
setOnClickListener {
PickDateUtils.getInstance()
.showDate(this@AuthQualificationActivity,"选择有效期至") { year, month, day ->
this.text = "$year-$month-$day"
}
}
}
}
}

View File

@ -0,0 +1,62 @@
package com.dahe.gldriver.utils
import android.app.Activity
import androidx.appcompat.app.AppCompatActivity
import com.dahe.gldriver.R
import com.dahe.mylibrary.base.SingletonHolder
import com.dahe.mylibrary.base.SingletonNoPHolder
import com.github.gzuliyujiang.wheelpicker.BirthdayPicker
import com.github.gzuliyujiang.wheelpicker.OptionPicker
import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener
import com.github.gzuliyujiang.wheelpicker.contract.OnOptionPickedListener
import com.github.gzuliyujiang.wheelpicker.entity.DateEntity
/**
* @ClassName PickDateUtils
* @Author john
* @Date 2024/2/5 14:48
* @Description TODO
*/
class PickDateUtils private constructor() {
companion object : SingletonNoPHolder<PickDateUtils>(::PickDateUtils)
/**
* TODO
* 底部弹出生日日期选择
*@param title 日期选择title
* @param dateEntity 默认参数默认当天
* @param listener
*/
fun showDate(
activity : AppCompatActivity,
title: String = "",
dateEntity: DateEntity = DateEntity.today(),
listener: OnDatePickedListener
) {
val picker = BirthdayPicker(activity)
picker.setTitle(title)
picker.setDefaultValue(dateEntity.year, dateEntity.month, dateEntity.day)
picker.setOnDatePickedListener(listener)
// picker.wheelLayout.setResetWhenLinkage(false)
picker.show()
}
/**
* 选择驾驶证类型
* @param title
* @param listener
*/
fun showSelectCarType(activity : AppCompatActivity,title: String = "", listener: OnOptionPickedListener) {
OptionPicker(activity)
.run {
setData("A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2")
setDefaultValue("B1")
setTitle(title)
setOnOptionPickedListener(listener)
show()
}
}
}

View File

@ -163,6 +163,7 @@
android:textSize="@dimen/sp_15"></TextView>
<TextView
android:id="@+id/tvCarType"
android:drawableRight="@drawable/right_gray"
android:drawablePadding="@dimen/dp_6"
android:gravity="right|center_vertical"
@ -189,6 +190,7 @@
android:textSize="@dimen/sp_15"></TextView>
<TextView
android:id="@+id/tvStart"
android:drawableRight="@drawable/right_gray"
android:drawablePadding="@dimen/dp_6"
android:gravity="right|center_vertical"
@ -197,6 +199,7 @@
android:layout_marginLeft="@dimen/dp_10"
android:layout_weight="1"
tools:text="2020-05-23"
android:hint="请选择起始日期"
android:textColor="@color/black"
android:paddingLeft="@dimen/dp_10"
android:textSize="@dimen/sp_15"></TextView>
@ -215,6 +218,7 @@
android:textSize="@dimen/sp_15"></TextView>
<TextView
android:id="@+id/tvEnd"
android:drawableRight="@drawable/right_gray"
android:drawablePadding="@dimen/dp_6"
android:gravity="right|center_vertical"
@ -223,6 +227,7 @@
android:layout_marginLeft="@dimen/dp_10"
android:layout_weight="1"
tools:text="2020-05-23"
android:hint="请选择结束日期"
android:textColor="@color/black"
android:paddingLeft="@dimen/dp_10"
android:textSize="@dimen/sp_15"></TextView>

View File

@ -104,7 +104,7 @@
android:orientation="horizontal">
<TextView
android:layout_width="@dimen/dp_70"
android:layout_width="@dimen/dp_100"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/start"
android:drawablePadding="@dimen/dp_2"
@ -133,7 +133,7 @@
android:orientation="horizontal">
<TextView
android:layout_width="@dimen/dp_70"
android:layout_width="@dimen/dp_100"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/start"
android:drawablePadding="@dimen/dp_2"
@ -156,21 +156,23 @@
</LinearLayout>
<LinearLayout
android:id="@+id/llStart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_150"
android:orientation="horizontal">
<TextView
android:layout_width="@dimen/dp_70"
android:layout_width="@dimen/dp_100"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/start"
android:drawablePadding="@dimen/dp_2"
android:text="有效期"
android:text="有效开始日期"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"></TextView>
<EditText
<TextView
android:id="@+id/tvStart"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
@ -181,7 +183,39 @@
android:textSize="@dimen/sp_15"
android:gravity="right|center_vertical"
android:paddingRight="@dimen/dp_10"
tools:text="1990-05-24 至 2020-05-23"></EditText>
android:hint="请选择开始日期"
tools:text="1990-05-24"></TextView>
</LinearLayout>
<LinearLayout
android:layout_below="@+id/llStart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_14"
android:orientation="horizontal">
<TextView
android:layout_width="@dimen/dp_100"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/start"
android:drawablePadding="@dimen/dp_2"
android:text="有效结束日期"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"></TextView>
<TextView
android:id="@+id/tvEnd"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
android:layout_weight="1"
android:background="@drawable/shape_phone_bg"
android:paddingLeft="@dimen/dp_10"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"
android:gravity="right|center_vertical"
android:paddingRight="@dimen/dp_10"
android:hint="请选择结束日期"
tools:text="1990-05-24"></TextView>
</LinearLayout>
</RelativeLayout>

View File

@ -123,6 +123,7 @@
android:textSize="@dimen/sp_15"></TextView>
<TextView
android:id="@+id/tvDate"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"

View File

@ -25,6 +25,7 @@ def Countdownview = '2.1.6'
def Xpopup = '2.10.0'
def CheckVersionLib = '2.4.2'
def BuglyVersion = 'latest.release'
def CalendarPicker = '4.1.13'
project.ext {
android = [
compileSdkVersion: 33,
@ -70,7 +71,10 @@ project.ext {
"Xpopup" :"com.github.li-xiaojun:XPopup:${Xpopup}",
"CheckVersionLib" :"com.github.AlexLiuSheng:CheckVersionLib:${CheckVersionLib}",
"Bugly" :"com.tencent.bugly:crashreport:${BuglyVersion}",//todo
"PickerView" :"com.contrarywind:Android-PickerView:${PickerView}",
// "CalendarPicker" :"com.github.gzu-liyujiang.AndroidPicker:CalendarPicker:${CalendarPicker}",
"AddressPicker" :"com.github.gzu-liyujiang.AndroidPicker:AddressPicker:${CalendarPicker}",
"WheelPicker" :"com.github.gzu-liyujiang.AndroidPicker:WheelPicker:${CalendarPicker}",
// "PickerView" :"com.contrarywind:Android-PickerView:${PickerView}",
"Permissionx" :"com.guolindev.permissionx:permissionx:${Permissionx}"
]
}

View File

@ -68,7 +68,7 @@ dependencies {
api rootProject.ext.dependencies["statusbaruitl"]
api rootProject.ext.dependencies["BaseRecyclerViewAdapterHelper"]
api rootProject.ext.dependencies["PhotoPicker"]
api rootProject.ext.dependencies["PickerView"]
// api rootProject.ext.dependencies["PickerView"]
api rootProject.ext.dependencies["Xpopup"]
api rootProject.ext.dependencies["Countdownview"]
api rootProject.ext.dependencies["CheckVersionLib"]
@ -80,6 +80,8 @@ dependencies {
api rootProject.ext.dependencies["MagicIndicator"]
api rootProject.ext.dependencies["glide-okhttps"]
api rootProject.ext.dependencies["Permissionx"]
api rootProject.ext.dependencies["WheelPicker"]
api rootProject.ext.dependencies["AddressPicker"]
api 'pub.devrel:easypermissions:3.0.0'
api 'io.github.lucksiege:compress:v3.11.2'
// api 'com.gyf.cactus:cactus:1.1.3-beta13'

View File

@ -0,0 +1,48 @@
package com.dahe.mylibrary.base
import android.content.Context
import kotlin.reflect.KFunction0
/**
* @ClassName SingletonHolder
* @Author john
* @Date 2024/2/5 15:35
* @Description TODO
*/
open class SingletonHolder<out T, in A>(creator: (A) -> T) {
private var creator: ((A) -> T)? = creator
@Volatile
private var instance: T? = null
//对上述方法的一种更简洁的写法
fun getInstance(arg: A): T =
instance ?: synchronized(this) {
instance ?: creator!!(arg).apply {
instance = this
}
}
}
open class SingletonNoPHolder<out T>(creator: () -> T) {
private var creator: (() -> T)? = creator
@Volatile
private var instance: T? = null
//对上述方法的一种更简洁的写法
fun getInstance(): T =
instance ?: synchronized(this) {
instance ?: creator!!().apply {
instance = this
}
}
}
//使用
//class SkinManager private constructor(context: Context) {
// companion object : SingletonHolder<SkinManager, Context>(::SkinManager)
//}