package com.fuban.driver.ui
|
|
import android.app.Dialog
|
import android.content.Context
|
import android.graphics.Color
|
import android.view.LayoutInflater
|
import android.view.View
|
import android.view.Window
|
import android.widget.FrameLayout
|
import androidx.core.content.ContextCompat
|
import androidx.recyclerview.widget.LinearLayoutManager
|
import cn.sinata.xldutils.utils.DensityUtil
|
import cn.sinata.xldutils.utils.gone
|
import com.fuban.driver.R
|
import com.fuban.driver.bean.AllCarBean
|
import com.fuban.driver.ui.adapter.ColorOnlyAdapter
|
import com.fuban.driver.ui.adapter.ServerModeAdapter
|
import com.fuban.driver.ui.adapter.ServerOnlyAdapter
|
import com.fuban.driver.utils.EasePopup.EasyPopup
|
import com.fuban.driver.utils.citypickerview.picker.widget.OptionsPickerView
|
import com.fuban.driver.utils.citypickerview.picker.widget.builder.OptionsPickerBuilder
|
import com.fuban.driver.utils.citypickerview.picker.widget.listener.OnOptionsSelectListener
|
import com.lljjcoder.Interface.OnCityItemClickListener
|
import com.lljjcoder.citywheel.CityConfig
|
import com.lljjcoder.style.citylist.Toast.ToastUtils
|
import com.lljjcoder.style.citypickerview.CityPickerView
|
import kotlinx.android.synthetic.main.dialog_server_mode.view.*
|
import kotlinx.android.synthetic.main.dialog_sure_and_del.view.*
|
|
|
/***
|
* 1: 左右两个按钮 可选底部关闭
|
* 2:同一 默认确定取消
|
* 3:一个确定按钮 可选底部关闭
|
* 4:底部选择器 个人中心选择期望等
|
* 5:照相 拍照
|
*/
|
|
object DialogUtil {
|
|
|
/***
|
* 获取一个通用的dialog
|
*/
|
fun getDialog(mContext: Context?, layout: Int): Dialog {
|
val baseDialog =
|
Dialog(mContext!!, R.style.dialogFullScreen)
|
baseDialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
|
val headView = LayoutInflater.from(mContext)
|
.inflate(layout, null)
|
baseDialog.setContentView(headView)
|
baseDialog.setCanceledOnTouchOutside(true)
|
baseDialog.setCancelable(true)
|
baseDialog.show()
|
var params = headView.layoutParams as FrameLayout.LayoutParams
|
params.width = DensityUtil.getDeviceWidth(mContext)
|
return baseDialog
|
}
|
|
fun getDialog(mContext: Context?, layout: Int,style:Int): Dialog {
|
val baseDialog =
|
Dialog(mContext!!,style)
|
baseDialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
|
val headView = LayoutInflater.from(mContext)
|
.inflate(layout, null)
|
baseDialog.setContentView(headView)
|
baseDialog.setCanceledOnTouchOutside(true)
|
baseDialog.setCancelable(true)
|
baseDialog.show()
|
var params = headView.layoutParams as FrameLayout.LayoutParams
|
params.width = DensityUtil.getDeviceWidth(mContext)
|
return baseDialog
|
}
|
|
fun getView(rechargeDialog: Dialog): View {
|
return rechargeDialog.window!!.decorView
|
}
|
|
fun getPopupwindow(mContext: Context?, layout: Int):EasyPopup{
|
val view =
|
View.inflate(mContext,layout, null)
|
var mclearPopup = EasyPopup.create(mContext)
|
.setContentView(view)
|
.setOutsideTouchable(true)
|
.setFocusAndOutsideEnable(true) //允许背景变暗
|
.setBackgroundDimEnable(true) //变暗的透明度(0-1),0为完全透明
|
.setDimValue(0.4f) //变暗的背景颜色
|
.setDimColor(Color.BLACK) //指定任意 ViewGroup 背景变暗
|
.apply()
|
|
return mclearPopup
|
}
|
|
fun getOnlySureDialog(context: Context,content: String,clickSure:() -> Unit):Dialog{
|
var dialog = getDelAndSureDialog(context,content,{},clickSure)
|
var view = getView(dialog)
|
view.tv_close_base.gone()
|
return dialog
|
}
|
|
fun getDelAndSureDialog(context: Context,content:String,clickClose :() -> Unit,clickSure:() -> Unit):Dialog{
|
var dialog = getDialog(context,R.layout.dialog_sure_and_del)
|
var view = getView(dialog)
|
view.view_hint_close_base.setOnClickListener {
|
dialog.dismiss()
|
}
|
view.tv_close_base.setOnClickListener {
|
dialog.dismiss()
|
clickClose()
|
}
|
view.tv_sure_base.setOnClickListener {
|
dialog.dismiss()
|
clickSure()
|
}
|
view.tv_view_two_base.text = content
|
return dialog
|
}
|
|
fun getDelAndSureDialog(context: Context,sure:String,cancel:String,content:String,clickClose :() -> Unit,clickSure:() -> Unit):Dialog{
|
var dialog = getDialog(context,R.layout.dialog_sure_and_del)
|
var view = getView(dialog)
|
view.tv_close_base.text = cancel
|
view.tv_sure_base.text = sure
|
view.view_hint_close_base.setOnClickListener {
|
dialog.dismiss()
|
}
|
view.tv_close_base.setOnClickListener {
|
dialog.dismiss()
|
clickClose()
|
}
|
view.tv_sure_base.setOnClickListener {
|
dialog.dismiss()
|
clickSure()
|
}
|
view.tv_view_two_base.text = content
|
return dialog
|
}
|
|
|
fun getNetListDialog(arrayList: ArrayList<String>,showView: View,context: Context,okclick:(allMode:String) -> Unit):EasyPopup{
|
var pop = getPopupwindow(context,R.layout.dialog_server_mode)
|
pop.showDown(showView)
|
pop.contentView.rl_server_mode.layoutManager = LinearLayoutManager(context)
|
var adapter = ServerModeAdapter()
|
adapter.data.addAll(arrayList)
|
pop.contentView.rl_server_mode.adapter = adapter
|
pop.contentView.tv_cancel_server_mode.setOnClickListener {
|
pop.dismiss()
|
}
|
pop.contentView.tv_ok_server_mode.setOnClickListener {
|
if (adapter.getAllMode().isEmpty()){
|
ToastUtils.showShortToast(context,"请选择内容")
|
return@setOnClickListener
|
}
|
pop.dismiss()
|
okclick(adapter.getAllMode())
|
}
|
return pop
|
}
|
|
fun getColorListDialog(arrayList: ArrayList<String>,showView: View,context: Context,okclick:(allMode:String) -> Unit):EasyPopup{
|
var pop = getPopupwindow(context,R.layout.dialog_server_mode)
|
pop.showDown(showView)
|
pop.contentView.rl_server_mode.layoutManager = LinearLayoutManager(context)
|
var adapter = ColorOnlyAdapter()
|
adapter.data.addAll(arrayList)
|
pop.contentView.rl_server_mode.adapter = adapter
|
pop.contentView.tv_cancel_server_mode.setOnClickListener {
|
pop.dismiss()
|
}
|
pop.contentView.tv_ok_server_mode.setOnClickListener {
|
if (adapter.getSelectId().isEmpty()){
|
ToastUtils.showShortToast(context,"请选择内容")
|
return@setOnClickListener
|
}
|
pop.dismiss()
|
okclick(adapter.getSelectId())
|
}
|
return pop
|
}
|
|
fun<T> getOptionListDialog(context: Context, list: List<T>, lisener:OnOptionsSelectListener){
|
val pickerView: OptionsPickerView<T> = OptionsPickerBuilder(context, lisener)
|
.setTitleText("选择地区")
|
.setCancelColor(ContextCompat.getColor(context, R.color.black))
|
.setDividerColor(ContextCompat.getColor(context, R.color.white))
|
.setSubmitColor(ContextCompat.getColor(context, R.color.main_yellow))
|
.setBgColor(ContextCompat.getColor(context, R.color.white))
|
.setTitleBgColor(ContextCompat.getColor(context, R.color.white))
|
.build<T>(1)
|
pickerView.setPicker(list)
|
pickerView.show()
|
}
|
|
fun<T> getOptionListDialog(context: Context, list: List<T>, listTwo: List<T>, lisener:OnOptionsSelectListener){
|
val pickerView: OptionsPickerView<T> = OptionsPickerBuilder(context, lisener)
|
.setTitleText("选择地区")
|
.setCancelColor(ContextCompat.getColor(context, R.color.black))
|
.setDividerColor(ContextCompat.getColor(context, R.color.white))
|
.setSubmitColor(ContextCompat.getColor(context, R.color.main_yellow))
|
.setBgColor(ContextCompat.getColor(context, R.color.white))
|
.setTitleBgColor(ContextCompat.getColor(context, R.color.white))
|
.build<T>(1)
|
pickerView.setNPicker(list,listTwo)
|
pickerView.show()
|
}
|
|
fun getCityDialog(context: Context, lisener:OnCityItemClickListener){
|
var cityPick = CityPickerView()
|
cityPick.init(context)
|
val cityConfig = CityConfig.Builder()
|
.title("选择城市") //标题
|
.titleTextSize(18) //标题文字大小
|
.titleTextColor("#585858") //标题文字颜 色
|
.titleBackgroundColor("#FFFFFF") //标题栏背景色
|
.confirTextColor("#585858") //确认按钮文字颜色
|
.confirmText("确定") //确认按钮文字
|
.confirmTextSize(16) //确认按钮文字大小
|
.cancelTextColor("#585858") //取消按钮文字颜色
|
.cancelText("取消") //取消按钮文字
|
.cancelTextSize(16) //取消按钮文字大小
|
.setCityWheelType(CityConfig.WheelType.PRO_CITY_DIS) //显示类,只显示省份一级,显示省市两级还是显示省市区三级
|
.showBackground(true) //是否显示半透明背景
|
.visibleItemsCount(7) //显示item的数量
|
.province("浙江省") //默认显示的省份
|
.city("杭州市") //默认显示省份下面的城市
|
.district("滨江区") //默认显示省市下面的区县数据
|
.provinceCyclic(true) //省份滚轮是否可以循环滚动
|
.cityCyclic(true) //城市滚轮是否可以循环滚动
|
.districtCyclic(true) //区县滚轮是否循环滚动
|
// .setCustomItemLayout(R.layout.item_city) //自定义item的布局
|
// .setCustomItemTextViewId(R.id.item_city_name_tv) //自定义item布局里面的textViewid
|
.drawShadows(false) //滚轮不显示模糊效果
|
.setLineColor("#bcb6b6") //中间横线的颜色
|
.setLineHeigh(1) //中间横线的高度
|
.setShowGAT(true) //是否显示港澳台数据,默认不显示
|
.build()
|
//添加配置
|
//添加配置
|
cityPick.setConfig(cityConfig)
|
//显示
|
//显示
|
cityPick.showCityPicker()
|
//监听选择点击事件及返回结果
|
//监听选择点击事件及返回结果
|
cityPick.setOnCityItemClickListener(lisener)
|
}
|
|
fun getNetOneDialog(arrayList: ArrayList<AllCarBean.DataBean>,showView: View,context: Context,okclick:(selectId:AllCarBean.DataBean) -> Unit):EasyPopup{
|
var pop = getPopupwindow(context,R.layout.dialog_server_mode)
|
pop.showDown(showView)
|
pop.contentView.rl_server_mode.layoutManager = LinearLayoutManager(context)
|
var adapter = ServerOnlyAdapter()
|
adapter.data.addAll(arrayList)
|
pop.contentView.rl_server_mode.adapter = adapter
|
pop.contentView.tv_cancel_server_mode.setOnClickListener {
|
pop.dismiss()
|
}
|
pop.contentView.tv_ok_server_mode.setOnClickListener {
|
pop.dismiss()
|
okclick(adapter.getSelectId())
|
}
|
return pop
|
}
|
|
}
|