[fea]
[打点弹窗UI]
This commit is contained in:
yangyakun
2024-10-16 18:20:31 +08:00
parent 83bbcc1a9c
commit ce1b5b3b6e
15 changed files with 237 additions and 112 deletions

View File

@@ -0,0 +1,86 @@
package com.mogo.och.common.module.wigets.dialog
import android.content.Context
import android.view.View
import androidx.appcompat.widget.AppCompatImageView
import androidx.appcompat.widget.AppCompatTextView
import androidx.lifecycle.LifecycleObserver
import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.common.module.R
import com.mogo.och.common.module.utils.RxUtils
/**
* loading
*/
class CommonFeedbackDialog : BaseFloatDialog, LifecycleObserver {
private var status: Status = Status.success
private val ivFeedbackStatus:AppCompatImageView by lazy { findViewById(R.id.iv_feedback_status) }
private val tvFeedbackStatusDescribe:AppCompatTextView by lazy { findViewById(R.id.tv_feedback_status_describe) }
private var listener:Listener?=null
private var mRunnable:Runnable= Runnable {
ToastUtils.showLong("超时未响应,请求失败")
}
constructor(builder: Builder, context: Context) : super(context) {
tvFeedbackStatusDescribe.text = builder.titleStr
status = builder.statusEnum
listener = builder.listener
when (status) {
Status.success -> {
ivFeedbackStatus.setImageResource(R.drawable.common_feedback_success)
}
Status.fail -> {
ivFeedbackStatus.setImageResource(R.drawable.common_feedback_fail)
}
}
RxUtils.createSubscribe(1_000) {
hide()
this.listener?.cancel()
}
}
init {
setContentView(R.layout.common_feedback_dialog)
setCanceledOnTouchOutside(false)
}
class Builder{
var statusEnum: Status = Status.success
var titleStr:String = ""
var listener:Listener?=null
fun title(title: String) : Builder{
this.titleStr = title
return this
}
fun listener(listener: Listener) : Builder{
this.listener = listener
return this
}
fun build(context: Context): CommonFeedbackDialog {
return CommonFeedbackDialog(this,context)
}
fun status(ask: Status): Builder {
this.statusEnum = ask
return this
}
}
enum class Status{
success,fail,loading
}
interface Listener{
fun cancel()
}
}

View File

