diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 95caacb..a88c540 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -63,6 +63,7 @@ + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 95caacb..a88c540 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -63,6 +63,7 @@ + diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 15f5263..46515b2 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -15,6 +15,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemDivider import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.isNetworkConnected import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -76,66 +77,7 @@ } else { binding.emptyView.visibility = View.GONE binding.recyclerView.visibility = View.VISIBLE - alarmAdapter = object : - NormalRecyclerAdapter( - R.layout.item_alarm_rv_l, dataRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: AlarmListModel.DataModel.RowsModel - ) { - val color = when (item.alarmStatusName) { - "正在报警" -> R.color.redTextColor.convertColor(context) - "手动消警" -> R.color.greenColor.convertColor(context) - else -> R.color.hintTextColor.convertColor(context) - } - - val road = if (item.workRoad.isNullOrBlank()) { - "未知" - } else { - item.workRoad - } - - viewHolder.setText(R.id.alarmStatusView, item.alarmStatusName) - .setBackgroundColor(R.id.alarmStatusView, color) - .setText(R.id.alarmContentView, item.alarmContent) - .setText(R.id.workRoadView, road) - .setText(R.id.alarmTimeView, item.alarmTime) - .setImageResource( - R.id.alarmImageView, item.alarmImage.combineImagePath() - ) - .setOnClickListener(R.id.alarmImageView) { - navigatePageTo( - 0, arrayListOf(item.alarmImage.combineImagePath()) - ) - } - - if (item.alarmType == "1" || - item.alarmType == "4" || - item.alarmType == "5" || - item.alarmType == "7" || - item.alarmType == "8" || - item.alarmType == "9" || - item.alarmType == "10" - ) { - val ppm = item.alarmValue.toString().toFloat() - val lel = "%.2f".format(ppm / 500) - viewHolder.setVisibility(R.id.alarmValueView, View.VISIBLE) - .setVisibility(R.id.alarmImageView, View.GONE) - .setText( - R.id.alarmValueView, "报警值:${lel}%LEL" - ) - } else { - viewHolder.setVisibility( - R.id.alarmValueView, View.INVISIBLE - ).setVisibility(R.id.alarmImageView, View.VISIBLE) - } - } - } - binding.recyclerView.adapter = alarmAdapter - binding.recyclerView.addItemDecoration( - RecyclerViewItemDivider(0f, 0f, Color.LTGRAY) - ) + initRecyclerView(dataRows) } } } @@ -144,6 +86,80 @@ getAlarmListByPage() } + private fun initRecyclerView(dataRows: MutableList) { + alarmAdapter = object : + NormalRecyclerAdapter( + R.layout.item_alarm_rv_l, dataRows + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: AlarmListModel.DataModel.RowsModel + ) { + val color = when (item.alarmStatusName) { + "正在报警" -> R.color.redTextColor.convertColor(context) + "手动消警" -> R.color.greenColor.convertColor(context) + else -> R.color.hintTextColor.convertColor(context) + } + + val road = if (item.workRoad.isNullOrBlank()) { + "未知" + } else { + item.workRoad + } + + viewHolder.setText(R.id.alarmStatusView, item.alarmStatusName) + .setBackgroundColor(R.id.alarmStatusView, color) + .setText(R.id.alarmContentView, item.alarmContent) + .setText(R.id.workRoadView, road) + .setText(R.id.alarmTimeView, item.alarmTime) + .setImageResource(R.id.alarmImageView, item.alarmImage.combineImagePath()) + .setOnClickListener(R.id.alarmImageView) { + navigatePageTo( + 0, arrayListOf(item.alarmImage.combineImagePath()) + ) + } + + if (item.alarmType == "1" || + item.alarmType == "4" || + item.alarmType == "5" || + item.alarmType == "7" || + item.alarmType == "8" || + item.alarmType == "9" || + item.alarmType == "10" + ) { + val ppm = item.alarmValue.toString().toFloat() + val lel = "%.2f".format(ppm / 500) + viewHolder.setVisibility(R.id.alarmValueView, View.VISIBLE) + .setVisibility(R.id.alarmImageView, View.GONE) + .setText(R.id.alarmValueView, "报警值:${lel}%LEL") + } else { + viewHolder.setVisibility(R.id.alarmValueView, View.INVISIBLE) + .setVisibility(R.id.alarmImageView, View.VISIBLE) + } + } + } + binding.recyclerView.adapter = alarmAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemDivider(0f, 130f.dp2px(this), Color.LTGRAY) + ) + alarmAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, item: AlarmListModel.DataModel.RowsModel) { + if (item.alarmType == "1" || + item.alarmType == "4" || + item.alarmType == "5" || + item.alarmType == "7" || + item.alarmType == "8" || + item.alarmType == "9" || + item.alarmType == "10" + ) { + navigatePageTo() + } else { + "暂时仅支持燃气设备查看浓度趋势".show(this@AlarmListActivity) + } + } + }) + } + override fun observeRequestState() { alarmViewModel.loadState.observe(this) { if (isRefresh || isLoadMore) { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 95caacb..a88c540 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -63,6 +63,7 @@ + diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 15f5263..46515b2 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -15,6 +15,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemDivider import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.isNetworkConnected import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -76,66 +77,7 @@ } else { binding.emptyView.visibility = View.GONE binding.recyclerView.visibility = View.VISIBLE - alarmAdapter = object : - NormalRecyclerAdapter( - R.layout.item_alarm_rv_l, dataRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: AlarmListModel.DataModel.RowsModel - ) { - val color = when (item.alarmStatusName) { - "正在报警" -> R.color.redTextColor.convertColor(context) - "手动消警" -> R.color.greenColor.convertColor(context) - else -> R.color.hintTextColor.convertColor(context) - } - - val road = if (item.workRoad.isNullOrBlank()) { - "未知" - } else { - item.workRoad - } - - viewHolder.setText(R.id.alarmStatusView, item.alarmStatusName) - .setBackgroundColor(R.id.alarmStatusView, color) - .setText(R.id.alarmContentView, item.alarmContent) - .setText(R.id.workRoadView, road) - .setText(R.id.alarmTimeView, item.alarmTime) - .setImageResource( - R.id.alarmImageView, item.alarmImage.combineImagePath() - ) - .setOnClickListener(R.id.alarmImageView) { - navigatePageTo( - 0, arrayListOf(item.alarmImage.combineImagePath()) - ) - } - - if (item.alarmType == "1" || - item.alarmType == "4" || - item.alarmType == "5" || - item.alarmType == "7" || - item.alarmType == "8" || - item.alarmType == "9" || - item.alarmType == "10" - ) { - val ppm = item.alarmValue.toString().toFloat() - val lel = "%.2f".format(ppm / 500) - viewHolder.setVisibility(R.id.alarmValueView, View.VISIBLE) - .setVisibility(R.id.alarmImageView, View.GONE) - .setText( - R.id.alarmValueView, "报警值:${lel}%LEL" - ) - } else { - viewHolder.setVisibility( - R.id.alarmValueView, View.INVISIBLE - ).setVisibility(R.id.alarmImageView, View.VISIBLE) - } - } - } - binding.recyclerView.adapter = alarmAdapter - binding.recyclerView.addItemDecoration( - RecyclerViewItemDivider(0f, 0f, Color.LTGRAY) - ) + initRecyclerView(dataRows) } } } @@ -144,6 +86,80 @@ getAlarmListByPage() } + private fun initRecyclerView(dataRows: MutableList) { + alarmAdapter = object : + NormalRecyclerAdapter( + R.layout.item_alarm_rv_l, dataRows + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: AlarmListModel.DataModel.RowsModel + ) { + val color = when (item.alarmStatusName) { + "正在报警" -> R.color.redTextColor.convertColor(context) + "手动消警" -> R.color.greenColor.convertColor(context) + else -> R.color.hintTextColor.convertColor(context) + } + + val road = if (item.workRoad.isNullOrBlank()) { + "未知" + } else { + item.workRoad + } + + viewHolder.setText(R.id.alarmStatusView, item.alarmStatusName) + .setBackgroundColor(R.id.alarmStatusView, color) + .setText(R.id.alarmContentView, item.alarmContent) + .setText(R.id.workRoadView, road) + .setText(R.id.alarmTimeView, item.alarmTime) + .setImageResource(R.id.alarmImageView, item.alarmImage.combineImagePath()) + .setOnClickListener(R.id.alarmImageView) { + navigatePageTo( + 0, arrayListOf(item.alarmImage.combineImagePath()) + ) + } + + if (item.alarmType == "1" || + item.alarmType == "4" || + item.alarmType == "5" || + item.alarmType == "7" || + item.alarmType == "8" || + item.alarmType == "9" || + item.alarmType == "10" + ) { + val ppm = item.alarmValue.toString().toFloat() + val lel = "%.2f".format(ppm / 500) + viewHolder.setVisibility(R.id.alarmValueView, View.VISIBLE) + .setVisibility(R.id.alarmImageView, View.GONE) + .setText(R.id.alarmValueView, "报警值:${lel}%LEL") + } else { + viewHolder.setVisibility(R.id.alarmValueView, View.INVISIBLE) + .setVisibility(R.id.alarmImageView, View.VISIBLE) + } + } + } + binding.recyclerView.adapter = alarmAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemDivider(0f, 130f.dp2px(this), Color.LTGRAY) + ) + alarmAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, item: AlarmListModel.DataModel.RowsModel) { + if (item.alarmType == "1" || + item.alarmType == "4" || + item.alarmType == "5" || + item.alarmType == "7" || + item.alarmType == "8" || + item.alarmType == "9" || + item.alarmType == "10" + ) { + navigatePageTo() + } else { + "暂时仅支持燃气设备查看浓度趋势".show(this@AlarmListActivity) + } + } + }) + } + override fun observeRequestState() { alarmViewModel.loadState.observe(this) { if (isRefresh || isLoadMore) { diff --git a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt new file mode 100644 index 0000000..cb8fc3b --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt @@ -0,0 +1,77 @@ +package com.casic.br.operationsite.view + +import android.os.Bundle +import com.amap.api.maps.AMap +import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityGasDetailBinding +import com.casic.br.operationsite.extensions.initImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.ActivityStackManager +import com.pengxh.kt.lite.widget.TitleBarView + +class GasDetailActivity : KotlinBaseActivity() { + + private val kTag = "GasDetailActivity" + private lateinit var aMap: AMap + + override fun initOnCreate(savedInstanceState: Bundle?) { + ActivityStackManager.addActivity(this) + + /** + * 地图初始化设置 + * */ + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + uiSettings.isRotateGesturesEnabled = false//不允许地图随手势改变方位 + } + + override fun initViewBinding(): ActivityGasDetailBinding { + return ActivityGasDetailBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.mainThemeColor) + + binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener { + override fun onLeftClick() { + finish() + } + + override fun onRightClick() { + + } + }) + } + + override fun initEvent() { + + } + + /**地图相关*********/ + override fun onResume() { + super.onResume() + binding.mapView.onResume() + } + + override fun onPause() { + super.onPause() + binding.mapView.onPause() + } + + override fun onDestroy() { + binding.mapView.onDestroy() + super.onDestroy() + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 95caacb..a88c540 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -63,6 +63,7 @@ + diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 15f5263..46515b2 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -15,6 +15,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemDivider import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.isNetworkConnected import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -76,66 +77,7 @@ } else { binding.emptyView.visibility = View.GONE binding.recyclerView.visibility = View.VISIBLE - alarmAdapter = object : - NormalRecyclerAdapter( - R.layout.item_alarm_rv_l, dataRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: AlarmListModel.DataModel.RowsModel - ) { - val color = when (item.alarmStatusName) { - "正在报警" -> R.color.redTextColor.convertColor(context) - "手动消警" -> R.color.greenColor.convertColor(context) - else -> R.color.hintTextColor.convertColor(context) - } - - val road = if (item.workRoad.isNullOrBlank()) { - "未知" - } else { - item.workRoad - } - - viewHolder.setText(R.id.alarmStatusView, item.alarmStatusName) - .setBackgroundColor(R.id.alarmStatusView, color) - .setText(R.id.alarmContentView, item.alarmContent) - .setText(R.id.workRoadView, road) - .setText(R.id.alarmTimeView, item.alarmTime) - .setImageResource( - R.id.alarmImageView, item.alarmImage.combineImagePath() - ) - .setOnClickListener(R.id.alarmImageView) { - navigatePageTo( - 0, arrayListOf(item.alarmImage.combineImagePath()) - ) - } - - if (item.alarmType == "1" || - item.alarmType == "4" || - item.alarmType == "5" || - item.alarmType == "7" || - item.alarmType == "8" || - item.alarmType == "9" || - item.alarmType == "10" - ) { - val ppm = item.alarmValue.toString().toFloat() - val lel = "%.2f".format(ppm / 500) - viewHolder.setVisibility(R.id.alarmValueView, View.VISIBLE) - .setVisibility(R.id.alarmImageView, View.GONE) - .setText( - R.id.alarmValueView, "报警值:${lel}%LEL" - ) - } else { - viewHolder.setVisibility( - R.id.alarmValueView, View.INVISIBLE - ).setVisibility(R.id.alarmImageView, View.VISIBLE) - } - } - } - binding.recyclerView.adapter = alarmAdapter - binding.recyclerView.addItemDecoration( - RecyclerViewItemDivider(0f, 0f, Color.LTGRAY) - ) + initRecyclerView(dataRows) } } } @@ -144,6 +86,80 @@ getAlarmListByPage() } + private fun initRecyclerView(dataRows: MutableList) { + alarmAdapter = object : + NormalRecyclerAdapter( + R.layout.item_alarm_rv_l, dataRows + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: AlarmListModel.DataModel.RowsModel + ) { + val color = when (item.alarmStatusName) { + "正在报警" -> R.color.redTextColor.convertColor(context) + "手动消警" -> R.color.greenColor.convertColor(context) + else -> R.color.hintTextColor.convertColor(context) + } + + val road = if (item.workRoad.isNullOrBlank()) { + "未知" + } else { + item.workRoad + } + + viewHolder.setText(R.id.alarmStatusView, item.alarmStatusName) + .setBackgroundColor(R.id.alarmStatusView, color) + .setText(R.id.alarmContentView, item.alarmContent) + .setText(R.id.workRoadView, road) + .setText(R.id.alarmTimeView, item.alarmTime) + .setImageResource(R.id.alarmImageView, item.alarmImage.combineImagePath()) + .setOnClickListener(R.id.alarmImageView) { + navigatePageTo( + 0, arrayListOf(item.alarmImage.combineImagePath()) + ) + } + + if (item.alarmType == "1" || + item.alarmType == "4" || + item.alarmType == "5" || + item.alarmType == "7" || + item.alarmType == "8" || + item.alarmType == "9" || + item.alarmType == "10" + ) { + val ppm = item.alarmValue.toString().toFloat() + val lel = "%.2f".format(ppm / 500) + viewHolder.setVisibility(R.id.alarmValueView, View.VISIBLE) + .setVisibility(R.id.alarmImageView, View.GONE) + .setText(R.id.alarmValueView, "报警值:${lel}%LEL") + } else { + viewHolder.setVisibility(R.id.alarmValueView, View.INVISIBLE) + .setVisibility(R.id.alarmImageView, View.VISIBLE) + } + } + } + binding.recyclerView.adapter = alarmAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemDivider(0f, 130f.dp2px(this), Color.LTGRAY) + ) + alarmAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, item: AlarmListModel.DataModel.RowsModel) { + if (item.alarmType == "1" || + item.alarmType == "4" || + item.alarmType == "5" || + item.alarmType == "7" || + item.alarmType == "8" || + item.alarmType == "9" || + item.alarmType == "10" + ) { + navigatePageTo() + } else { + "暂时仅支持燃气设备查看浓度趋势".show(this@AlarmListActivity) + } + } + }) + } + override fun observeRequestState() { alarmViewModel.loadState.observe(this) { if (isRefresh || isLoadMore) { diff --git a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt new file mode 100644 index 0000000..cb8fc3b --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt @@ -0,0 +1,77 @@ +package com.casic.br.operationsite.view + +import android.os.Bundle +import com.amap.api.maps.AMap +import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityGasDetailBinding +import com.casic.br.operationsite.extensions.initImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.ActivityStackManager +import com.pengxh.kt.lite.widget.TitleBarView + +class GasDetailActivity : KotlinBaseActivity() { + + private val kTag = "GasDetailActivity" + private lateinit var aMap: AMap + + override fun initOnCreate(savedInstanceState: Bundle?) { + ActivityStackManager.addActivity(this) + + /** + * 地图初始化设置 + * */ + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + uiSettings.isRotateGesturesEnabled = false//不允许地图随手势改变方位 + } + + override fun initViewBinding(): ActivityGasDetailBinding { + return ActivityGasDetailBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.mainThemeColor) + + binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener { + override fun onLeftClick() { + finish() + } + + override fun onRightClick() { + + } + }) + } + + override fun initEvent() { + + } + + /**地图相关*********/ + override fun onResume() { + super.onResume() + binding.mapView.onResume() + } + + override fun onPause() { + super.onPause() + binding.mapView.onPause() + } + + override fun onDestroy() { + binding.mapView.onDestroy() + super.onDestroy() + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt b/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt new file mode 100644 index 0000000..67e831c --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt @@ -0,0 +1,19 @@ +package com.casic.br.operationsite.widgets + +import android.content.Context +import android.util.AttributeSet +import android.view.MotionEvent +import com.amap.api.maps.MapView + +/** + * 解决[com.amap.api.maps.MapView]和[androidx.core.widget.NestedScrollView]的滑动冲突 + */ +class CustomMapView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 +) : MapView(context, attrs, defStyleAttr) { + + override fun dispatchTouchEvent(ev: MotionEvent): Boolean { + parent.requestDisallowInterceptTouchEvent(true) + return super.dispatchTouchEvent(ev) + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 95caacb..a88c540 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -63,6 +63,7 @@ + diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 15f5263..46515b2 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -15,6 +15,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemDivider import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.isNetworkConnected import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -76,66 +77,7 @@ } else { binding.emptyView.visibility = View.GONE binding.recyclerView.visibility = View.VISIBLE - alarmAdapter = object : - NormalRecyclerAdapter( - R.layout.item_alarm_rv_l, dataRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: AlarmListModel.DataModel.RowsModel - ) { - val color = when (item.alarmStatusName) { - "正在报警" -> R.color.redTextColor.convertColor(context) - "手动消警" -> R.color.greenColor.convertColor(context) - else -> R.color.hintTextColor.convertColor(context) - } - - val road = if (item.workRoad.isNullOrBlank()) { - "未知" - } else { - item.workRoad - } - - viewHolder.setText(R.id.alarmStatusView, item.alarmStatusName) - .setBackgroundColor(R.id.alarmStatusView, color) - .setText(R.id.alarmContentView, item.alarmContent) - .setText(R.id.workRoadView, road) - .setText(R.id.alarmTimeView, item.alarmTime) - .setImageResource( - R.id.alarmImageView, item.alarmImage.combineImagePath() - ) - .setOnClickListener(R.id.alarmImageView) { - navigatePageTo( - 0, arrayListOf(item.alarmImage.combineImagePath()) - ) - } - - if (item.alarmType == "1" || - item.alarmType == "4" || - item.alarmType == "5" || - item.alarmType == "7" || - item.alarmType == "8" || - item.alarmType == "9" || - item.alarmType == "10" - ) { - val ppm = item.alarmValue.toString().toFloat() - val lel = "%.2f".format(ppm / 500) - viewHolder.setVisibility(R.id.alarmValueView, View.VISIBLE) - .setVisibility(R.id.alarmImageView, View.GONE) - .setText( - R.id.alarmValueView, "报警值:${lel}%LEL" - ) - } else { - viewHolder.setVisibility( - R.id.alarmValueView, View.INVISIBLE - ).setVisibility(R.id.alarmImageView, View.VISIBLE) - } - } - } - binding.recyclerView.adapter = alarmAdapter - binding.recyclerView.addItemDecoration( - RecyclerViewItemDivider(0f, 0f, Color.LTGRAY) - ) + initRecyclerView(dataRows) } } } @@ -144,6 +86,80 @@ getAlarmListByPage() } + private fun initRecyclerView(dataRows: MutableList) { + alarmAdapter = object : + NormalRecyclerAdapter( + R.layout.item_alarm_rv_l, dataRows + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: AlarmListModel.DataModel.RowsModel + ) { + val color = when (item.alarmStatusName) { + "正在报警" -> R.color.redTextColor.convertColor(context) + "手动消警" -> R.color.greenColor.convertColor(context) + else -> R.color.hintTextColor.convertColor(context) + } + + val road = if (item.workRoad.isNullOrBlank()) { + "未知" + } else { + item.workRoad + } + + viewHolder.setText(R.id.alarmStatusView, item.alarmStatusName) + .setBackgroundColor(R.id.alarmStatusView, color) + .setText(R.id.alarmContentView, item.alarmContent) + .setText(R.id.workRoadView, road) + .setText(R.id.alarmTimeView, item.alarmTime) + .setImageResource(R.id.alarmImageView, item.alarmImage.combineImagePath()) + .setOnClickListener(R.id.alarmImageView) { + navigatePageTo( + 0, arrayListOf(item.alarmImage.combineImagePath()) + ) + } + + if (item.alarmType == "1" || + item.alarmType == "4" || + item.alarmType == "5" || + item.alarmType == "7" || + item.alarmType == "8" || + item.alarmType == "9" || + item.alarmType == "10" + ) { + val ppm = item.alarmValue.toString().toFloat() + val lel = "%.2f".format(ppm / 500) + viewHolder.setVisibility(R.id.alarmValueView, View.VISIBLE) + .setVisibility(R.id.alarmImageView, View.GONE) + .setText(R.id.alarmValueView, "报警值:${lel}%LEL") + } else { + viewHolder.setVisibility(R.id.alarmValueView, View.INVISIBLE) + .setVisibility(R.id.alarmImageView, View.VISIBLE) + } + } + } + binding.recyclerView.adapter = alarmAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemDivider(0f, 130f.dp2px(this), Color.LTGRAY) + ) + alarmAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, item: AlarmListModel.DataModel.RowsModel) { + if (item.alarmType == "1" || + item.alarmType == "4" || + item.alarmType == "5" || + item.alarmType == "7" || + item.alarmType == "8" || + item.alarmType == "9" || + item.alarmType == "10" + ) { + navigatePageTo() + } else { + "暂时仅支持燃气设备查看浓度趋势".show(this@AlarmListActivity) + } + } + }) + } + override fun observeRequestState() { alarmViewModel.loadState.observe(this) { if (isRefresh || isLoadMore) { diff --git a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt new file mode 100644 index 0000000..cb8fc3b --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt @@ -0,0 +1,77 @@ +package com.casic.br.operationsite.view + +import android.os.Bundle +import com.amap.api.maps.AMap +import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityGasDetailBinding +import com.casic.br.operationsite.extensions.initImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.ActivityStackManager +import com.pengxh.kt.lite.widget.TitleBarView + +class GasDetailActivity : KotlinBaseActivity() { + + private val kTag = "GasDetailActivity" + private lateinit var aMap: AMap + + override fun initOnCreate(savedInstanceState: Bundle?) { + ActivityStackManager.addActivity(this) + + /** + * 地图初始化设置 + * */ + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + uiSettings.isRotateGesturesEnabled = false//不允许地图随手势改变方位 + } + + override fun initViewBinding(): ActivityGasDetailBinding { + return ActivityGasDetailBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.mainThemeColor) + + binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener { + override fun onLeftClick() { + finish() + } + + override fun onRightClick() { + + } + }) + } + + override fun initEvent() { + + } + + /**地图相关*********/ + override fun onResume() { + super.onResume() + binding.mapView.onResume() + } + + override fun onPause() { + super.onPause() + binding.mapView.onPause() + } + + override fun onDestroy() { + binding.mapView.onDestroy() + super.onDestroy() + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt b/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt new file mode 100644 index 0000000..67e831c --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt @@ -0,0 +1,19 @@ +package com.casic.br.operationsite.widgets + +import android.content.Context +import android.util.AttributeSet +import android.view.MotionEvent +import com.amap.api.maps.MapView + +/** + * 解决[com.amap.api.maps.MapView]和[androidx.core.widget.NestedScrollView]的滑动冲突 + */ +class CustomMapView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 +) : MapView(context, attrs, defStyleAttr) { + + override fun dispatchTouchEvent(ev: MotionEvent): Boolean { + parent.requestDisallowInterceptTouchEvent(true) + return super.dispatchTouchEvent(ev) + } +} diff --git a/app/src/main/res/layout/activity_apply_enter.xml b/app/src/main/res/layout/activity_apply_enter.xml index f380cd0..a99961b 100644 --- a/app/src/main/res/layout/activity_apply_enter.xml +++ b/app/src/main/res/layout/activity_apply_enter.xml @@ -12,6 +12,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/mainThemeColor" + app:tbv_smaller_title="true" app:tbv_text="人员信息" /> + diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 15f5263..46515b2 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -15,6 +15,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemDivider import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.isNetworkConnected import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -76,66 +77,7 @@ } else { binding.emptyView.visibility = View.GONE binding.recyclerView.visibility = View.VISIBLE - alarmAdapter = object : - NormalRecyclerAdapter( - R.layout.item_alarm_rv_l, dataRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: AlarmListModel.DataModel.RowsModel - ) { - val color = when (item.alarmStatusName) { - "正在报警" -> R.color.redTextColor.convertColor(context) - "手动消警" -> R.color.greenColor.convertColor(context) - else -> R.color.hintTextColor.convertColor(context) - } - - val road = if (item.workRoad.isNullOrBlank()) { - "未知" - } else { - item.workRoad - } - - viewHolder.setText(R.id.alarmStatusView, item.alarmStatusName) - .setBackgroundColor(R.id.alarmStatusView, color) - .setText(R.id.alarmContentView, item.alarmContent) - .setText(R.id.workRoadView, road) - .setText(R.id.alarmTimeView, item.alarmTime) - .setImageResource( - R.id.alarmImageView, item.alarmImage.combineImagePath() - ) - .setOnClickListener(R.id.alarmImageView) { - navigatePageTo( - 0, arrayListOf(item.alarmImage.combineImagePath()) - ) - } - - if (item.alarmType == "1" || - item.alarmType == "4" || - item.alarmType == "5" || - item.alarmType == "7" || - item.alarmType == "8" || - item.alarmType == "9" || - item.alarmType == "10" - ) { - val ppm = item.alarmValue.toString().toFloat() - val lel = "%.2f".format(ppm / 500) - viewHolder.setVisibility(R.id.alarmValueView, View.VISIBLE) - .setVisibility(R.id.alarmImageView, View.GONE) - .setText( - R.id.alarmValueView, "报警值:${lel}%LEL" - ) - } else { - viewHolder.setVisibility( - R.id.alarmValueView, View.INVISIBLE - ).setVisibility(R.id.alarmImageView, View.VISIBLE) - } - } - } - binding.recyclerView.adapter = alarmAdapter - binding.recyclerView.addItemDecoration( - RecyclerViewItemDivider(0f, 0f, Color.LTGRAY) - ) + initRecyclerView(dataRows) } } } @@ -144,6 +86,80 @@ getAlarmListByPage() } + private fun initRecyclerView(dataRows: MutableList) { + alarmAdapter = object : + NormalRecyclerAdapter( + R.layout.item_alarm_rv_l, dataRows + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: AlarmListModel.DataModel.RowsModel + ) { + val color = when (item.alarmStatusName) { + "正在报警" -> R.color.redTextColor.convertColor(context) + "手动消警" -> R.color.greenColor.convertColor(context) + else -> R.color.hintTextColor.convertColor(context) + } + + val road = if (item.workRoad.isNullOrBlank()) { + "未知" + } else { + item.workRoad + } + + viewHolder.setText(R.id.alarmStatusView, item.alarmStatusName) + .setBackgroundColor(R.id.alarmStatusView, color) + .setText(R.id.alarmContentView, item.alarmContent) + .setText(R.id.workRoadView, road) + .setText(R.id.alarmTimeView, item.alarmTime) + .setImageResource(R.id.alarmImageView, item.alarmImage.combineImagePath()) + .setOnClickListener(R.id.alarmImageView) { + navigatePageTo( + 0, arrayListOf(item.alarmImage.combineImagePath()) + ) + } + + if (item.alarmType == "1" || + item.alarmType == "4" || + item.alarmType == "5" || + item.alarmType == "7" || + item.alarmType == "8" || + item.alarmType == "9" || + item.alarmType == "10" + ) { + val ppm = item.alarmValue.toString().toFloat() + val lel = "%.2f".format(ppm / 500) + viewHolder.setVisibility(R.id.alarmValueView, View.VISIBLE) + .setVisibility(R.id.alarmImageView, View.GONE) + .setText(R.id.alarmValueView, "报警值:${lel}%LEL") + } else { + viewHolder.setVisibility(R.id.alarmValueView, View.INVISIBLE) + .setVisibility(R.id.alarmImageView, View.VISIBLE) + } + } + } + binding.recyclerView.adapter = alarmAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemDivider(0f, 130f.dp2px(this), Color.LTGRAY) + ) + alarmAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, item: AlarmListModel.DataModel.RowsModel) { + if (item.alarmType == "1" || + item.alarmType == "4" || + item.alarmType == "5" || + item.alarmType == "7" || + item.alarmType == "8" || + item.alarmType == "9" || + item.alarmType == "10" + ) { + navigatePageTo() + } else { + "暂时仅支持燃气设备查看浓度趋势".show(this@AlarmListActivity) + } + } + }) + } + override fun observeRequestState() { alarmViewModel.loadState.observe(this) { if (isRefresh || isLoadMore) { diff --git a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt new file mode 100644 index 0000000..cb8fc3b --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt @@ -0,0 +1,77 @@ +package com.casic.br.operationsite.view + +import android.os.Bundle +import com.amap.api.maps.AMap +import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityGasDetailBinding +import com.casic.br.operationsite.extensions.initImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.ActivityStackManager +import com.pengxh.kt.lite.widget.TitleBarView + +class GasDetailActivity : KotlinBaseActivity() { + + private val kTag = "GasDetailActivity" + private lateinit var aMap: AMap + + override fun initOnCreate(savedInstanceState: Bundle?) { + ActivityStackManager.addActivity(this) + + /** + * 地图初始化设置 + * */ + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + uiSettings.isRotateGesturesEnabled = false//不允许地图随手势改变方位 + } + + override fun initViewBinding(): ActivityGasDetailBinding { + return ActivityGasDetailBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.mainThemeColor) + + binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener { + override fun onLeftClick() { + finish() + } + + override fun onRightClick() { + + } + }) + } + + override fun initEvent() { + + } + + /**地图相关*********/ + override fun onResume() { + super.onResume() + binding.mapView.onResume() + } + + override fun onPause() { + super.onPause() + binding.mapView.onPause() + } + + override fun onDestroy() { + binding.mapView.onDestroy() + super.onDestroy() + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt b/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt new file mode 100644 index 0000000..67e831c --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt @@ -0,0 +1,19 @@ +package com.casic.br.operationsite.widgets + +import android.content.Context +import android.util.AttributeSet +import android.view.MotionEvent +import com.amap.api.maps.MapView + +/** + * 解决[com.amap.api.maps.MapView]和[androidx.core.widget.NestedScrollView]的滑动冲突 + */ +class CustomMapView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 +) : MapView(context, attrs, defStyleAttr) { + + override fun dispatchTouchEvent(ev: MotionEvent): Boolean { + parent.requestDisallowInterceptTouchEvent(true) + return super.dispatchTouchEvent(ev) + } +} diff --git a/app/src/main/res/layout/activity_apply_enter.xml b/app/src/main/res/layout/activity_apply_enter.xml index f380cd0..a99961b 100644 --- a/app/src/main/res/layout/activity_apply_enter.xml +++ b/app/src/main/res/layout/activity_apply_enter.xml @@ -12,6 +12,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/mainThemeColor" + app:tbv_smaller_title="true" app:tbv_text="人员信息" /> diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 95caacb..a88c540 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -63,6 +63,7 @@ + diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 15f5263..46515b2 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -15,6 +15,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemDivider import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.isNetworkConnected import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -76,66 +77,7 @@ } else { binding.emptyView.visibility = View.GONE binding.recyclerView.visibility = View.VISIBLE - alarmAdapter = object : - NormalRecyclerAdapter( - R.layout.item_alarm_rv_l, dataRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: AlarmListModel.DataModel.RowsModel - ) { - val color = when (item.alarmStatusName) { - "正在报警" -> R.color.redTextColor.convertColor(context) - "手动消警" -> R.color.greenColor.convertColor(context) - else -> R.color.hintTextColor.convertColor(context) - } - - val road = if (item.workRoad.isNullOrBlank()) { - "未知" - } else { - item.workRoad - } - - viewHolder.setText(R.id.alarmStatusView, item.alarmStatusName) - .setBackgroundColor(R.id.alarmStatusView, color) - .setText(R.id.alarmContentView, item.alarmContent) - .setText(R.id.workRoadView, road) - .setText(R.id.alarmTimeView, item.alarmTime) - .setImageResource( - R.id.alarmImageView, item.alarmImage.combineImagePath() - ) - .setOnClickListener(R.id.alarmImageView) { - navigatePageTo( - 0, arrayListOf(item.alarmImage.combineImagePath()) - ) - } - - if (item.alarmType == "1" || - item.alarmType == "4" || - item.alarmType == "5" || - item.alarmType == "7" || - item.alarmType == "8" || - item.alarmType == "9" || - item.alarmType == "10" - ) { - val ppm = item.alarmValue.toString().toFloat() - val lel = "%.2f".format(ppm / 500) - viewHolder.setVisibility(R.id.alarmValueView, View.VISIBLE) - .setVisibility(R.id.alarmImageView, View.GONE) - .setText( - R.id.alarmValueView, "报警值:${lel}%LEL" - ) - } else { - viewHolder.setVisibility( - R.id.alarmValueView, View.INVISIBLE - ).setVisibility(R.id.alarmImageView, View.VISIBLE) - } - } - } - binding.recyclerView.adapter = alarmAdapter - binding.recyclerView.addItemDecoration( - RecyclerViewItemDivider(0f, 0f, Color.LTGRAY) - ) + initRecyclerView(dataRows) } } } @@ -144,6 +86,80 @@ getAlarmListByPage() } + private fun initRecyclerView(dataRows: MutableList) { + alarmAdapter = object : + NormalRecyclerAdapter( + R.layout.item_alarm_rv_l, dataRows + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: AlarmListModel.DataModel.RowsModel + ) { + val color = when (item.alarmStatusName) { + "正在报警" -> R.color.redTextColor.convertColor(context) + "手动消警" -> R.color.greenColor.convertColor(context) + else -> R.color.hintTextColor.convertColor(context) + } + + val road = if (item.workRoad.isNullOrBlank()) { + "未知" + } else { + item.workRoad + } + + viewHolder.setText(R.id.alarmStatusView, item.alarmStatusName) + .setBackgroundColor(R.id.alarmStatusView, color) + .setText(R.id.alarmContentView, item.alarmContent) + .setText(R.id.workRoadView, road) + .setText(R.id.alarmTimeView, item.alarmTime) + .setImageResource(R.id.alarmImageView, item.alarmImage.combineImagePath()) + .setOnClickListener(R.id.alarmImageView) { + navigatePageTo( + 0, arrayListOf(item.alarmImage.combineImagePath()) + ) + } + + if (item.alarmType == "1" || + item.alarmType == "4" || + item.alarmType == "5" || + item.alarmType == "7" || + item.alarmType == "8" || + item.alarmType == "9" || + item.alarmType == "10" + ) { + val ppm = item.alarmValue.toString().toFloat() + val lel = "%.2f".format(ppm / 500) + viewHolder.setVisibility(R.id.alarmValueView, View.VISIBLE) + .setVisibility(R.id.alarmImageView, View.GONE) + .setText(R.id.alarmValueView, "报警值:${lel}%LEL") + } else { + viewHolder.setVisibility(R.id.alarmValueView, View.INVISIBLE) + .setVisibility(R.id.alarmImageView, View.VISIBLE) + } + } + } + binding.recyclerView.adapter = alarmAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemDivider(0f, 130f.dp2px(this), Color.LTGRAY) + ) + alarmAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, item: AlarmListModel.DataModel.RowsModel) { + if (item.alarmType == "1" || + item.alarmType == "4" || + item.alarmType == "5" || + item.alarmType == "7" || + item.alarmType == "8" || + item.alarmType == "9" || + item.alarmType == "10" + ) { + navigatePageTo() + } else { + "暂时仅支持燃气设备查看浓度趋势".show(this@AlarmListActivity) + } + } + }) + } + override fun observeRequestState() { alarmViewModel.loadState.observe(this) { if (isRefresh || isLoadMore) { diff --git a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt new file mode 100644 index 0000000..cb8fc3b --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt @@ -0,0 +1,77 @@ +package com.casic.br.operationsite.view + +import android.os.Bundle +import com.amap.api.maps.AMap +import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityGasDetailBinding +import com.casic.br.operationsite.extensions.initImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.ActivityStackManager +import com.pengxh.kt.lite.widget.TitleBarView + +class GasDetailActivity : KotlinBaseActivity() { + + private val kTag = "GasDetailActivity" + private lateinit var aMap: AMap + + override fun initOnCreate(savedInstanceState: Bundle?) { + ActivityStackManager.addActivity(this) + + /** + * 地图初始化设置 + * */ + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + uiSettings.isRotateGesturesEnabled = false//不允许地图随手势改变方位 + } + + override fun initViewBinding(): ActivityGasDetailBinding { + return ActivityGasDetailBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.mainThemeColor) + + binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener { + override fun onLeftClick() { + finish() + } + + override fun onRightClick() { + + } + }) + } + + override fun initEvent() { + + } + + /**地图相关*********/ + override fun onResume() { + super.onResume() + binding.mapView.onResume() + } + + override fun onPause() { + super.onPause() + binding.mapView.onPause() + } + + override fun onDestroy() { + binding.mapView.onDestroy() + super.onDestroy() + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt b/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt new file mode 100644 index 0000000..67e831c --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt @@ -0,0 +1,19 @@ +package com.casic.br.operationsite.widgets + +import android.content.Context +import android.util.AttributeSet +import android.view.MotionEvent +import com.amap.api.maps.MapView + +/** + * 解决[com.amap.api.maps.MapView]和[androidx.core.widget.NestedScrollView]的滑动冲突 + */ +class CustomMapView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 +) : MapView(context, attrs, defStyleAttr) { + + override fun dispatchTouchEvent(ev: MotionEvent): Boolean { + parent.requestDisallowInterceptTouchEvent(true) + return super.dispatchTouchEvent(ev) + } +} diff --git a/app/src/main/res/layout/activity_apply_enter.xml b/app/src/main/res/layout/activity_apply_enter.xml index f380cd0..a99961b 100644 --- a/app/src/main/res/layout/activity_apply_enter.xml +++ b/app/src/main/res/layout/activity_apply_enter.xml @@ -12,6 +12,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/mainThemeColor" + app:tbv_smaller_title="true" app:tbv_text="人员信息" /> diff --git a/app/src/main/res/layout/activity_face_detect.xml b/app/src/main/res/layout/activity_face_detect.xml index 1204387..4ad0564 100644 --- a/app/src/main/res/layout/activity_face_detect.xml +++ b/app/src/main/res/layout/activity_face_detect.xml @@ -11,6 +11,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/mainThemeColor" + app:tbv_smaller_title="true" app:tbv_text="入场申请人脸采集" /> + diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 15f5263..46515b2 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -15,6 +15,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemDivider import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.isNetworkConnected import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -76,66 +77,7 @@ } else { binding.emptyView.visibility = View.GONE binding.recyclerView.visibility = View.VISIBLE - alarmAdapter = object : - NormalRecyclerAdapter( - R.layout.item_alarm_rv_l, dataRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: AlarmListModel.DataModel.RowsModel - ) { - val color = when (item.alarmStatusName) { - "正在报警" -> R.color.redTextColor.convertColor(context) - "手动消警" -> R.color.greenColor.convertColor(context) - else -> R.color.hintTextColor.convertColor(context) - } - - val road = if (item.workRoad.isNullOrBlank()) { - "未知" - } else { - item.workRoad - } - - viewHolder.setText(R.id.alarmStatusView, item.alarmStatusName) - .setBackgroundColor(R.id.alarmStatusView, color) - .setText(R.id.alarmContentView, item.alarmContent) - .setText(R.id.workRoadView, road) - .setText(R.id.alarmTimeView, item.alarmTime) - .setImageResource( - R.id.alarmImageView, item.alarmImage.combineImagePath() - ) - .setOnClickListener(R.id.alarmImageView) { - navigatePageTo( - 0, arrayListOf(item.alarmImage.combineImagePath()) - ) - } - - if (item.alarmType == "1" || - item.alarmType == "4" || - item.alarmType == "5" || - item.alarmType == "7" || - item.alarmType == "8" || - item.alarmType == "9" || - item.alarmType == "10" - ) { - val ppm = item.alarmValue.toString().toFloat() - val lel = "%.2f".format(ppm / 500) - viewHolder.setVisibility(R.id.alarmValueView, View.VISIBLE) - .setVisibility(R.id.alarmImageView, View.GONE) - .setText( - R.id.alarmValueView, "报警值:${lel}%LEL" - ) - } else { - viewHolder.setVisibility( - R.id.alarmValueView, View.INVISIBLE - ).setVisibility(R.id.alarmImageView, View.VISIBLE) - } - } - } - binding.recyclerView.adapter = alarmAdapter - binding.recyclerView.addItemDecoration( - RecyclerViewItemDivider(0f, 0f, Color.LTGRAY) - ) + initRecyclerView(dataRows) } } } @@ -144,6 +86,80 @@ getAlarmListByPage() } + private fun initRecyclerView(dataRows: MutableList) { + alarmAdapter = object : + NormalRecyclerAdapter( + R.layout.item_alarm_rv_l, dataRows + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: AlarmListModel.DataModel.RowsModel + ) { + val color = when (item.alarmStatusName) { + "正在报警" -> R.color.redTextColor.convertColor(context) + "手动消警" -> R.color.greenColor.convertColor(context) + else -> R.color.hintTextColor.convertColor(context) + } + + val road = if (item.workRoad.isNullOrBlank()) { + "未知" + } else { + item.workRoad + } + + viewHolder.setText(R.id.alarmStatusView, item.alarmStatusName) + .setBackgroundColor(R.id.alarmStatusView, color) + .setText(R.id.alarmContentView, item.alarmContent) + .setText(R.id.workRoadView, road) + .setText(R.id.alarmTimeView, item.alarmTime) + .setImageResource(R.id.alarmImageView, item.alarmImage.combineImagePath()) + .setOnClickListener(R.id.alarmImageView) { + navigatePageTo( + 0, arrayListOf(item.alarmImage.combineImagePath()) + ) + } + + if (item.alarmType == "1" || + item.alarmType == "4" || + item.alarmType == "5" || + item.alarmType == "7" || + item.alarmType == "8" || + item.alarmType == "9" || + item.alarmType == "10" + ) { + val ppm = item.alarmValue.toString().toFloat() + val lel = "%.2f".format(ppm / 500) + viewHolder.setVisibility(R.id.alarmValueView, View.VISIBLE) + .setVisibility(R.id.alarmImageView, View.GONE) + .setText(R.id.alarmValueView, "报警值:${lel}%LEL") + } else { + viewHolder.setVisibility(R.id.alarmValueView, View.INVISIBLE) + .setVisibility(R.id.alarmImageView, View.VISIBLE) + } + } + } + binding.recyclerView.adapter = alarmAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemDivider(0f, 130f.dp2px(this), Color.LTGRAY) + ) + alarmAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, item: AlarmListModel.DataModel.RowsModel) { + if (item.alarmType == "1" || + item.alarmType == "4" || + item.alarmType == "5" || + item.alarmType == "7" || + item.alarmType == "8" || + item.alarmType == "9" || + item.alarmType == "10" + ) { + navigatePageTo() + } else { + "暂时仅支持燃气设备查看浓度趋势".show(this@AlarmListActivity) + } + } + }) + } + override fun observeRequestState() { alarmViewModel.loadState.observe(this) { if (isRefresh || isLoadMore) { diff --git a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt new file mode 100644 index 0000000..cb8fc3b --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt @@ -0,0 +1,77 @@ +package com.casic.br.operationsite.view + +import android.os.Bundle +import com.amap.api.maps.AMap +import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityGasDetailBinding +import com.casic.br.operationsite.extensions.initImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.ActivityStackManager +import com.pengxh.kt.lite.widget.TitleBarView + +class GasDetailActivity : KotlinBaseActivity() { + + private val kTag = "GasDetailActivity" + private lateinit var aMap: AMap + + override fun initOnCreate(savedInstanceState: Bundle?) { + ActivityStackManager.addActivity(this) + + /** + * 地图初始化设置 + * */ + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + uiSettings.isRotateGesturesEnabled = false//不允许地图随手势改变方位 + } + + override fun initViewBinding(): ActivityGasDetailBinding { + return ActivityGasDetailBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.mainThemeColor) + + binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener { + override fun onLeftClick() { + finish() + } + + override fun onRightClick() { + + } + }) + } + + override fun initEvent() { + + } + + /**地图相关*********/ + override fun onResume() { + super.onResume() + binding.mapView.onResume() + } + + override fun onPause() { + super.onPause() + binding.mapView.onPause() + } + + override fun onDestroy() { + binding.mapView.onDestroy() + super.onDestroy() + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt b/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt new file mode 100644 index 0000000..67e831c --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt @@ -0,0 +1,19 @@ +package com.casic.br.operationsite.widgets + +import android.content.Context +import android.util.AttributeSet +import android.view.MotionEvent +import com.amap.api.maps.MapView + +/** + * 解决[com.amap.api.maps.MapView]和[androidx.core.widget.NestedScrollView]的滑动冲突 + */ +class CustomMapView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 +) : MapView(context, attrs, defStyleAttr) { + + override fun dispatchTouchEvent(ev: MotionEvent): Boolean { + parent.requestDisallowInterceptTouchEvent(true) + return super.dispatchTouchEvent(ev) + } +} diff --git a/app/src/main/res/layout/activity_apply_enter.xml b/app/src/main/res/layout/activity_apply_enter.xml index f380cd0..a99961b 100644 --- a/app/src/main/res/layout/activity_apply_enter.xml +++ b/app/src/main/res/layout/activity_apply_enter.xml @@ -12,6 +12,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/mainThemeColor" + app:tbv_smaller_title="true" app:tbv_text="人员信息" /> diff --git a/app/src/main/res/layout/activity_face_detect.xml b/app/src/main/res/layout/activity_face_detect.xml index 1204387..4ad0564 100644 --- a/app/src/main/res/layout/activity_face_detect.xml +++ b/app/src/main/res/layout/activity_face_detect.xml @@ -11,6 +11,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/mainThemeColor" + app:tbv_smaller_title="true" app:tbv_text="入场申请人脸采集" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 95caacb..a88c540 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -63,6 +63,7 @@ + diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 15f5263..46515b2 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -15,6 +15,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemDivider import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.isNetworkConnected import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -76,66 +77,7 @@ } else { binding.emptyView.visibility = View.GONE binding.recyclerView.visibility = View.VISIBLE - alarmAdapter = object : - NormalRecyclerAdapter( - R.layout.item_alarm_rv_l, dataRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: AlarmListModel.DataModel.RowsModel - ) { - val color = when (item.alarmStatusName) { - "正在报警" -> R.color.redTextColor.convertColor(context) - "手动消警" -> R.color.greenColor.convertColor(context) - else -> R.color.hintTextColor.convertColor(context) - } - - val road = if (item.workRoad.isNullOrBlank()) { - "未知" - } else { - item.workRoad - } - - viewHolder.setText(R.id.alarmStatusView, item.alarmStatusName) - .setBackgroundColor(R.id.alarmStatusView, color) - .setText(R.id.alarmContentView, item.alarmContent) - .setText(R.id.workRoadView, road) - .setText(R.id.alarmTimeView, item.alarmTime) - .setImageResource( - R.id.alarmImageView, item.alarmImage.combineImagePath() - ) - .setOnClickListener(R.id.alarmImageView) { - navigatePageTo( - 0, arrayListOf(item.alarmImage.combineImagePath()) - ) - } - - if (item.alarmType == "1" || - item.alarmType == "4" || - item.alarmType == "5" || - item.alarmType == "7" || - item.alarmType == "8" || - item.alarmType == "9" || - item.alarmType == "10" - ) { - val ppm = item.alarmValue.toString().toFloat() - val lel = "%.2f".format(ppm / 500) - viewHolder.setVisibility(R.id.alarmValueView, View.VISIBLE) - .setVisibility(R.id.alarmImageView, View.GONE) - .setText( - R.id.alarmValueView, "报警值:${lel}%LEL" - ) - } else { - viewHolder.setVisibility( - R.id.alarmValueView, View.INVISIBLE - ).setVisibility(R.id.alarmImageView, View.VISIBLE) - } - } - } - binding.recyclerView.adapter = alarmAdapter - binding.recyclerView.addItemDecoration( - RecyclerViewItemDivider(0f, 0f, Color.LTGRAY) - ) + initRecyclerView(dataRows) } } } @@ -144,6 +86,80 @@ getAlarmListByPage() } + private fun initRecyclerView(dataRows: MutableList) { + alarmAdapter = object : + NormalRecyclerAdapter( + R.layout.item_alarm_rv_l, dataRows + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: AlarmListModel.DataModel.RowsModel + ) { + val color = when (item.alarmStatusName) { + "正在报警" -> R.color.redTextColor.convertColor(context) + "手动消警" -> R.color.greenColor.convertColor(context) + else -> R.color.hintTextColor.convertColor(context) + } + + val road = if (item.workRoad.isNullOrBlank()) { + "未知" + } else { + item.workRoad + } + + viewHolder.setText(R.id.alarmStatusView, item.alarmStatusName) + .setBackgroundColor(R.id.alarmStatusView, color) + .setText(R.id.alarmContentView, item.alarmContent) + .setText(R.id.workRoadView, road) + .setText(R.id.alarmTimeView, item.alarmTime) + .setImageResource(R.id.alarmImageView, item.alarmImage.combineImagePath()) + .setOnClickListener(R.id.alarmImageView) { + navigatePageTo( + 0, arrayListOf(item.alarmImage.combineImagePath()) + ) + } + + if (item.alarmType == "1" || + item.alarmType == "4" || + item.alarmType == "5" || + item.alarmType == "7" || + item.alarmType == "8" || + item.alarmType == "9" || + item.alarmType == "10" + ) { + val ppm = item.alarmValue.toString().toFloat() + val lel = "%.2f".format(ppm / 500) + viewHolder.setVisibility(R.id.alarmValueView, View.VISIBLE) + .setVisibility(R.id.alarmImageView, View.GONE) + .setText(R.id.alarmValueView, "报警值:${lel}%LEL") + } else { + viewHolder.setVisibility(R.id.alarmValueView, View.INVISIBLE) + .setVisibility(R.id.alarmImageView, View.VISIBLE) + } + } + } + binding.recyclerView.adapter = alarmAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemDivider(0f, 130f.dp2px(this), Color.LTGRAY) + ) + alarmAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, item: AlarmListModel.DataModel.RowsModel) { + if (item.alarmType == "1" || + item.alarmType == "4" || + item.alarmType == "5" || + item.alarmType == "7" || + item.alarmType == "8" || + item.alarmType == "9" || + item.alarmType == "10" + ) { + navigatePageTo() + } else { + "暂时仅支持燃气设备查看浓度趋势".show(this@AlarmListActivity) + } + } + }) + } + override fun observeRequestState() { alarmViewModel.loadState.observe(this) { if (isRefresh || isLoadMore) { diff --git a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt new file mode 100644 index 0000000..cb8fc3b --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt @@ -0,0 +1,77 @@ +package com.casic.br.operationsite.view + +import android.os.Bundle +import com.amap.api.maps.AMap +import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityGasDetailBinding +import com.casic.br.operationsite.extensions.initImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.ActivityStackManager +import com.pengxh.kt.lite.widget.TitleBarView + +class GasDetailActivity : KotlinBaseActivity() { + + private val kTag = "GasDetailActivity" + private lateinit var aMap: AMap + + override fun initOnCreate(savedInstanceState: Bundle?) { + ActivityStackManager.addActivity(this) + + /** + * 地图初始化设置 + * */ + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + uiSettings.isRotateGesturesEnabled = false//不允许地图随手势改变方位 + } + + override fun initViewBinding(): ActivityGasDetailBinding { + return ActivityGasDetailBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.mainThemeColor) + + binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener { + override fun onLeftClick() { + finish() + } + + override fun onRightClick() { + + } + }) + } + + override fun initEvent() { + + } + + /**地图相关*********/ + override fun onResume() { + super.onResume() + binding.mapView.onResume() + } + + override fun onPause() { + super.onPause() + binding.mapView.onPause() + } + + override fun onDestroy() { + binding.mapView.onDestroy() + super.onDestroy() + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt b/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt new file mode 100644 index 0000000..67e831c --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt @@ -0,0 +1,19 @@ +package com.casic.br.operationsite.widgets + +import android.content.Context +import android.util.AttributeSet +import android.view.MotionEvent +import com.amap.api.maps.MapView + +/** + * 解决[com.amap.api.maps.MapView]和[androidx.core.widget.NestedScrollView]的滑动冲突 + */ +class CustomMapView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 +) : MapView(context, attrs, defStyleAttr) { + + override fun dispatchTouchEvent(ev: MotionEvent): Boolean { + parent.requestDisallowInterceptTouchEvent(true) + return super.dispatchTouchEvent(ev) + } +} diff --git a/app/src/main/res/layout/activity_apply_enter.xml b/app/src/main/res/layout/activity_apply_enter.xml index f380cd0..a99961b 100644 --- a/app/src/main/res/layout/activity_apply_enter.xml +++ b/app/src/main/res/layout/activity_apply_enter.xml @@ -12,6 +12,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/mainThemeColor" + app:tbv_smaller_title="true" app:tbv_text="人员信息" /> diff --git a/app/src/main/res/layout/activity_face_detect.xml b/app/src/main/res/layout/activity_face_detect.xml index 1204387..4ad0564 100644 --- a/app/src/main/res/layout/activity_face_detect.xml +++ b/app/src/main/res/layout/activity_face_detect.xml @@ -11,6 +11,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/mainThemeColor" + app:tbv_smaller_title="true" app:tbv_text="入场申请人脸采集" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_helmet_video.xml b/app/src/main/res/layout/activity_helmet_video.xml index cb97e90..dd3f09c 100644 --- a/app/src/main/res/layout/activity_helmet_video.xml +++ b/app/src/main/res/layout/activity_helmet_video.xml @@ -11,6 +11,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/mainThemeColor" + app:tbv_smaller_title="true" app:tbv_text="视频通话" /> + diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 15f5263..46515b2 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -15,6 +15,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemDivider import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.isNetworkConnected import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -76,66 +77,7 @@ } else { binding.emptyView.visibility = View.GONE binding.recyclerView.visibility = View.VISIBLE - alarmAdapter = object : - NormalRecyclerAdapter( - R.layout.item_alarm_rv_l, dataRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: AlarmListModel.DataModel.RowsModel - ) { - val color = when (item.alarmStatusName) { - "正在报警" -> R.color.redTextColor.convertColor(context) - "手动消警" -> R.color.greenColor.convertColor(context) - else -> R.color.hintTextColor.convertColor(context) - } - - val road = if (item.workRoad.isNullOrBlank()) { - "未知" - } else { - item.workRoad - } - - viewHolder.setText(R.id.alarmStatusView, item.alarmStatusName) - .setBackgroundColor(R.id.alarmStatusView, color) - .setText(R.id.alarmContentView, item.alarmContent) - .setText(R.id.workRoadView, road) - .setText(R.id.alarmTimeView, item.alarmTime) - .setImageResource( - R.id.alarmImageView, item.alarmImage.combineImagePath() - ) - .setOnClickListener(R.id.alarmImageView) { - navigatePageTo( - 0, arrayListOf(item.alarmImage.combineImagePath()) - ) - } - - if (item.alarmType == "1" || - item.alarmType == "4" || - item.alarmType == "5" || - item.alarmType == "7" || - item.alarmType == "8" || - item.alarmType == "9" || - item.alarmType == "10" - ) { - val ppm = item.alarmValue.toString().toFloat() - val lel = "%.2f".format(ppm / 500) - viewHolder.setVisibility(R.id.alarmValueView, View.VISIBLE) - .setVisibility(R.id.alarmImageView, View.GONE) - .setText( - R.id.alarmValueView, "报警值:${lel}%LEL" - ) - } else { - viewHolder.setVisibility( - R.id.alarmValueView, View.INVISIBLE - ).setVisibility(R.id.alarmImageView, View.VISIBLE) - } - } - } - binding.recyclerView.adapter = alarmAdapter - binding.recyclerView.addItemDecoration( - RecyclerViewItemDivider(0f, 0f, Color.LTGRAY) - ) + initRecyclerView(dataRows) } } } @@ -144,6 +86,80 @@ getAlarmListByPage() } + private fun initRecyclerView(dataRows: MutableList) { + alarmAdapter = object : + NormalRecyclerAdapter( + R.layout.item_alarm_rv_l, dataRows + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: AlarmListModel.DataModel.RowsModel + ) { + val color = when (item.alarmStatusName) { + "正在报警" -> R.color.redTextColor.convertColor(context) + "手动消警" -> R.color.greenColor.convertColor(context) + else -> R.color.hintTextColor.convertColor(context) + } + + val road = if (item.workRoad.isNullOrBlank()) { + "未知" + } else { + item.workRoad + } + + viewHolder.setText(R.id.alarmStatusView, item.alarmStatusName) + .setBackgroundColor(R.id.alarmStatusView, color) + .setText(R.id.alarmContentView, item.alarmContent) + .setText(R.id.workRoadView, road) + .setText(R.id.alarmTimeView, item.alarmTime) + .setImageResource(R.id.alarmImageView, item.alarmImage.combineImagePath()) + .setOnClickListener(R.id.alarmImageView) { + navigatePageTo( + 0, arrayListOf(item.alarmImage.combineImagePath()) + ) + } + + if (item.alarmType == "1" || + item.alarmType == "4" || + item.alarmType == "5" || + item.alarmType == "7" || + item.alarmType == "8" || + item.alarmType == "9" || + item.alarmType == "10" + ) { + val ppm = item.alarmValue.toString().toFloat() + val lel = "%.2f".format(ppm / 500) + viewHolder.setVisibility(R.id.alarmValueView, View.VISIBLE) + .setVisibility(R.id.alarmImageView, View.GONE) + .setText(R.id.alarmValueView, "报警值:${lel}%LEL") + } else { + viewHolder.setVisibility(R.id.alarmValueView, View.INVISIBLE) + .setVisibility(R.id.alarmImageView, View.VISIBLE) + } + } + } + binding.recyclerView.adapter = alarmAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemDivider(0f, 130f.dp2px(this), Color.LTGRAY) + ) + alarmAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, item: AlarmListModel.DataModel.RowsModel) { + if (item.alarmType == "1" || + item.alarmType == "4" || + item.alarmType == "5" || + item.alarmType == "7" || + item.alarmType == "8" || + item.alarmType == "9" || + item.alarmType == "10" + ) { + navigatePageTo() + } else { + "暂时仅支持燃气设备查看浓度趋势".show(this@AlarmListActivity) + } + } + }) + } + override fun observeRequestState() { alarmViewModel.loadState.observe(this) { if (isRefresh || isLoadMore) { diff --git a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt new file mode 100644 index 0000000..cb8fc3b --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt @@ -0,0 +1,77 @@ +package com.casic.br.operationsite.view + +import android.os.Bundle +import com.amap.api.maps.AMap +import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityGasDetailBinding +import com.casic.br.operationsite.extensions.initImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.ActivityStackManager +import com.pengxh.kt.lite.widget.TitleBarView + +class GasDetailActivity : KotlinBaseActivity() { + + private val kTag = "GasDetailActivity" + private lateinit var aMap: AMap + + override fun initOnCreate(savedInstanceState: Bundle?) { + ActivityStackManager.addActivity(this) + + /** + * 地图初始化设置 + * */ + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + uiSettings.isRotateGesturesEnabled = false//不允许地图随手势改变方位 + } + + override fun initViewBinding(): ActivityGasDetailBinding { + return ActivityGasDetailBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.mainThemeColor) + + binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener { + override fun onLeftClick() { + finish() + } + + override fun onRightClick() { + + } + }) + } + + override fun initEvent() { + + } + + /**地图相关*********/ + override fun onResume() { + super.onResume() + binding.mapView.onResume() + } + + override fun onPause() { + super.onPause() + binding.mapView.onPause() + } + + override fun onDestroy() { + binding.mapView.onDestroy() + super.onDestroy() + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt b/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt new file mode 100644 index 0000000..67e831c --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt @@ -0,0 +1,19 @@ +package com.casic.br.operationsite.widgets + +import android.content.Context +import android.util.AttributeSet +import android.view.MotionEvent +import com.amap.api.maps.MapView + +/** + * 解决[com.amap.api.maps.MapView]和[androidx.core.widget.NestedScrollView]的滑动冲突 + */ +class CustomMapView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 +) : MapView(context, attrs, defStyleAttr) { + + override fun dispatchTouchEvent(ev: MotionEvent): Boolean { + parent.requestDisallowInterceptTouchEvent(true) + return super.dispatchTouchEvent(ev) + } +} diff --git a/app/src/main/res/layout/activity_apply_enter.xml b/app/src/main/res/layout/activity_apply_enter.xml index f380cd0..a99961b 100644 --- a/app/src/main/res/layout/activity_apply_enter.xml +++ b/app/src/main/res/layout/activity_apply_enter.xml @@ -12,6 +12,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/mainThemeColor" + app:tbv_smaller_title="true" app:tbv_text="人员信息" /> diff --git a/app/src/main/res/layout/activity_face_detect.xml b/app/src/main/res/layout/activity_face_detect.xml index 1204387..4ad0564 100644 --- a/app/src/main/res/layout/activity_face_detect.xml +++ b/app/src/main/res/layout/activity_face_detect.xml @@ -11,6 +11,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/mainThemeColor" + app:tbv_smaller_title="true" app:tbv_text="入场申请人脸采集" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_helmet_video.xml b/app/src/main/res/layout/activity_helmet_video.xml index cb97e90..dd3f09c 100644 --- a/app/src/main/res/layout/activity_helmet_video.xml +++ b/app/src/main/res/layout/activity_helmet_video.xml @@ -11,6 +11,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/mainThemeColor" + app:tbv_smaller_title="true" app:tbv_text="视频通话" /> + diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 15f5263..46515b2 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -15,6 +15,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemDivider import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.isNetworkConnected import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -76,66 +77,7 @@ } else { binding.emptyView.visibility = View.GONE binding.recyclerView.visibility = View.VISIBLE - alarmAdapter = object : - NormalRecyclerAdapter( - R.layout.item_alarm_rv_l, dataRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: AlarmListModel.DataModel.RowsModel - ) { - val color = when (item.alarmStatusName) { - "正在报警" -> R.color.redTextColor.convertColor(context) - "手动消警" -> R.color.greenColor.convertColor(context) - else -> R.color.hintTextColor.convertColor(context) - } - - val road = if (item.workRoad.isNullOrBlank()) { - "未知" - } else { - item.workRoad - } - - viewHolder.setText(R.id.alarmStatusView, item.alarmStatusName) - .setBackgroundColor(R.id.alarmStatusView, color) - .setText(R.id.alarmContentView, item.alarmContent) - .setText(R.id.workRoadView, road) - .setText(R.id.alarmTimeView, item.alarmTime) - .setImageResource( - R.id.alarmImageView, item.alarmImage.combineImagePath() - ) - .setOnClickListener(R.id.alarmImageView) { - navigatePageTo( - 0, arrayListOf(item.alarmImage.combineImagePath()) - ) - } - - if (item.alarmType == "1" || - item.alarmType == "4" || - item.alarmType == "5" || - item.alarmType == "7" || - item.alarmType == "8" || - item.alarmType == "9" || - item.alarmType == "10" - ) { - val ppm = item.alarmValue.toString().toFloat() - val lel = "%.2f".format(ppm / 500) - viewHolder.setVisibility(R.id.alarmValueView, View.VISIBLE) - .setVisibility(R.id.alarmImageView, View.GONE) - .setText( - R.id.alarmValueView, "报警值:${lel}%LEL" - ) - } else { - viewHolder.setVisibility( - R.id.alarmValueView, View.INVISIBLE - ).setVisibility(R.id.alarmImageView, View.VISIBLE) - } - } - } - binding.recyclerView.adapter = alarmAdapter - binding.recyclerView.addItemDecoration( - RecyclerViewItemDivider(0f, 0f, Color.LTGRAY) - ) + initRecyclerView(dataRows) } } } @@ -144,6 +86,80 @@ getAlarmListByPage() } + private fun initRecyclerView(dataRows: MutableList) { + alarmAdapter = object : + NormalRecyclerAdapter( + R.layout.item_alarm_rv_l, dataRows + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: AlarmListModel.DataModel.RowsModel + ) { + val color = when (item.alarmStatusName) { + "正在报警" -> R.color.redTextColor.convertColor(context) + "手动消警" -> R.color.greenColor.convertColor(context) + else -> R.color.hintTextColor.convertColor(context) + } + + val road = if (item.workRoad.isNullOrBlank()) { + "未知" + } else { + item.workRoad + } + + viewHolder.setText(R.id.alarmStatusView, item.alarmStatusName) + .setBackgroundColor(R.id.alarmStatusView, color) + .setText(R.id.alarmContentView, item.alarmContent) + .setText(R.id.workRoadView, road) + .setText(R.id.alarmTimeView, item.alarmTime) + .setImageResource(R.id.alarmImageView, item.alarmImage.combineImagePath()) + .setOnClickListener(R.id.alarmImageView) { + navigatePageTo( + 0, arrayListOf(item.alarmImage.combineImagePath()) + ) + } + + if (item.alarmType == "1" || + item.alarmType == "4" || + item.alarmType == "5" || + item.alarmType == "7" || + item.alarmType == "8" || + item.alarmType == "9" || + item.alarmType == "10" + ) { + val ppm = item.alarmValue.toString().toFloat() + val lel = "%.2f".format(ppm / 500) + viewHolder.setVisibility(R.id.alarmValueView, View.VISIBLE) + .setVisibility(R.id.alarmImageView, View.GONE) + .setText(R.id.alarmValueView, "报警值:${lel}%LEL") + } else { + viewHolder.setVisibility(R.id.alarmValueView, View.INVISIBLE) + .setVisibility(R.id.alarmImageView, View.VISIBLE) + } + } + } + binding.recyclerView.adapter = alarmAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemDivider(0f, 130f.dp2px(this), Color.LTGRAY) + ) + alarmAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, item: AlarmListModel.DataModel.RowsModel) { + if (item.alarmType == "1" || + item.alarmType == "4" || + item.alarmType == "5" || + item.alarmType == "7" || + item.alarmType == "8" || + item.alarmType == "9" || + item.alarmType == "10" + ) { + navigatePageTo() + } else { + "暂时仅支持燃气设备查看浓度趋势".show(this@AlarmListActivity) + } + } + }) + } + override fun observeRequestState() { alarmViewModel.loadState.observe(this) { if (isRefresh || isLoadMore) { diff --git a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt new file mode 100644 index 0000000..cb8fc3b --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt @@ -0,0 +1,77 @@ +package com.casic.br.operationsite.view + +import android.os.Bundle +import com.amap.api.maps.AMap +import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityGasDetailBinding +import com.casic.br.operationsite.extensions.initImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.ActivityStackManager +import com.pengxh.kt.lite.widget.TitleBarView + +class GasDetailActivity : KotlinBaseActivity() { + + private val kTag = "GasDetailActivity" + private lateinit var aMap: AMap + + override fun initOnCreate(savedInstanceState: Bundle?) { + ActivityStackManager.addActivity(this) + + /** + * 地图初始化设置 + * */ + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + uiSettings.isRotateGesturesEnabled = false//不允许地图随手势改变方位 + } + + override fun initViewBinding(): ActivityGasDetailBinding { + return ActivityGasDetailBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.mainThemeColor) + + binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener { + override fun onLeftClick() { + finish() + } + + override fun onRightClick() { + + } + }) + } + + override fun initEvent() { + + } + + /**地图相关*********/ + override fun onResume() { + super.onResume() + binding.mapView.onResume() + } + + override fun onPause() { + super.onPause() + binding.mapView.onPause() + } + + override fun onDestroy() { + binding.mapView.onDestroy() + super.onDestroy() + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt b/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt new file mode 100644 index 0000000..67e831c --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/widgets/CustomMapView.kt @@ -0,0 +1,19 @@ +package com.casic.br.operationsite.widgets + +import android.content.Context +import android.util.AttributeSet +import android.view.MotionEvent +import com.amap.api.maps.MapView + +/** + * 解决[com.amap.api.maps.MapView]和[androidx.core.widget.NestedScrollView]的滑动冲突 + */ +class CustomMapView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 +) : MapView(context, attrs, defStyleAttr) { + + override fun dispatchTouchEvent(ev: MotionEvent): Boolean { + parent.requestDisallowInterceptTouchEvent(true) + return super.dispatchTouchEvent(ev) + } +} diff --git a/app/src/main/res/layout/activity_apply_enter.xml b/app/src/main/res/layout/activity_apply_enter.xml index f380cd0..a99961b 100644 --- a/app/src/main/res/layout/activity_apply_enter.xml +++ b/app/src/main/res/layout/activity_apply_enter.xml @@ -12,6 +12,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/mainThemeColor" + app:tbv_smaller_title="true" app:tbv_text="人员信息" /> diff --git a/app/src/main/res/layout/activity_face_detect.xml b/app/src/main/res/layout/activity_face_detect.xml index 1204387..4ad0564 100644 --- a/app/src/main/res/layout/activity_face_detect.xml +++ b/app/src/main/res/layout/activity_face_detect.xml @@ -11,6 +11,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/mainThemeColor" + app:tbv_smaller_title="true" app:tbv_text="入场申请人脸采集" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_helmet_video.xml b/app/src/main/res/layout/activity_helmet_video.xml index cb97e90..dd3f09c 100644 --- a/app/src/main/res/layout/activity_helmet_video.xml +++ b/app/src/main/res/layout/activity_helmet_video.xml @@ -11,6 +11,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/mainThemeColor" + app:tbv_smaller_title="true" app:tbv_text="视频通话" />