优化时间弹窗

This commit is contained in:
2026-05-26 11:07:14 +08:00
parent d5be6a9b5f
commit 5b7d20d38c
14 changed files with 661 additions and 43 deletions

View File

@@ -0,0 +1,67 @@
package com.example.defenseapplication.view
import android.app.Dialog
import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.WindowManager
import com.example.defenseapplication.R
import com.example.defenseapplication.databinding.DialogAvatarSelectBinding
class AvatarSelectDialog(context: Context) {
private val dialog: Dialog = Dialog(context)
private val binding: DialogAvatarSelectBinding
private var onTakePhotoListener: (() -> Unit)? = null
private var onSelectAlbumListener: (() -> Unit)? = null
init {
binding = DialogAvatarSelectBinding.inflate(LayoutInflater.from(context))
dialog.setContentView(binding.root)
dialog.window?.apply {
setGravity(Gravity.BOTTOM)
setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT)
setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
setDimAmount(0.5f)
}
initListeners()
}
private fun initListeners() {
binding.itemTakePhoto.setOnClickListener {
onTakePhotoListener?.invoke()
dialog.dismiss()
}
binding.itemSelectAlbum.setOnClickListener {
onSelectAlbumListener?.invoke()
dialog.dismiss()
}
binding.itemCancel.setOnClickListener {
dialog.dismiss()
}
}
fun setOnTakePhotoListener(listener: () -> Unit): AvatarSelectDialog {
this.onTakePhotoListener = listener
return this
}
fun setOnSelectAlbumListener(listener: () -> Unit): AvatarSelectDialog {
this.onSelectAlbumListener = listener
return this
}
fun show() {
dialog.show()
}
fun dismiss() {
dialog.dismiss()
}
}