[fea]
[全览地图展示标签]
This commit is contained in:
yangyakun
2024-07-17 19:55:48 +08:00
parent ccfe06f0bf
commit 95485b9a64
25 changed files with 545 additions and 113 deletions

View File

@@ -69,6 +69,7 @@ dependencies {
implementation rootProject.ext.dependencies.litezxing
api rootProject.ext.dependencies.flexbox
api project(":OCH:common:data")
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {

View File

@@ -0,0 +1,83 @@
package com.mogo.och.common.module.wigets.map.overmapview
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.widget.AppCompatImageView
import androidx.appcompat.widget.AppCompatTextView
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.RecyclerView
import com.mogo.eagle.core.function.business.travelreality.EventDrawBean
import androidx.recyclerview.widget.DiffUtil.Callback
import com.mogo.och.common.module.R
/**
* Created by yangyakun on 06/06/17.
*/
class IconListItemAdapter(
private val context: Context,
private val dataList: MutableList<EventDrawBean>
) : RecyclerView.Adapter<IconListItemAdapter.TextVH>() {
fun setDataList(dataList: List<EventDrawBean>) {
if (this.dataList == dataList) {
// 如果新旧列表一致,则直接返回
return
}
val diffResult = DiffUtil.calculateDiff(MyDiffCallback(this.dataList, dataList))
this.dataList.clear()
this.dataList.addAll(dataList)
diffResult.dispatchUpdatesTo(this)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TextVH {
val view: View
val inflater = LayoutInflater.from(context)
view = inflater.inflate(R.layout.taxt_d_icon_item, parent, false)
return TextVH(view)
}
override fun onBindViewHolder(holder: TextVH, position: Int) {
val errorInfo = dataList[holder.bindingAdapterPosition]
holder.acivQuanxilukValue.text = errorInfo.title
holder.acivQuanxiluk.setImageResource(errorInfo.resId)
}
override fun getItemCount(): Int {
return dataList.size
}
inner class TextVH(itemView: View) : RecyclerView.ViewHolder(itemView) {
var acivQuanxiluk: AppCompatImageView
var acivQuanxilukValue: AppCompatTextView
init {
acivQuanxiluk = itemView.findViewById(R.id.aciv_quanxiluk)
acivQuanxilukValue = itemView.findViewById(R.id.aciv_quanxiluk_value)
}
}
inner class MyDiffCallback(val oldData:List<EventDrawBean>,val newData:List<EventDrawBean>):Callback(){
override fun getOldListSize(): Int {
return oldData.size
}
override fun getNewListSize(): Int {
return newData.size
}
override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
val oldItem = oldData[oldItemPosition]
val newItem = newData[newItemPosition]
return oldItem.resId == newItem.resId
}
override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
val oldItem = oldData[oldItemPosition]
val newItem = newData[newItemPosition]
return oldItem.resId == newItem.resId
}
}
}

View File

@@ -5,8 +5,19 @@ import android.os.Bundle
import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.RelativeLayout
import com.google.android.flexbox.AlignItems
import com.google.android.flexbox.FlexDirection
import com.google.android.flexbox.FlexWrap
import com.google.android.flexbox.FlexboxLayoutManager
import com.google.android.flexbox.JustifyContent
import com.mogo.eagle.core.function.business.travelreality.EventDrawBean
import com.mogo.eagle.core.function.view.TravelRealityView
import com.mogo.och.common.module.R
import kotlinx.android.synthetic.main.common_overmap_view.view.ovbv_bottom_icons
import kotlinx.android.synthetic.main.common_overmap_view.view.ovbv_bottom_icons_cl
import kotlinx.android.synthetic.main.common_overmap_view.view.travelRealityView
import kotlinx.android.synthetic.main.common_overmap_view.view.tv_add_false
import kotlinx.android.synthetic.main.common_overmap_view.view.tv_add_true
class OverMapView @JvmOverloads constructor(
context: Context,
@@ -14,9 +25,69 @@ class OverMapView @JvmOverloads constructor(
defStyleAttr: Int = 0
) : RelativeLayout(context, attrs, defStyleAttr){
private var iconListItemAdapter:IconListItemAdapter?=null
private val eventDrawBeansTrue = mutableListOf<EventDrawBean>()
private val eventDrawBeansFalse = mutableListOf<EventDrawBean>()
private val listener = object : TravelRealityView.OnDrawListener{
override fun onDraw(eventList: List<EventDrawBean>, isEvent: Boolean) {
if(isEvent){
eventDrawBeansTrue.clear()
eventDrawBeansTrue.addAll(eventList)
}else{
eventDrawBeansFalse.clear()
eventDrawBeansFalse.addAll(eventList)
}
iconListItemAdapter?.let {
it.setDataList(eventDrawBeansTrue+eventDrawBeansFalse)
if(it.itemCount==0){
ovbv_bottom_icons_cl.visibility = GONE
}else{
ovbv_bottom_icons_cl.visibility = VISIBLE
}
}
}
}
private fun initView() {
LayoutInflater.from(context).inflate(R.layout.common_overmap_view, this, true)
val flexboxLayoutManager = FlexboxLayoutManager(context)
flexboxLayoutManager.flexDirection = FlexDirection.ROW;
flexboxLayoutManager.alignItems = AlignItems.CENTER
flexboxLayoutManager.flexWrap = FlexWrap.WRAP
flexboxLayoutManager.justifyContent = JustifyContent.CENTER
ovbv_bottom_icons?.layoutManager = flexboxLayoutManager
//ovbv_bottom_icons?.setHasFixedSize(true)
iconListItemAdapter = IconListItemAdapter(
context, mutableListOf(
)
)
ovbv_bottom_icons?.adapter = iconListItemAdapter
ovbv_bottom_icons_cl.visibility = GONE
travelRealityView.setOnDrawListener(listener)
tv_add_true.setOnClickListener {
listener.onDraw(mutableListOf(
EventDrawBean(R.drawable.mogo_jingzhi_nor,"全息路口"),
EventDrawBean(R.drawable.mogo_shigong_image,"静止事件"),
),true)
}
tv_add_false.setOnClickListener {
listener.onDraw(mutableListOf(
EventDrawBean(R.drawable.mogo_quanxi_lukou,"全息路口"),
),false)
}
}
fun onCreateView(savedInstanceState: Bundle?) {

View File

@@ -25,119 +25,44 @@
app:unArrivedDrawable="@drawable/taxt_u_p_overmap_arriving" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/ovbv_bottom_icons_cl"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_150"
android:background="@color/common_232A3F"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_quanxiluk"
android:layout_width="@dimen/dp_47"
android:layout_height="@dimen/dp_47"
android:src="@drawable/mogo_quanxi_lukou"
android:layout_centerHorizontal="true">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/ovbv_bottom_icons"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/aciv_quanxiluk_value"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/aciv_quanxiluk_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_19"
android:layout_marginEnd="@dimen/dp_40"
android:text="全息路口"
android:textSize="@dimen/dp_21"
android:textColor="@color/white"
app:layout_constraintTop_toTopOf="@+id/aciv_quanxiluk"
app:layout_constraintBottom_toBottomOf="@+id/aciv_quanxiluk"
app:layout_constraintEnd_toStartOf="@+id/aciv_jingzhi"
app:layout_constraintStart_toEndOf="@+id/aciv_quanxiluk"
/>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_jingzhi"
android:layout_width="@dimen/dp_47"
android:layout_height="@dimen/dp_47"
android:layout_marginStart="@dimen/dp_40"
android:src="@drawable/mogo_jingzhi_nor"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/aciv_quanxiluk_value"
app:layout_constraintEnd_toStartOf="@+id/aciv_jingzhi_value"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/aciv_jingzhi_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_19"
android:textSize="@dimen/dp_21"
android:text="全息路口"
android:textColor="@color/white"
android:layout_marginEnd="@dimen/dp_40"
app:layout_constraintTop_toTopOf="@+id/aciv_quanxiluk"
app:layout_constraintBottom_toBottomOf="@+id/aciv_quanxiluk"
app:layout_constraintStart_toEndOf="@+id/aciv_jingzhi"
app:layout_constraintEnd_toStartOf="@+id/aciv_shigong"
/>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_shigong"
android:layout_width="@dimen/dp_47"
android:layout_height="@dimen/dp_47"
android:src="@drawable/mogo_shigong_image"
android:layout_marginStart="@dimen/dp_40"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@+id/aciv_jingzhi_value"
app:layout_constraintEnd_toStartOf="@+id/aciv_shigong_value"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/aciv_shigong_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_19"
android:textSize="@dimen/dp_21"
android:text="全息路口"
android:textColor="@color/white"
android:layout_marginEnd="@dimen/dp_40"
app:layout_constraintTop_toTopOf="@+id/aciv_shigong"
app:layout_constraintBottom_toBottomOf="@+id/aciv_shigong"
app:layout_constraintStart_toEndOf="@+id/aciv_shigong"
app:layout_constraintEnd_toStartOf="@+id/aciv_shigu"
/>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_shigu"
android:layout_width="@dimen/dp_47"
android:layout_height="@dimen/dp_47"
android:src="@drawable/mogo_shigu_nor"
android:layout_marginStart="@dimen/dp_40"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/aciv_shigong_value"
app:layout_constraintEnd_toStartOf="@+id/aciv_shigu_value"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/aciv_shigu_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_19"
android:textSize="@dimen/dp_21"
android:text="全息路口"
android:textColor="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/aciv_shigu"
app:layout_constraintBottom_toBottomOf="@+id/aciv_shigu"
app:layout_constraintStart_toEndOf="@+id/aciv_shigu"
/>
android:background="@color/common_232A3F"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true">
</androidx.recyclerview.widget.RecyclerView>
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/tv_add_true"
android:layout_marginTop="@dimen/dp_198"
android:text="添加true"
android:visibility="gone"
android:background="@color/light_prompt_red"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/tv_add_false"
android:text="添加false"
android:visibility="gone"
android:layout_marginTop="@dimen/dp_198"
android:layout_alignParentEnd="true"
android:background="@color/light_prompt_red"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</merge>

View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<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">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_quanxiluk"
android:layout_width="@dimen/dp_48"
android:layout_height="@dimen/dp_48"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginStart="@dimen/dp_35"
android:src="@drawable/mogo_quanxi_lukou"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/aciv_quanxiluk_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginStart="@dimen/dp_17"
android:layout_marginEnd="@dimen/dp_35"
app:layout_constraintStart_toEndOf="@+id/aciv_quanxiluk"
android:textSize="@dimen/dp_24"
android:text="全息路口"
android:textColor="@color/white"
/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -293,6 +293,14 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
if (TaxiOrderStatusEnum.UserArriveAtStart.getCode() == order.orderStatus) {
TaxiModel.getInstance().queryAutopilotStatus(true);
TaxiModel.getInstance().setStation();
UiThreadHandler.post(new Runnable() {
@Override
public void run() {
if(mView!=null) {
mView.setGuidShow();
}
}
}, UiThreadHandler.MODE.QUEUE);
}
if (TaxiOrderStatusEnum.OnTheWayToEnd.getCode() == order.orderStatus) {

View File

@@ -16,6 +16,7 @@ import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.AppCompatImageView;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.constraintlayout.widget.Group;
import androidx.fragment.app.FragmentTransaction;
@@ -80,6 +81,7 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
protected TaxiRottingNaviFragment taxiRottingNaviFragment = null;
protected SmallMapView smallMapView;
protected AppCompatImageView acivShowGuid;
private OverMapDialog overMapDialog;
@@ -192,12 +194,14 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
});
smallMapView = findViewById(R.id.smallMapView);
acivShowGuid = findViewById(R.id.aciv_show_guid);
smallMapView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(overMapDialog==null){
overMapDialog = new OverMapDialog(getContext());
}
acivShowGuid.setVisibility(View.GONE);
overMapDialog.showDialog();
}
});
@@ -559,4 +563,8 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
public abstract void startNaviToEndStation(boolean isShow);
public void setGuidShow() {
acivShowGuid.setVisibility(View.VISIBLE);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -410,6 +410,16 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_show_guid"
app:layout_constraintStart_toStartOf="@+id/smallMapView"
app:layout_constraintEnd_toEndOf="@+id/smallMapView"
app:layout_constraintBottom_toTopOf="@+id/smallMapView"
android:src="@drawable/taxi_overmap_tag"
android:layout_marginBottom="-32dp"
android:layout_width="@dimen/dp_209"
android:layout_height="@dimen/dp_91"/>
<com.mogo.eagle.core.function.smp.view.SmallMapView
android:id="@+id/smallMapView"
android:layout_width="wrap_content"

View File

@@ -267,6 +267,7 @@ class TaxiPassengerBaseFragment() :
override fun showOrHideCheckAndStartAutopilotView(status:Int){
UiThreadHandler.post {
arrivedView.visibility = View.GONE
bottom.setBagVisable(BottomBar.SelectView.OVERMAPVIEW)
when (status) {
0 -> {
if(chekAndStartAutopilotView.visibility == View.GONE){

View File

@@ -46,6 +46,20 @@ class BottomBar @JvmOverloads constructor(
this.overMapViewApply = overMapViewApply
}
fun setBagVisable(selectItem:SelectView){
when (selectItem) {
SelectView.PRECISIONMAP -> {
actv_precisionmap.setBagVisable(VISIBLE)
}
SelectView.OVERMAPVIEW -> {
actv_overmap.setBagVisable(VISIBLE)
}
SelectView.VIDEO -> {
actv_video.setBagVisable(VISIBLE)
}
}
}
fun setCheckIndex(index: SelectView){
if(checkIndex==index){
return

View File

@@ -7,6 +7,7 @@ import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
import com.mogo.och.taxi.passenger.common.R
import kotlinx.android.synthetic.main.taxt_p_bottom_check.view.aciv_bag
import kotlinx.android.synthetic.main.taxt_p_bottom_check.view.aciv_center_image
import kotlinx.android.synthetic.main.taxt_p_bottom_check.view.actv_title
@@ -26,6 +27,7 @@ open class BottomCheckView @JvmOverloads constructor(
private var normalDrawable: Int = -1
private var bottomTitleNormalColor:Int = -1
private var bottomTitleCheckedColor:Int = -1
private var bottomShowIcon:Boolean = false
private var backageView: View? = null
private var isCheck = false
@@ -42,6 +44,7 @@ open class BottomCheckView @JvmOverloads constructor(
ContextCompat.getColor(context,R.color.white))
bottomTitleCheckedColor = typedArray.getColor(R.styleable.BottomSelectView_bottomTitleCheckedColor,
ContextCompat.getColor(context,R.color.white))
bottomShowIcon = typedArray.getBoolean(R.styleable.BottomSelectView_bottomShowIcon, false)
typedArray.recycle()
initView(context)
} catch (e: Exception) {
@@ -55,6 +58,13 @@ open class BottomCheckView @JvmOverloads constructor(
aciv_center_image.setImageResource(normalDrawable)
}
actv_title.text = bottomTitle
if(bottomShowIcon){
aciv_bag.visibility = View.VISIBLE
}
}
fun setBagVisable(visibility:Int){
aciv_bag.visibility = visibility
}
fun setCheckItem(isCheck: Boolean) {
@@ -69,6 +79,7 @@ open class BottomCheckView @JvmOverloads constructor(
backageView?.visibility = View.VISIBLE
aciv_center_image.setImageResource(selectedDrawable)
actv_title.setTextColor(bottomTitleCheckedColor)
setBagVisable(GONE)
} else {
backageView?.visibility = View.GONE
aciv_center_image.setImageResource(normalDrawable)

View File

@@ -0,0 +1,83 @@
package com.mogo.och.taxi.passenger.ui.overmapview
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.widget.AppCompatImageView
import androidx.appcompat.widget.AppCompatTextView
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.RecyclerView
import com.mogo.eagle.core.function.business.travelreality.EventDrawBean
import com.mogo.och.taxi.passenger.common.R
import androidx.recyclerview.widget.DiffUtil.Callback
/**
* Created by yangyakun on 06/06/17.
*/
class IconListItemAdapter(
private val context: Context,
private val dataList: MutableList<EventDrawBean>
) : RecyclerView.Adapter<IconListItemAdapter.TextVH>() {
fun setDataList(dataList: List<EventDrawBean>) {
if (this.dataList == dataList) {
// 如果新旧列表一致,则直接返回
return
}
val diffResult = DiffUtil.calculateDiff(MyDiffCallback(this.dataList, dataList))
this.dataList.clear()
this.dataList.addAll(dataList)
diffResult.dispatchUpdatesTo(this)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TextVH {
val view: View
val inflater = LayoutInflater.from(context)
view = inflater.inflate(R.layout.taxt_p_icon_item, parent, false)
return TextVH(view)
}
override fun onBindViewHolder(holder: TextVH, position: Int) {
val errorInfo = dataList[holder.bindingAdapterPosition]
holder.acivQuanxilukValue.text = errorInfo.title
holder.acivQuanxiluk.setImageResource(errorInfo.resId)
}
override fun getItemCount(): Int {
return dataList.size
}
inner class TextVH(itemView: View) : RecyclerView.ViewHolder(itemView) {
var acivQuanxiluk: AppCompatImageView
var acivQuanxilukValue: AppCompatTextView
init {
acivQuanxiluk = itemView.findViewById(R.id.aciv_quanxiluk)
acivQuanxilukValue = itemView.findViewById(R.id.aciv_quanxiluk_value)
}
}
inner class MyDiffCallback(val oldData:List<EventDrawBean>,val newData:List<EventDrawBean>):Callback(){
override fun getOldListSize(): Int {
return oldData.size
}
override fun getNewListSize(): Int {
return newData.size
}
override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
val oldItem = oldData[oldItemPosition]
val newItem = newData[newItemPosition]
return oldItem.resId == newItem.resId
}
override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
val oldItem = oldData[oldItemPosition]
val newItem = newData[newItemPosition]
return oldItem.resId == newItem.resId
}
}
}

View File

@@ -7,9 +7,18 @@ import android.os.Bundle
import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.RelativeLayout
import com.google.android.flexbox.AlignItems
import com.google.android.flexbox.FlexDirection
import com.google.android.flexbox.FlexWrap
import com.google.android.flexbox.FlexboxLayoutManager
import com.google.android.flexbox.JustifyContent
import com.mogo.eagle.core.function.business.travelreality.EventDrawBean
import com.mogo.eagle.core.function.view.TravelRealityView
import com.mogo.och.taxi.passenger.common.R
import kotlinx.android.synthetic.main.taxi_p_overmap.view.ovbv_bottom_icons
import kotlinx.android.synthetic.main.taxi_p_overmap.view.travelRealityView
import kotlinx.android.synthetic.main.taxi_p_overmap.view.tv_add_false
import kotlinx.android.synthetic.main.taxi_p_overmap.view.tv_add_true
class OverMapView @JvmOverloads constructor(
context: Context,
@@ -17,6 +26,31 @@ class OverMapView @JvmOverloads constructor(
defStyleAttr: Int = 0
) : RelativeLayout(context, attrs, defStyleAttr){
private var iconListItemAdapter:IconListItemAdapter?=null
private val eventDrawBeansTrue = mutableListOf<EventDrawBean>()
private val eventDrawBeansFalse = mutableListOf<EventDrawBean>()
private val listener = object :TravelRealityView.OnDrawListener{
override fun onDraw(eventList: List<EventDrawBean>, isEvent: Boolean) {
if(isEvent){
eventDrawBeansTrue.clear()
eventDrawBeansTrue.addAll(eventList)
}else{
eventDrawBeansFalse.clear()
eventDrawBeansFalse.addAll(eventList)
}
iconListItemAdapter?.let {
it.setDataList(eventDrawBeansTrue+eventDrawBeansFalse)
if(it.itemCount==0){
ovbv_bottom_icons.visibility = GONE
}else{
ovbv_bottom_icons.visibility = VISIBLE
}
}
}
}
private fun initView() {
LayoutInflater.from(context).inflate(R.layout.taxi_p_overmap, this, true)
@@ -31,6 +65,39 @@ class OverMapView @JvmOverloads constructor(
Color.parseColor("#33D7E5FF"),
))
ovbv_bottom_icons.background = temp01
val flexboxLayoutManager = FlexboxLayoutManager(context)
flexboxLayoutManager.flexDirection = FlexDirection.ROW;
flexboxLayoutManager.alignItems = AlignItems.CENTER
flexboxLayoutManager.flexWrap = FlexWrap.WRAP
flexboxLayoutManager.justifyContent = JustifyContent.CENTER
ovbv_bottom_icons?.layoutManager = flexboxLayoutManager
//ovbv_bottom_icons?.setHasFixedSize(true)
iconListItemAdapter = IconListItemAdapter(
context, mutableListOf(
)
)
ovbv_bottom_icons?.adapter = iconListItemAdapter
ovbv_bottom_icons.visibility = GONE
travelRealityView.setOnDrawListener(listener)
tv_add_true.setOnClickListener {
listener.onDraw(mutableListOf(
EventDrawBean(R.drawable.mogo_jingzhi_nor,"全息路口"),
EventDrawBean(R.drawable.mogo_shigong_image,"静止事件"),
),true)
}
tv_add_false.setOnClickListener {
listener.onDraw(mutableListOf(
EventDrawBean(R.drawable.mogo_quanxi_lukou,"全息路口"),
),false)
}
}
fun onCreateView(savedInstanceState: Bundle?) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -11,7 +11,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
app:arrivedDrawable="@drawable/taxt_u_p_overmap_arrived"
app:bottomPadding="160"
app:bottomPadding="360"
app:carDrawable="@drawable/taxt_u_p_map_car"
app:compassDrawable="@drawable/taxt_u_p_map_car_light"
app:endPointDrawable="@drawable/taxt_u_p_map_view_dir_end"
@@ -19,17 +19,40 @@
app:mapStyleExtraPath="style_extra.data"
app:mapStylePath="style.data"
app:resetDrawable="@null"
app:rightPadding="160"
app:rightPadding="580"
app:startPointDrawable="@drawable/taxt_u_p_map_view_dir_start"
app:topPadding="160"
app:unArrivedDrawable="@drawable/taxt_u_p_overmap_arriving" />
<com.mogo.och.common.module.wigets.map.overmapview.OverMapBottomView
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/ovbv_bottom_icons"
android:layout_width="@dimen/dp_1860"
android:layout_height="@dimen/dp_136"
android:paddingStart="@dimen/dp_60"
android:paddingEnd="@dimen/dp_60"
android:paddingTop="@dimen/dp_4"
android:paddingBottom="@dimen/dp_4"
android:layout_width="@dimen/dp_690"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="@dimen/dp_198"/>
<TextView
android:id="@+id/tv_add_true"
android:layout_marginTop="@dimen/dp_198"
android:text="添加true"
android:visibility="gone"
android:background="@color/light_prompt_red"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/tv_add_false"
android:text="添加false"
android:visibility="gone"
android:layout_marginTop="@dimen/dp_198"
android:layout_alignParentEnd="true"
android:background="@color/light_prompt_red"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</merge>

View File

@@ -61,6 +61,7 @@
app:layout_constraintEnd_toStartOf="@+id/actv_overmap"
app:layout_constraintStart_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:bottomShowIcon = "false"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_width="wrap_content"
android:layout_height="match_parent"/>
@@ -85,6 +86,7 @@
app:normalDrawable="@drawable/taxt_p_bottom_overmap_normal"
app:bottomTitle="全局概览"
app:bottomTitleCheckedColor="@color/white"
app:bottomShowIcon = "true"
android:layout_marginEnd="@dimen/dp_107"
android:layout_marginStart="@dimen/dp_107"
app:bottomTitleNormalColor="@color/taxi_cp_41444D"
@@ -121,6 +123,7 @@
app:layout_constraintEnd_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:bottomShowIcon = "false"
android:layout_width="wrap_content"
android:layout_height="match_parent"/>

View File

@@ -26,4 +26,13 @@
android:text="靠边停车"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_bag"
android:src="@drawable/taxi_p_bottom_overmap"
android:visibility="gone"
app:layout_constraintTop_toTopOf="@+id/aciv_center_image"
app:layout_constraintStart_toEndOf="@+id/aciv_center_image"
android:layout_width="@dimen/dp_58"
android:layout_height="@dimen/dp_34"/>
</merge>

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<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">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_quanxiluk"
android:layout_marginTop="@dimen/dp_13"
android:layout_marginBottom="@dimen/dp_13"
android:layout_width="@dimen/dp_53"
android:layout_height="@dimen/dp_53"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginStart="@dimen/dp_40"
android:src="@drawable/mogo_quanxi_lukou"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/aciv_quanxiluk_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginStart="@dimen/dp_19"
android:layout_marginEnd="@dimen/dp_40"
app:layout_constraintStart_toEndOf="@+id/aciv_quanxiluk"
android:textSize="@dimen/dp_24"
android:text="全息路口"
android:textColor="#0D0D0D"
/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -13,6 +13,8 @@
<attr name="bottomTitleNormalColor" format="color"/>
<attr name="bottomTitleCheckedColor" format="color"/>
<attr name="bottomShowIcon" format="boolean"/>
</declare-styleable>
</resources>

View File

@@ -23,18 +23,21 @@ import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView
import com.mogo.eagle.core.function.hmi.ui.widget.ParallelDriveView
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.map.listener.IMogoMapListener
import com.mogo.map.uicontroller.VisualAngleMode
import com.mogo.och.common.module.wigets.StartAutopilotAnimationView
import com.mogo.och.common.module.wigets.map.overmapview.OverMapDialog
import com.mogo.och.unmanned.taxi.R
import com.mogo.och.unmanned.taxi.constant.TaxiUnmannedConst
import com.mogo.och.unmanned.taxi.constant.TaxiUnmannedConst.Companion.START_AUTOPILOT_ANIMATION_INTERVAL
import com.mogo.och.unmanned.taxi.ui.debug.DebugView
import com.mogo.och.unmanned.taxi.ui.navi.amap.TaxiAmapNaviFragment
import com.mogo.och.unmanned.taxi.ui.navi.auto.TaxiRoutingNaviFragment
import kotlinx.android.synthetic.main.unmanned_taxi_base_fragment.aciv_show_guid
import kotlinx.android.synthetic.main.unmanned_taxi_base_fragment.groupTestPanel
import kotlinx.android.synthetic.main.unmanned_taxi_base_fragment.mapBizView
import kotlinx.android.synthetic.main.unmanned_taxi_base_fragment.module_mogo_och_autopilot_status
@@ -71,6 +74,8 @@ abstract class BaseTaxiTabFragment<V : IView, P : Presenter<V>> : MvpFragment<V,
// 开发调试时展示信息的panel
private var debugPanelView: View? = null
private var overMapDialog: OverMapDialog? = null
override fun getLayoutId(): Int {
return R.layout.unmanned_taxi_base_fragment
}
@@ -190,6 +195,15 @@ abstract class BaseTaxiTabFragment<V : IView, P : Presenter<V>> : MvpFragment<V,
}
})
smallMapView.onClick {
context?.let {
if(overMapDialog==null){
overMapDialog = OverMapDialog(it);
}
aciv_show_guid.visibility = View.GONE
overMapDialog?.showDialog()
}
}
}
abstract fun stopAutoStartAutopilot()
@@ -519,4 +533,8 @@ abstract class BaseTaxiTabFragment<V : IView, P : Presenter<V>> : MvpFragment<V,
fun resumeAutopilotBlinkAnimation(){
startAutopilotAnimationView.resume()
}
fun setGuidShow() {
aciv_show_guid.visibility = View.VISIBLE
}
}

View File

@@ -1,8 +1,7 @@
package com.mogo.och.unmanned.taxi.ui.base;
import android.os.Looper;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.lifecycle.LifecycleOwner;
import com.mogo.commons.AbsMogoApplication;
@@ -16,7 +15,11 @@ import com.mogo.och.common.module.biz.login.ILoginCallback;
import com.mogo.och.common.module.biz.login.LoginStatusEnum;
import com.mogo.och.common.module.biz.login.LoginStatusManager;
import com.mogo.och.common.module.biz.login.OpenOrderStatusEnum;
import com.mogo.och.common.module.biz.order.OrderListener;
import com.mogo.och.common.module.biz.order.OrderModel;
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum;
import com.mogo.och.common.module.manager.autopilot.OCHAdasAbilityManager;
import com.mogo.och.data.taxi.BaseOrderBean;
import com.mogo.och.unmanned.taxi.callback.ITaxiADASStatusCallback;
import com.mogo.och.unmanned.taxi.callback.ITaxiControllerStatusCallback;
import com.mogo.och.unmanned.taxi.callback.ITaxiOrderStatusCallback;
@@ -35,7 +38,7 @@ import com.mogo.och.unmanned.taxi.callback.ITaxiOrderStatusCallback;
* 描述
*/
public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASStatusCallback,
ITaxiOrderStatusCallback, ITaxiControllerStatusCallback, ILoginCallback {
ITaxiOrderStatusCallback, ITaxiControllerStatusCallback, ILoginCallback, OrderListener {
private static final String TAG = TaxiPresenter.class.getSimpleName();
@@ -61,6 +64,7 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
TaxiRoutingModel.INSTANCE.setControllerStatusCallback(this);
TaxiRoutingModel.INSTANCE.setOrderStatusCallback(this);
LoginStatusManager.INSTANCE.addListener(TAG,this);
OrderModel.INSTANCE.setOrderStatusCallback(TAG,this);
}
private void releaseListeners() {
@@ -329,4 +333,20 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
public void resumeStartAutopilot(long remainingTime) {
TaxiTaskModel.INSTANCE.resumeStartAutopilot(remainingTime);
}
@Override
public void onCurrentOrderStatusChanged(@Nullable BaseOrderBean order) {
if(order!=null){
if (order.orderStatus== TaxiOrderStatusEnum.ArriveAtStart.getCode()) {
UiThreadHandler.post(new Runnable() {
@Override
public void run() {
if(mView!=null) {
mView.setGuidShow();
}
}
}, UiThreadHandler.MODE.QUEUE);
}
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -413,6 +413,16 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_show_guid"
app:layout_constraintStart_toStartOf="@+id/smallMapView"
app:layout_constraintEnd_toEndOf="@+id/smallMapView"
app:layout_constraintBottom_toTopOf="@+id/smallMapView"
android:src="@drawable/taxi_overmap_tag"
android:layout_marginBottom="-32dp"
android:layout_width="@dimen/dp_209"
android:layout_height="@dimen/dp_91"/>
<com.mogo.eagle.core.function.smp.view.SmallMapView
android:id="@+id/smallMapView"
android:layout_width="wrap_content"

View File

@@ -283,6 +283,7 @@ class TaxiPassengerBaseFragment() :
override fun showOrHideCheckAndStartAutopilotView(status:Int){
UiThreadHandler.post {
arrivedView.visibility = View.GONE
bottom.setBagVisable(BottomBar.SelectView.OVERMAPVIEW)
when (status) {
0 -> {
if (chekAndStartAutopilotView.visibility == View.GONE) {