@@ -209,7 +209,7 @@ class AdvanceVideoView @JvmOverloads constructor(
Logger.d(MediaLoopPlayView.TAG, "startPlay")
gsyVideoPlayerOptionBuilder = GSYVideoOptionBuilder()
gsyVideoPlayerOptionBuilder
?.setUrl(localVideoPath) // "/data/user/0/com.mogo.launcher.f/files/video/"
?.setUrl(localVideoPath) // "/sdcard/mogo/media"
?.setPlayTag(MediaFileCacheManager.getCacheFileName(videoUrl))
?.setCacheWithPlay(false)
?.setThumbPlay(false)

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="@dimen/dp_439"
android:layout_height="@dimen/dp_333"
android:orientation="vertical"
android:gravity="center"
android:layout_gravity="center">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_feedback_status"
android:layout_width="@dimen/dp_140"
android:layout_height="@dimen/dp_140"
android:src="@drawable/common_feedback_success" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_feedback_status_describe"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="打点成功"
android:textSize="@dimen/dp_38"
android:textColor="@color/white"
android:layout_marginTop="@dimen/dp_28"/>
</androidx.appcompat.widget.LinearLayoutCompat>

View File

@@ -12,6 +12,7 @@ import com.mogo.och.weaknet.ui.switchline.SwitchLineAdapter.SwitchLineViewHolder
import com.mogo.och.shuttle.weaknet.R
import com.mogo.och.weaknet.repository.db.bean.LineDataBean
import com.mogo.och.weaknet.repository.db.bean.TaskDataBean
import me.jessyan.autosize.AutoSizeCompat
/**
* 路线列表adapter
@@ -50,6 +51,7 @@ class SwitchLineAdapter(
override fun onBindViewHolder(holder: SwitchLineViewHolder, position: Int) {
val currentPosition = holder.bindingAdapterPosition
AutoSizeCompat.autoConvertDensityOfGlobal(holder.itemView.resources)
val line = mData[currentPosition]
holder.lineName.text = line.lineName

View File

@@ -13,6 +13,7 @@ import com.mogo.och.common.module.manager.loop.BizLoopManager
import com.mogo.och.weaknet.ui.switchtask.SwitchLineTaskAdapter.SwitchLineTaskViewHolder
import com.mogo.och.shuttle.weaknet.R
import com.mogo.och.weaknet.repository.db.bean.TaskDataBean
import me.jessyan.autosize.AutoSizeCompat
/**
* 路线列表adapter
@@ -49,6 +50,7 @@ class SwitchLineTaskAdapter(
override fun onBindViewHolder(holder: SwitchLineTaskViewHolder, position: Int) {
val currentPosition = holder.bindingAdapterPosition
AutoSizeCompat.autoConvertDensityOfGlobal(holder.itemView.resources)
val task = mData[currentPosition]
val taskStartTime = TimeUtils.millis2String(task.taskStartTime?:System.currentTimeMillis(), "HH:mm")
holder.taskTime.text = taskStartTime

View File

@@ -6,9 +6,7 @@ import android.view.LayoutInflater
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.findViewTreeViewModelStoreOwner
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.common.module.manager.loop.BizLoopManager
@@ -52,7 +50,7 @@ class SwitchTaskView: WindowRelativeLayout, SwtichTaskModel.SwtichLineViewCallba
private lateinit var mAdapter: SwitchLineTaskAdapter
private lateinit var linearLayoutManager:LinearLayoutManager
private lateinit var linearLayoutManager:GridLayoutManager
init {
LayoutInflater.from(context).inflate(R.layout.shuttle_weak_switch_task, this, true)
@@ -60,7 +58,7 @@ class SwitchTaskView: WindowRelativeLayout, SwtichTaskModel.SwtichLineViewCallba
}
private fun initView(){
linearLayoutManager = GridLayoutManager(context, 3)
linearLayoutManager = GridLayoutManager(context, 3)
rv_switch_task.setLayoutManager(linearLayoutManager)
mAdapter = SwitchLineTaskAdapter(context,null, mutableListOf())
rv_switch_task.setAdapter(mAdapter)

View File

@@ -5,9 +5,13 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.CheckBox
import androidx.appcompat.widget.AppCompatImageView
import androidx.appcompat.widget.AppCompatTextView
import androidx.recyclerview.widget.RecyclerView
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.och.unmanned.taxi.R
import com.mogo.och.unmanned.taxi.bean.PointError
import me.jessyan.autosize.AutoSizeCompat
/**
* Created by yangyakun on 06/06/17.
@@ -42,12 +46,16 @@ class ErrorPointItemAdapter(
override fun onBindViewHolder(holder: TextVH, position: Int) {
val errorInfo = dataList[holder.bindingAdapterPosition]
holder.cbErrorInfo.text = errorInfo.name
holder.cbErrorInfo.isChecked = errorInfo.isCheck
holder.cbErrorInfo.setOnCheckedChangeListener { buttonView, isChecked ->
if(buttonView==holder.cbErrorInfo){
errorInfo.isCheck = isChecked
}
AutoSizeCompat.autoConvertDensityOfGlobal(holder.itemView.resources)
if (errorInfo.isCheck) {
holder.cbErrorInfo.setImageResource(R.drawable.taxi_routing_check)
}else{
holder.cbErrorInfo.setImageResource(R.drawable.taxi_routing_uncheck)
}
holder.cbErrorResong.text = errorInfo.name
holder.itemView.onClick {
errorInfo.isCheck = !errorInfo.isCheck
notifyItemChanged(holder.bindingAdapterPosition)
}
}
@@ -56,9 +64,7 @@ class ErrorPointItemAdapter(
}
inner class TextVH(itemView: View) : RecyclerView.ViewHolder(itemView) {
var cbErrorInfo: CheckBox
init {
cbErrorInfo = itemView.findViewById(R.id.cb_error_info)
}
var cbErrorInfo: AppCompatImageView = itemView.findViewById(R.id.aciv_show_check_status)
var cbErrorResong: AppCompatTextView = itemView.findViewById(R.id.actv_error_resong)
}
}

View File

@@ -4,6 +4,7 @@ import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.GridLayoutManager
import com.google.android.flexbox.AlignItems
import com.google.android.flexbox.FlexDirection
import com.google.android.flexbox.FlexWrap
@@ -14,9 +15,11 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.TimeUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.common.module.wigets.WindowRelativeLayout
import com.mogo.och.common.module.wigets.dialog.CommonFeedbackDialog
import com.mogo.och.unmanned.taxi.R
import com.mogo.och.unmanned.taxi.bean.PointError
import com.mogo.och.unmanned.taxi.ui.routing.TaxiRoutingLoadingDialog
import kotlinx.android.synthetic.main.taxt_report_error_point_panel.view.lvs_loding
import kotlinx.android.synthetic.main.taxt_report_error_point_panel.view.rvErrorPointReason
import kotlinx.android.synthetic.main.taxt_report_error_point_panel.view.tv_report_error_point_reason
import kotlinx.android.synthetic.main.taxt_report_error_point_panel.view.tv_report_error_point_reason_cancel
@@ -58,12 +61,6 @@ class ReportErrorPointView : WindowRelativeLayout,
private var occurrenceTime:Long = System.currentTimeMillis()
private val mLoadingDialog: TaxiRoutingLoadingDialog by lazy {
TaxiRoutingLoadingDialog(
context
)
}
private fun initView() {
d(SceneConstant.M_TAXI_P + TAG, "initView")
LayoutInflater.from(context).inflate(R.layout.taxt_report_error_point_panel, this, true)
@@ -73,7 +70,7 @@ class ReportErrorPointView : WindowRelativeLayout,
flexboxLayoutManager.alignItems = AlignItems.CENTER
flexboxLayoutManager.flexWrap = FlexWrap.WRAP
rvErrorPointReason?.layoutManager = flexboxLayoutManager
rvErrorPointReason?.layoutManager = GridLayoutManager(context, 2)
rvErrorPointReason?.setHasFixedSize(true)
errorPointItemAdapter = ErrorPointItemAdapter(
context, mutableListOf(
@@ -91,7 +88,8 @@ class ReportErrorPointView : WindowRelativeLayout,
ToastUtils.showShort("请选择问题类型")
return@onClick
}
mLoadingDialog.showLoading()
tv_report_error_point_reason_cancel.isEnabled = false
lvs_loding.visibility = VISIBLE
this.viewModel?.submitErrorPointReasons(checkDataList,occurrenceTime)
}
}
@@ -101,9 +99,8 @@ class ReportErrorPointView : WindowRelativeLayout,
d(SceneConstant.M_TAXI_P + TAG, "展示---:${isVisible}")
if (isVisible) {
occurrenceTime = System.currentTimeMillis()
tv_work_order_time.text = "时间:${TimeUtils.millis2String(occurrenceTime, TimeUtils.getHourMinSecondFormat())}"
tv_work_order_time.text = TimeUtils.millis2String(occurrenceTime, TimeUtils.getHourMinSecondFormat())
viewModel?.getPointErrorReasons()
mLoadingDialog.showLoading()
} else {
}
@@ -130,7 +127,6 @@ class ReportErrorPointView : WindowRelativeLayout,
}
override fun addViewData(it: MutableList<PointError>) {
mLoadingDialog.hideLoading()
errorPointItemAdapter.setDataList(it)
}
@@ -138,12 +134,23 @@ class ReportErrorPointView : WindowRelativeLayout,
msg?.let {
ToastUtils.showLong(msg)
}
mLoadingDialog.hideLoading()
lvs_loding.visibility = GONE
CommonFeedbackDialog
.Builder()
.title("请重试")
.status(CommonFeedbackDialog.Status.success)
.build(context).show()
}
override fun submitErrorReasons() {
mLoadingDialog.hideLoading()
this.closeCallback?.close()
tv_report_error_point_reason_cancel.isEnabled = true
lvs_loding.visibility = GONE
closeCallback?.close()
CommonFeedbackDialog
.Builder()
.title("打点成功")
.status(CommonFeedbackDialog.Status.success)
.build(context).show()
}
fun setDismiss(listener: CloseCallback) {

View File

@@ -10,6 +10,7 @@ import androidx.recyclerview.widget.DiffUtil.Callback
import androidx.recyclerview.widget.RecyclerView
import com.mogo.och.unmanned.taxi.R
import com.mogo.och.unmanned.taxi.bean.GrayLineBean
import me.jessyan.autosize.AutoSizeCompat
/**
* 路线列表adapter
@@ -49,6 +50,7 @@ class RoutingItemAdapter(
override fun onBindViewHolder(holder: RoutingItemViewHolder, position: Int) {
val currentPosition = holder.bindingAdapterPosition
val routing = mData[currentPosition]
AutoSizeCompat.autoConvertDensityOfGlobal(holder.itemView.resources)
holder.routingName.text = routing.lineName
holder.todayVerifyNum.text = "今日验证:${routing.carVerificationCount}"

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -1,19 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<CheckBox
android:id="@+id/cb_error_info"
android:button="@null"
android:text="原因"
android:layout_margin="@dimen/dp_10"
android:paddingStart="@dimen/dp_40"
android:paddingEnd="@dimen/dp_40"
android:paddingTop="@dimen/dp_14"
android:paddingBottom="@dimen/dp_14"
android:layout_width="match_parent"
xmlns:tools="http://schemas.android.com/tools"
tools:background="@color/result_points"
android:layout_height="@dimen/dp_90">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_show_check_status"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:src="@drawable/taxi_routing_uncheck"
android:layout_width="@dimen/dp_53"
android:layout_height="@dimen/dp_53"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_error_resong"
app:layout_constraintTop_toTopOf="@+id/aciv_show_check_status"
app:layout_constraintBottom_toBottomOf="@+id/aciv_show_check_status"
app:layout_constraintStart_toEndOf="@+id/aciv_show_check_status"
app:layout_constraintEnd_toEndOf="parent"
android:maxLines="2"
android:ellipsize="end"
android:lineSpacingMultiplier="0.7"
android:layout_marginStart="@dimen/dp_30"
tools:text="绕路绕路绕路绕路绕绕路绕路绕路绕路绕绕路绕路绕路绕路绕绕路绕路绕路绕路绕绕路绕路绕路绕路绕绕路绕路绕路绕路绕"
android:textColor="@color/white"
android:background="@drawable/taxi_error_point_reason_bg"
android:layout_width="wrap_content"
android:textSize="@dimen/dp_36"
android:layout_width="0dp"
android:layout_height="wrap_content"/>
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -1,105 +1,92 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<com.mogo.och.common.module.wigets.OCHRoundConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="@dimen/dp_844"
android:layout_height="wrap_content"
android:background="@drawable/taxi_error_point_report_bg">
<View
android:id="@+id/view_title_bg"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_102"
android:background="@drawable/taxi_error_point_head_bg"
app:layout_constraintTop_toTopOf="parent" />
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="@dimen/dp_900"
android:layout_height="@dimen/dp_730"
android:background="@drawable/common_qr_dialog"
app:roundLayoutRadius="@dimen/dp_50">
<TextView
android:id="@+id/tv_report_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_33"
android:text="问题上报"
android:text="线路问题打点"
android:textColor="@color/white"
android:textSize="@dimen/sp_34"
android:textSize="@dimen/sp_45"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/view_title_bg"
app:layout_constraintStart_toStartOf="@id/view_title_bg"
app:layout_constraintTop_toTopOf="@+id/view_title_bg" />
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="@dimen/dp_51"
/>
<TextView
android:id="@+id/tv_work_order_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_31"
android:layout_marginEnd="@dimen/dp_67"
android:text="时间"
android:textColor="@color/white"
android:textSize="@dimen/sp_30"
app:layout_constraintBottom_toBottomOf="@id/view_title_bg"
app:layout_constraintEnd_toEndOf="@id/view_title_bg"
app:layout_constraintTop_toTopOf="@id/view_title_bg" />
<View
android:id="@+id/view_type_label"
android:layout_width="@dimen/dp_6"
android:layout_height="@dimen/dp_29"
android:layout_marginStart="@dimen/dp_33"
android:layout_marginTop="@dimen/dp_40"
android:background="#FF0176FF"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/view_title_bg" />
<TextView
android:id="@+id/tv_type_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_13"
android:text="问题类型"
android:textColor="@color/white"
android:textSize="@dimen/sp_32"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/view_type_label"
app:layout_constraintLeft_toRightOf="@id/view_type_label"
app:layout_constraintTop_toTopOf="@id/view_type_label" />
app:layout_constraintTop_toTopOf="@+id/tv_report_title"
app:layout_constraintBottom_toBottomOf="@+id/tv_report_title"
app:layout_constraintEnd_toEndOf="parent"
/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvErrorPointReason"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_23"
android:layout_marginTop="@dimen/dp_6"
android:layout_marginEnd="@dimen/dp_23"
app:layout_constraintHeight_min="@dimen/dp_140"
app:layout_constraintTop_toBottomOf="@+id/tv_type_title" />
android:layout_height="@dimen/dp_0"
android:layout_marginStart="@dimen/dp_65"
android:layout_marginTop="@dimen/dp_56"
android:layout_marginEnd="@dimen/dp_65"
android:layout_marginBottom="@dimen/dp_10"
app:layout_constraintBottom_toTopOf="@+id/tv_report_error_point_reason"
app:layout_constraintTop_toBottomOf="@+id/tv_report_title" />
<TextView
android:id="@+id/tv_report_error_point_reason"
android:layout_width="@dimen/dp_370"
android:layout_height="@dimen/dp_80"
android:layout_marginTop="@dimen/dp_30"
android:layout_marginBottom="@dimen/dp_40"
android:background="@drawable/taxi_error_point_report_submit_bg"
android:layout_width="@dimen/dp_356"
android:layout_height="@dimen/dp_120"
android:background="@drawable/common_button_cancle"
android:gravity="center"
android:text="上报"
android:textColor="#FFFFFF"
android:textSize="@dimen/sp_27"
android:text="打点"
android:textColor="@color/taxi_color_2eacff"
android:textSize="@dimen/sp_40"
android:textStyle="bold"
android:layout_marginBottom="@dimen/dp_65"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/tv_report_error_point_reason_cancel"
app:layout_constraintTop_toBottomOf="@+id/rvErrorPointReason" />
app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="@dimen/dp_65"
/>
<com.mogo.och.common.module.wigets.loading.LoadingViewSmall
android:id="@+id/lvs_loding"
app:layout_constraintTop_toTopOf="@+id/tv_report_error_point_reason"
app:layout_constraintBottom_toBottomOf="@+id/tv_report_error_point_reason"
app:layout_constraintEnd_toEndOf="@+id/tv_report_error_point_reason"
android:layout_marginEnd="@dimen/dp_30"
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/tv_report_error_point_reason_cancel"
android:layout_width="@dimen/dp_370"
android:layout_height="@dimen/dp_80"
android:layout_marginBottom="@dimen/dp_40"
android:background="@drawable/taxi_error_point_report_cancle_bg"
android:layout_width="@dimen/dp_356"
android:layout_height="@dimen/dp_120"
android:layout_marginBottom="@dimen/dp_65"
android:background="@drawable/common_button_cancle"
android:layout_marginEnd="@dimen/dp_66"
android:gravity="center"
android:text="取消"
android:textColor="#FFFFFF"
android:textSize="@dimen/sp_27"
android:textSize="@dimen/sp_40"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/tv_report_error_point_reason"
app:layout_constraintRight_toRightOf="parent" />
app:layout_constraintEnd_toEndOf="parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.mogo.och.common.module.wigets.OCHRoundConstraintLayout>