From d68e7bd768822a97048fb780a69a679c30d01b8b Mon Sep 17 00:00:00 2001 From: squallzhjch Date: Fri, 2 Jun 2023 14:12:25 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=B0=83=E6=95=B4UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/navinfo/omqs/bean/SignBean.kt | 10 +++-- .../omqs/ui/activity/map/MainActivity.kt | 23 ++++++++--- .../omqs/ui/activity/map/MainViewModel.kt | 38 ++++++------------ .../omqs/ui/fragment/empty/EmptyFragment.kt | 2 + .../evaluationresult/PhenomenonFragment.kt | 4 -- .../evaluationresult/ProblemLinkFragment.kt | 12 +++--- .../res/drawable-xxhdpi/icon_sign_info.png | Bin 0 -> 3202 bytes app/src/main/res/layout/activity_main.xml | 11 +++-- app/src/main/res/layout/adapter_sign.xml | 33 ++++++++++----- 9 files changed, 76 insertions(+), 57 deletions(-) create mode 100644 app/src/main/res/drawable-xxhdpi/icon_sign_info.png diff --git a/app/src/main/java/com/navinfo/omqs/bean/SignBean.kt b/app/src/main/java/com/navinfo/omqs/bean/SignBean.kt index c921dde6..b5faa214 100644 --- a/app/src/main/java/com/navinfo/omqs/bean/SignBean.kt +++ b/app/src/main/java/com/navinfo/omqs/bean/SignBean.kt @@ -9,7 +9,7 @@ data class SignBean( var iconId: Int = 0, //定位点到目标距离 val distance: Int = 0, - //图表中的问题 + //左上图标中的文字 val iconText: String = "", //绑定的要素id val elementId: String = "", @@ -20,7 +20,11 @@ data class SignBean( //名称 val name: String, //底部右侧文字 - val bottomRightText: String, + val bottomRightText: String = "", //要素code类型 - val elementCode: Int + val elementCode: Int, + //需要展示更多的内容 + val moreText: String = "", + //左上角信息 + val topRightText: String = "" ) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt index 43c20509..e84dbd09 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt @@ -16,6 +16,8 @@ import androidx.annotation.RequiresApi import androidx.core.view.WindowCompat import androidx.databinding.DataBindingUtil import androidx.lifecycle.lifecycleScope +import androidx.navigation.NavController +import androidx.navigation.NavDestination import androidx.navigation.findNavController import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -49,7 +51,9 @@ class MainActivity : BaseActivity() { var switchFragment = false - + /** + * 检测是否含有tts插件 + */ private val someActivityResultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> if (result.resultCode == Activity.RESULT_OK) { @@ -136,7 +140,6 @@ class MainActivity : BaseActivity() { binding.mainActivityVoice.setOnTouchListener(object : View.OnTouchListener { @RequiresApi(Build.VERSION_CODES.Q) override fun onTouch(v: View?, event: MotionEvent?): Boolean { - Log.e("qj", event?.action.toString()) when (event?.action) { MotionEvent.ACTION_DOWN -> { voiceOnTouchStart()//Do Something @@ -147,14 +150,13 @@ class MainActivity : BaseActivity() { Log.e("qj", "voiceOnTouchStop") } } - return v?.onTouchEvent(event) ?: true } }) viewModel.liveDataQsRecordIdList.observe(this) { //处理页面跳转 - viewModel.navigation(this, it) + viewModel.navigationRightFragment(this, it) } viewModel.liveDataMenuState.observe(this) { @@ -164,7 +166,6 @@ class MainActivity : BaseActivity() { } else { binding.mainActivityMenuGroup.visibility = View.INVISIBLE } - } //道路属性面板 @@ -214,6 +215,16 @@ class MainActivity : BaseActivity() { viewModel.refreshOMDBLayer(it) } } + + findNavController(R.id.main_activity_right_fragment).addOnDestinationChangedListener { controller, destination, arguments -> + if (destination.id == R.id.RightEmptyFragment) { + binding.mainActivityRightVisibilityButtonsGroup.visibility = View.VISIBLE + } else { + binding.mainActivityRightVisibilityButtonsGroup.visibility = View.GONE + viewModel.setSelectRoad(false) + binding.mainActivitySelectLine.isSelected = false + } + } } //根据输入的经纬度跳转坐标 @@ -235,7 +246,7 @@ class MainActivity : BaseActivity() { val x = parts[0].toDouble() val y = parts[0].toDouble() mapController.animationHandler.animationByLatLon(y, x) - }else{ + } else { Toast.makeText(this, "输入格式不正确", Toast.LENGTH_SHORT).show() } } catch (e: Exception) { diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt index cc45b163..d43725a6 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt @@ -3,7 +3,6 @@ package com.navinfo.omqs.ui.activity.map import android.app.Activity import android.content.Context import android.content.DialogInterface -import android.graphics.Color import android.graphics.drawable.AnimationDrawable import android.graphics.drawable.BitmapDrawable import android.os.Build @@ -16,6 +15,7 @@ import android.view.ViewGroup import android.widget.ImageView import android.widget.PopupWindow import androidx.annotation.RequiresApi +import androidx.constraintlayout.widget.Group import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope @@ -275,15 +275,17 @@ class MainViewModel @Inject constructor( } } } + liveDataTopSignList.postValue(topSignList.distinctBy { it.elementCode }) + liveDataSignList.postValue(signList.distinctBy { it.elementCode }) + val speechText = SignUtil.getRoadSpeechText(topSignList) + withContext(Dispatchers.Main) { + speakMode?.speakText(speechText) + } + Log.e("jingo", "自动捕捉数据 共${signList.size}条") + }else{ + mapController.lineHandler.removeLine() + } - } - liveDataTopSignList.postValue(topSignList.distinctBy { it.elementCode }) - liveDataSignList.postValue(signList.distinctBy { it.elementCode }) - val speechText = SignUtil.getRoadSpeechText(topSignList) - withContext(Dispatchers.Main) { - speakMode?.speakText(speechText) - } - Log.e("jingo", "自动捕捉数据 共${signList.size}条") } } @@ -445,27 +447,11 @@ class MainViewModel @Inject constructor( /** * 处理页面调转 */ - fun navigation(activity: MainActivity, list: List) { + fun navigationRightFragment(activity: MainActivity, list: List) { //获取右侧fragment容器 val naviController = activity.findNavController(R.id.main_activity_right_fragment) naviController.currentDestination?.let { navDestination -> -// when (val fragment = -// activity.supportFragmentManager.findFragmentById(navDestination.id)) { -// //判断右侧的fragment是不是质检数据 -//// is EvaluationResultFragment -> { -//// val viewModelFragment = -//// ViewModelProvider(fragment)[EvaluationResultViewModel::class.java] -//// viewModelFragment.notifyData(list) -//// } -// is EmptyFragment -> { -// if (list.size == 1) { -// val bundle = Bundle() -// bundle.putString("QsId", list[0]) -// naviController.navigate(R.id.EvaluationResultFragment, bundle) -// } -// } -// } when (navDestination.id) { R.id.RightEmptyFragment -> { if (list.size == 1) { diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/empty/EmptyFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/empty/EmptyFragment.kt index 68bb7136..f449b3fc 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/empty/EmptyFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/empty/EmptyFragment.kt @@ -32,6 +32,7 @@ class EmptyFragment : Fragment() { override fun onStart() { super.onStart() val currentDestination = findNavController().currentDestination + //有右侧面板的时候 if (currentDestination?.label == "右侧空页面") { currentDestinationLabel = "右侧空页面" (activity as MainActivity).setRightSwitchButton(View.GONE) @@ -40,6 +41,7 @@ class EmptyFragment : Fragment() { override fun onStop() { super.onStop() + //没有有右侧面板的时候 if (currentDestinationLabel == "右侧空页面") { (activity as MainActivity).setRightSwitchButton(View.VISIBLE) } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PhenomenonFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PhenomenonFragment.kt index e0b6f624..0fea2c21 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PhenomenonFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PhenomenonFragment.kt @@ -139,10 +139,6 @@ class PhenomenonFragment : override fun onDestroyView() { super.onDestroyView() _binding = null - Log.e("jingo", "PhenomenonFragment onDestroyView ${hashCode()}") } - override fun onResume() { - super.onResume() - } } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/ProblemLinkFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/ProblemLinkFragment.kt index 0341d84d..9af567f5 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/ProblemLinkFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/ProblemLinkFragment.kt @@ -6,8 +6,10 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.navigation.findNavController import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import com.navinfo.omqs.R import com.navinfo.omqs.databinding.FragmentProblemLinkBinding import com.navinfo.omqs.ui.fragment.BaseFragment import com.navinfo.omqs.ui.other.shareViewModels @@ -28,7 +30,6 @@ class ProblemLinkFragment : BaseFragment() { savedInstanceState: Bundle? ): View { _binding = FragmentProblemLinkBinding.inflate(inflater, container, false) - Log.e("jingo", "linkFragment onCreateView ${hashCode()}") return binding.root } @@ -43,6 +44,9 @@ class ProblemLinkFragment : BaseFragment() { binding.linkRightRecyclerview.layoutManager = rightLayoutManager val rightAdapter = RightGroupHeaderAdapter { _, bean -> viewModel.setProblemLinkMiddleBean(bean) + if (activity != null) { + requireActivity().findNavController(R.id.main_activity_middle_fragment).navigateUp() + } } binding.linkRightRecyclerview.adapter = rightAdapter //右侧菜单增加组标题 @@ -55,6 +59,7 @@ class ProblemLinkFragment : BaseFragment() { } //右侧菜单查询数据监听 viewModel.liveDataRightTypeList.observe(viewLifecycleOwner) { + rightAdapter.setSelectTitle(viewModel.liveDataQsRecordBean.value!!.cause) rightAdapter.refreshData(it) } @@ -82,10 +87,5 @@ class ProblemLinkFragment : BaseFragment() { override fun onDestroyView() { super.onDestroyView() _binding = null - Log.e("jingo", "linkFragment onDestroyView ${hashCode()}") - } - - override fun onResume() { - super.onResume() } } \ No newline at end of file diff --git a/app/src/main/res/drawable-xxhdpi/icon_sign_info.png b/app/src/main/res/drawable-xxhdpi/icon_sign_info.png new file mode 100644 index 0000000000000000000000000000000000000000..06bfde93a6c5677c10365fa787b8307c90c5449e GIT binary patch literal 3202 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 @@ -175,10 +175,10 @@ android:drawableLeft="@drawable/icon_main_geometry" android:elevation="2dp" android:gravity="center" + android:onClick="@{()->mainActivity.jumpPosition()}" android:paddingLeft="9dp" android:text="经纬度:116.99388424,38.8403844" android:textSize="10sp" - android:onClick="@{()->mainActivity.jumpPosition()}" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintRight_toLeftOf="@id/main_activity_middle_fragment" /> @@ -233,7 +233,6 @@ app:layout_constraintBottom_toTopOf="@id/main_activity_add_new" app:layout_constraintRight_toRightOf="@id/main_activity_add_new" /> - + + + + + android:layout_height="40dp" + android:layout_marginLeft="19dp" + android:layout_marginTop="4dp" /> + android:gravity="center" + android:text="其他信息" + android:textColor="@color/white" + android:textSize="14sp" /> + + \ No newline at end of file From e4f28405dcbe7162c9b4ae69319852967268c033 Mon Sep 17 00:00:00 2001 From: squallzhjch Date: Fri, 2 Jun 2023 14:18:49 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../omqs/ui/activity/map/MainViewModel.kt | 49 ++++++++++--------- vtm | 2 +- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt index 1b3af98e..0e2194cc 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt @@ -223,7 +223,7 @@ class MainViewModel @Inject constructor( val linkId = link.properties[RenderEntity.Companion.LinkTable.linkPid] - if(linkIdCache!=linkId){ + if (linkIdCache != linkId) { Log.e("jingo", "捕捉到的linkid $linkId ${link.geometry}") mapController.lineHandler.showLine(link.geometry) @@ -257,32 +257,32 @@ class MainViewModel @Inject constructor( } - val realm = Realm.getDefaultInstance() - val entity = realm.where(RenderEntity::class.java) - .equalTo("table", "OMDB_RESTRICTION") - .and() - .equalTo( - "properties['linkIn']", - it - ).findFirst() - if (entity != null) { - val outLink = entity.properties["linkOut"] - val linkOutEntity = realm.where(RenderEntity::class.java) - .equalTo("table", "OMDB_RD_LINK") + val realm = Realm.getDefaultInstance() + val entity = realm.where(RenderEntity::class.java) + .equalTo("table", "OMDB_RESTRICTION") .and() .equalTo( - "properties['${RenderEntity.Companion.LinkTable.linkPid}']", - outLink + "properties['linkIn']", + it ).findFirst() - if (linkOutEntity != null) { - mapController.lineHandler.linksLayer.addLine( - linkOutEntity.geometry, - 0x7DFF0000 - ) - Log.e("jingo", "捕捉到的linkid $outLink ${linkOutEntity.geometry}") + if (entity != null) { + val outLink = entity.properties["linkOut"] + val linkOutEntity = realm.where(RenderEntity::class.java) + .equalTo("table", "OMDB_RD_LINK") + .and() + .equalTo( + "properties['${RenderEntity.Companion.LinkTable.linkPid}']", + outLink + ).findFirst() + if (linkOutEntity != null) { + mapController.lineHandler.linksLayer.addLine( + linkOutEntity.geometry, + 0x7DFF0000 + ) + Log.e("jingo", "捕捉到的linkid $outLink ${linkOutEntity.geometry}") + } } } - } liveDataTopSignList.postValue(topSignList.distinctBy { it.elementCode }) liveDataSignList.postValue(signList.distinctBy { it.elementCode }) @@ -292,9 +292,10 @@ class MainViewModel @Inject constructor( } linkIdCache = linkId ?: "" Log.e("jingo", "自动捕捉数据 共${signList.size}条") - }else{ + } else { mapController.lineHandler.removeLine() } + } } } @@ -479,7 +480,7 @@ class MainViewModel @Inject constructor( fun setSelectRoad(select: Boolean) { bSelectRoad = select //去掉缓存 - linkIdCache = "" + linkIdCache = "" if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { mapController.lineHandler.removeLine() liveDataSignList.value = mutableListOf() diff --git a/vtm b/vtm index dd13e533..1ee201a4 160000 --- a/vtm +++ b/vtm @@ -1 +1 @@ -Subproject commit dd13e533c38b5738ab404c2737d7ccadeff01323 +Subproject commit 1ee201a41f78f169873848209a3f3bdac36f185a