diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c1bdcd10..449d6cf9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -49,6 +49,7 @@ android:exported="true" android:label="@string/app_name" android:launchMode="singleTask" + android:screenOrientation="landscape" android:theme="@style/Theme.OMQualityInspection"> @@ -60,17 +61,8 @@ android:name=".ui.activity.map.MainActivity" android:exported="false" android:launchMode="singleTask" + android:screenOrientation="landscape" android:theme="@style/Theme.OMQualityInspection" /> - - - - - diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginActivity.kt index d7ed2643..5def15d7 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginActivity.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginActivity.kt @@ -13,8 +13,6 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.navinfo.omqs.R import com.navinfo.omqs.databinding.ActivityLoginBinding import com.navinfo.omqs.ui.activity.CheckPermissionsActivity -import com.navinfo.omqs.ui.activity.PermissionsActivity -import com.navinfo.omqs.ui.activity.console.ConsoleActivity import com.navinfo.omqs.ui.activity.map.MainActivity import dagger.hilt.android.AndroidEntryPoint @@ -90,7 +88,7 @@ class LoginActivity : CheckPermissionsActivity() { LoginStatus.LOGIN_STATUS_SUCCESS -> { loginDialog?.dismiss() loginDialog = null - val intent = Intent(this@LoginActivity, ConsoleActivity::class.java) + val intent = Intent(this@LoginActivity, MainActivity::class.java) startActivity(intent) finish() } 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 010f9b91..286bf347 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 @@ -12,12 +12,9 @@ import android.widget.EditText import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.viewModels -import androidx.annotation.RequiresApi -import androidx.core.view.WindowCompat import androidx.databinding.DataBindingUtil +import androidx.fragment.app.Fragment 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 @@ -30,6 +27,10 @@ import com.navinfo.omqs.databinding.ActivityMainBinding import com.navinfo.omqs.http.offlinemapdownload.OfflineMapDownloadManager import com.navinfo.omqs.tools.LayerConfigUtils import com.navinfo.omqs.ui.activity.BaseActivity +import com.navinfo.omqs.ui.fragment.console.ConsoleFragment +import com.navinfo.omqs.ui.fragment.offlinemap.OfflineMapFragment +import com.navinfo.omqs.ui.fragment.qsrecordlist.QsRecordListFragment +import com.navinfo.omqs.ui.fragment.tasklist.TaskManagerFragment import com.navinfo.omqs.ui.widget.RecyclerViewSpacesItemDecoration import com.navinfo.omqs.util.FlowEventBus import com.navinfo.omqs.util.SpeakMode @@ -49,6 +50,14 @@ class MainActivity : BaseActivity() { private lateinit var binding: ActivityMainBinding private val viewModel by viewModels() + /** + * 左侧fragment + */ + private var leftFragment: Fragment? = null + + /** + * 是否开启右侧面板 + */ var switchFragment = false /** @@ -79,7 +88,7 @@ class MainActivity : BaseActivity() { * 提前显示要素看板 */ private val signAdapter by lazy { - SignAdapter { position, autoSave,signBean -> + SignAdapter { _, autoSave, signBean -> rightController.currentDestination?.let { if (it.id == R.id.RightEmptyFragment) { val bundle = Bundle() @@ -95,7 +104,7 @@ class MainActivity : BaseActivity() { * 道路信息看板 */ private val topSignAdapter by lazy { - TopSignAdapter { position, signBean -> + TopSignAdapter { _, signBean -> rightController.currentDestination?.let { if (it.id == R.id.RightEmptyFragment) { val bundle = Bundle() @@ -108,7 +117,6 @@ class MainActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { - WindowCompat.setDecorFitsSystemWindows(window, false) super.onCreate(savedInstanceState) val checkIntent = Intent() @@ -138,22 +146,19 @@ class MainActivity : BaseActivity() { //给xml传递viewModel对象 binding.viewModel = viewModel - binding.mainActivityVoice.setOnTouchListener(object : View.OnTouchListener { - @RequiresApi(Build.VERSION_CODES.Q) - override fun onTouch(v: View?, event: MotionEvent?): Boolean { - when (event?.action) { - MotionEvent.ACTION_DOWN -> { - voiceOnTouchStart()//Do Something - Log.e("qj", "voiceOnTouchStart") - } - MotionEvent.ACTION_UP -> { - voiceOnTouchStop()//Do Something - Log.e("qj", "voiceOnTouchStop") - } + binding.mainActivityVoice.setOnTouchListener { v, event -> + when (event?.action) { + MotionEvent.ACTION_DOWN -> { + voiceOnTouchStart()//Do Something + Log.e("qj", "voiceOnTouchStart") + } + MotionEvent.ACTION_UP -> { + voiceOnTouchStop()//Do Something + Log.e("qj", "voiceOnTouchStop") } - return v?.onTouchEvent(event) ?: true } - }) + v?.onTouchEvent(event) ?: true + } viewModel.liveDataQsRecordIdList.observe(this) { //处理页面跳转 @@ -224,7 +229,7 @@ class MainActivity : BaseActivity() { } } - findNavController(R.id.main_activity_right_fragment).addOnDestinationChangedListener { controller, destination, arguments -> + findNavController(R.id.main_activity_right_fragment).addOnDestinationChangedListener { _, destination, arguments -> if (destination.id == R.id.RightEmptyFragment) { binding.mainActivityRightVisibilityButtonsGroup.visibility = View.VISIBLE } else { @@ -233,6 +238,9 @@ class MainActivity : BaseActivity() { binding.mainActivitySelectLine.isSelected = false } } + + supportFragmentManager.beginTransaction() + .add(R.id.console_fragment_layout, ConsoleFragment()).commit() } //根据输入的经纬度跳转坐标 @@ -296,7 +304,15 @@ class MainActivity : BaseActivity() { * 打开个人中菜单 */ fun openMenu() { - binding.mainActivityDrawer.open() + supportFragmentManager.beginTransaction() + .replace(R.id.console_fragment_layout, ConsoleFragment()).commit() + if (leftFragment != null) { + supportFragmentManager.beginTransaction().remove(leftFragment!!).commit() + leftFragment = null + binding.mainActivityBottomSheetGroup.visibility = View.GONE + binding.mainActivityLeftFragment.visibility = View.GONE + } +// binding.mainActivityDrawer.open() } /** @@ -332,7 +348,7 @@ class MainActivity : BaseActivity() { /** * 点击搜索 */ - fun onClickSerach() { + fun onClickSearch() { } @@ -393,14 +409,89 @@ class MainActivity : BaseActivity() { binding.mainActivitySelectLine.isSelected = viewModel.isSelectRoad() } - fun voiceOnTouchStart() { + + /** + * 打开或关闭底部导航栏 + */ + fun onSwitchSheet() { + if (binding.mainActivityBottomSheetGroup.visibility == View.VISIBLE) { + binding.mainActivityBottomSheetGroup.visibility = View.GONE + } else { + binding.mainActivityBottomSheetGroup.visibility = View.VISIBLE + } + } + + private fun voiceOnTouchStart() { viewModel.startSoundMetter(this, binding.mainActivityVoice) } - @RequiresApi(Build.VERSION_CODES.Q) - fun voiceOnTouchStop() { + private fun voiceOnTouchStop() { if (Constant.IS_VIDEO_SPEED) { - viewModel.stopSoundMeter() + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + viewModel.stopSoundMeter() + } + } + } + + /** + * 打开测评任务面板 + */ + fun onClickTaskFragment() { + if (leftFragment !is TaskManagerFragment) { + if (leftFragment == null) { + binding.mainActivityBottomSheetGroup.visibility = View.VISIBLE + binding.mainActivityLeftFragment.visibility = View.VISIBLE + } + leftFragment = TaskManagerFragment { + binding.mainActivityLeftFragment.visibility = View.GONE + supportFragmentManager.beginTransaction() + .remove(leftFragment!!).commit() + leftFragment = null + null + } + supportFragmentManager.beginTransaction() + .replace(R.id.main_activity_left_fragment, leftFragment!!).commit() + } + } + + /** + * 打开测评结果面板 + */ + fun onClickResFragment() { + if (leftFragment !is QsRecordListFragment) { + if (leftFragment == null) { + binding.mainActivityBottomSheetGroup.visibility = View.VISIBLE + binding.mainActivityLeftFragment.visibility = View.VISIBLE + } + leftFragment = QsRecordListFragment { + binding.mainActivityLeftFragment.visibility = View.GONE + supportFragmentManager.beginTransaction() + .remove(leftFragment!!).commit() + leftFragment = null + null + } + supportFragmentManager.beginTransaction() + .replace(R.id.main_activity_left_fragment, leftFragment!!).commit() + } + } + /** + * 打开离线地图 + */ + fun onClickOfflineMapFragment(){ + if (leftFragment !is OfflineMapFragment) { + if (leftFragment == null) { + binding.mainActivityBottomSheetGroup.visibility = View.VISIBLE + binding.mainActivityLeftFragment.visibility = View.VISIBLE + } + leftFragment = OfflineMapFragment { + binding.mainActivityLeftFragment.visibility = View.GONE + supportFragmentManager.beginTransaction() + .remove(leftFragment!!).commit() + leftFragment = null + null + } + supportFragmentManager.beginTransaction() + .replace(R.id.main_activity_left_fragment, leftFragment!!).commit() } } } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/console/ConsoleActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/console/ConsoleFragment.kt similarity index 63% rename from app/src/main/java/com/navinfo/omqs/ui/activity/console/ConsoleActivity.kt rename to app/src/main/java/com/navinfo/omqs/ui/fragment/console/ConsoleFragment.kt index 4189b8c9..c882bb55 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/console/ConsoleActivity.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/console/ConsoleFragment.kt @@ -1,28 +1,30 @@ -package com.navinfo.omqs.ui.activity.console +package com.navinfo.omqs.ui.fragment.console -import android.content.Intent -import android.content.pm.ActivityInfo import android.os.Bundle import android.util.Log +import android.view.LayoutInflater import android.view.View import android.view.View.OnClickListener +import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.transition.AutoTransition import androidx.transition.Scene import androidx.transition.TransitionManager import com.navinfo.omqs.R -import com.navinfo.omqs.databinding.ActivityConsoleBinding -import com.navinfo.omqs.ui.activity.BaseActivity +import com.navinfo.omqs.databinding.FragmentConsoleBinding import com.navinfo.omqs.ui.activity.map.MainActivity -import com.navinfo.omqs.ui.fragment.layermanager.LayermanagerFragment +import com.navinfo.omqs.ui.fragment.BaseFragment +import com.navinfo.omqs.ui.fragment.evaluationresult.EvaluationResultFragment +import com.navinfo.omqs.ui.fragment.layermanager.LayerManagerFragment import com.navinfo.omqs.ui.fragment.offlinemap.OfflineMapFragment import com.navinfo.omqs.ui.fragment.personalcenter.PersonalCenterFragment +import com.navinfo.omqs.ui.fragment.qsrecordlist.QsRecordListFragment import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class ConsoleActivity : BaseActivity(), OnClickListener { +class ConsoleFragment : BaseFragment(), OnClickListener { - private var _binding: ActivityConsoleBinding? = null + private var _binding: FragmentConsoleBinding? = null private val binding get() = _binding!! private var sceneFlag = true private val aTransition = AutoTransition() @@ -33,14 +35,14 @@ class ConsoleActivity : BaseActivity(), OnClickListener { // 创建a场景 private val aScene by lazy { Scene.getSceneForLayout( - binding.consoleRoot, R.layout.console_on, this + binding.consoleRoot, R.layout.console_on, requireContext() ) } // 创建b场景 private val bScene by lazy { Scene.getSceneForLayout( - binding.consoleRoot, R.layout.console_off, this + binding.consoleRoot, R.layout.console_off, requireContext() ) } @@ -49,18 +51,21 @@ class ConsoleActivity : BaseActivity(), OnClickListener { // .inflateTransitionManager(R.transition.transitionmanager_console, binding.consoleRoot) // } + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? + ): View { + _binding = FragmentConsoleBinding.inflate(inflater, container, false) + return binding.root + } - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - _binding = ActivityConsoleBinding.inflate(layoutInflater) - setContentView(_binding!!.root) -// mTransitionAManager.setTransition(bScene, transition) - + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) aTransition.addListener(object : androidx.transition.Transition.TransitionListener { override fun onTransitionStart(transition: androidx.transition.Transition) { + sceneFlag = true if (mFragment != null) { Log.e("jingo", "动画开始B mFragment 不为null") - supportFragmentManager.beginTransaction().remove(mFragment!!).commit() + childFragmentManager.beginTransaction().remove(mFragment!!).commit() mFragment = null } } @@ -82,9 +87,10 @@ class ConsoleActivity : BaseActivity(), OnClickListener { }) bTransition.addListener(object : androidx.transition.Transition.TransitionListener { override fun onTransitionStart(transition: androidx.transition.Transition) { + sceneFlag = false if (mFragment != null) { Log.e("jingo", "动画开始A mFragment 不为null") - supportFragmentManager.beginTransaction().replace(fragmentId, mFragment!!) + childFragmentManager.beginTransaction().replace(fragmentId, mFragment!!) .commit() } } @@ -106,6 +112,7 @@ class ConsoleActivity : BaseActivity(), OnClickListener { initOnClickListener() } + /** * 设置点击事件 */ @@ -143,8 +150,12 @@ class ConsoleActivity : BaseActivity(), OnClickListener { */ binding.consoleRoot.findViewById(R.id.console_evaluation_icon_bg) ?.setOnClickListener(this) - binding.consoleRoot.findViewById(R.id.console_evaluation_bg) - ?.setOnClickListener(this) + binding.consoleRoot.findViewById(R.id.console_evaluation_bg)?.setOnClickListener(this) + /** + * 评测任务 + */ + binding.consoleRoot.findViewById(R.id.console_task_bg)?.setOnClickListener(this) + binding.consoleRoot.findViewById(R.id.console_task_icon_bg)?.setOnClickListener(this) } override fun onDestroy() { @@ -159,39 +170,37 @@ class ConsoleActivity : BaseActivity(), OnClickListener { * 地图点击事件 */ R.id.console_map_bg, R.id.console_map_icon_bg -> { - val intent = Intent(this, MainActivity::class.java) - startActivity(intent) + activity?.let { a -> + a.supportFragmentManager.beginTransaction().remove(this).commit() + } } /** * 离线地图点击 */ R.id.console_offline_map_icon_bg, R.id.console_offline_map_bg -> { - if (sceneFlag) { - mFragment = OfflineMapFragment() - sceneFlag = false - TransitionManager.go(bScene, bTransition) - } else { - if (mFragment !is OfflineMapFragment) { - mFragment = OfflineMapFragment() - supportFragmentManager.beginTransaction() - .replace(fragmentId, mFragment!!).commit() - } - return + activity?.let { a -> + a.supportFragmentManager.beginTransaction().remove(this).commit() + (a as MainActivity).onClickOfflineMapFragment() } + } /** * 个人中心点击 */ R.id.console_personal_center_bg, R.id.console_personal_center_icon_bg -> { if (sceneFlag) { - mFragment = PersonalCenterFragment() + mFragment = PersonalCenterFragment { + TransitionManager.go(aScene, aTransition) + } sceneFlag = false TransitionManager.go(bScene, bTransition) } else { if (mFragment !is PersonalCenterFragment) { - mFragment = PersonalCenterFragment() - supportFragmentManager.beginTransaction() - .replace(fragmentId, mFragment!!).commit() + mFragment = PersonalCenterFragment { + TransitionManager.go(aScene, aTransition) + } + childFragmentManager.beginTransaction().replace(fragmentId, mFragment!!) + .commit() } return } @@ -201,14 +210,18 @@ class ConsoleActivity : BaseActivity(), OnClickListener { */ R.id.console_layer_setting_bg, R.id.console_layer_setting_icon_bg -> { if (sceneFlag) { - mFragment = LayermanagerFragment() + mFragment = LayerManagerFragment { + TransitionManager.go(aScene, aTransition) + } sceneFlag = false TransitionManager.go(bScene, bTransition) } else { - if (mFragment !is LayermanagerFragment) { - mFragment = LayermanagerFragment() - supportFragmentManager.beginTransaction() - .replace(fragmentId, mFragment!!).commit() + if (mFragment !is LayerManagerFragment) { + mFragment = LayerManagerFragment { + TransitionManager.go(aScene, aTransition) + } + childFragmentManager.beginTransaction().replace(fragmentId, mFragment!!) + .commit() } return } @@ -216,20 +229,18 @@ class ConsoleActivity : BaseActivity(), OnClickListener { /** * 测评结果列表 */ - R.id.console_evaluation_icon_bg, - R.id.console_evaluation_bg -> { -// if (sceneFlag) { -// mFragment = LayermanagerFragment() -// sceneFlag = false -// TransitionManager.go(bScene, bTransition) -// } else { -// if (mFragment !is LayermanagerFragment) { -// mFragment = LayermanagerFragment() -// supportFragmentManager.beginTransaction() -// .replace(fragmentId, mFragment!!).commit() -// } -// return -// } + R.id.console_evaluation_icon_bg, R.id.console_evaluation_bg -> { + activity?.let { a -> + a.supportFragmentManager.beginTransaction().remove(this).commit() + (a as MainActivity).onClickResFragment() + } + } + R.id.console_task_icon_bg, R.id.console_task_bg -> { + activity?.let { a -> + a.supportFragmentManager.beginTransaction().remove(this).commit() + (a as MainActivity).onClickTaskFragment() + } + } else -> {} } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultFragment.kt index f44a8f3c..d2f0ccae 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultFragment.kt @@ -93,29 +93,26 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener { } - binding.evaluationVoice.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 - Log.e("qj", "voiceOnTouchStart") - } - - MotionEvent.ACTION_UP -> { - voiceOnTouchStop()//Do Something - Log.e("qj", "ACTION_UP") - } - - MotionEvent.ACTION_CANCEL -> { - voiceOnTouchStop()//Do Something - Log.e("qj", "ACTION_CANCEL") - } + binding.evaluationVoice.setOnTouchListener { _, event -> + Log.e("qj", event?.action.toString()) + when (event?.action) { + MotionEvent.ACTION_DOWN -> { + voiceOnTouchStart()//Do Something + Log.e("qj", "voiceOnTouchStart") + } + + MotionEvent.ACTION_UP -> { + voiceOnTouchStop()//Do Something + Log.e("qj", "ACTION_UP") + } + + MotionEvent.ACTION_CANCEL -> { + voiceOnTouchStop()//Do Something + Log.e("qj", "ACTION_CANCEL") } - return true } - }) + true + } /** * 读取元数据 @@ -308,15 +305,16 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener { } } - fun voiceOnTouchStart() { + private fun voiceOnTouchStart() { viewModel.startSoundMetter(requireActivity(), binding.evaluationVoice) } - @RequiresApi(Build.VERSION_CODES.Q) - fun voiceOnTouchStop() { + private fun voiceOnTouchStop() { Log.e("qj", "voiceOnTouchStop====${Constant.IS_VIDEO_SPEED}") if (Constant.IS_VIDEO_SPEED) { - viewModel.stopSoundMeter() + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + viewModel.stopSoundMeter() + } } } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayermanagerFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayerManagerFragment.kt similarity index 64% rename from app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayermanagerFragment.kt rename to app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayerManagerFragment.kt index b37f0871..b9c14e46 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayermanagerFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayerManagerFragment.kt @@ -4,25 +4,17 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.Toast -import androidx.fragment.app.Fragment -import androidx.fragment.app.FragmentActivity -import androidx.fragment.app.FragmentController import androidx.fragment.app.viewModels -import androidx.navigation.fragment.findNavController -import com.blankj.utilcode.util.SPStaticUtils -import com.navinfo.omqs.Constant -import com.navinfo.omqs.databinding.FragmentEmptyBinding import com.navinfo.omqs.databinding.FragmentLayerManagerBinding import com.navinfo.omqs.ui.fragment.BaseFragment -import com.navinfo.omqs.ui.fragment.offlinemap.OfflineMapCityListViewModel -class LayermanagerFragment : BaseFragment(){ +class LayerManagerFragment(private var backListener: (() -> Unit?)? = null) : BaseFragment() { private var _binding: FragmentLayerManagerBinding? = null private val binding get() = _binding!! private val viewModel by viewModels() -// private val viewModel by lazy { viewModels().value} + + // private val viewModel by lazy { viewModels().value} override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -33,14 +25,13 @@ class LayermanagerFragment : BaseFragment(){ override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - - val adapter = LayerManagerExpandableListAdapter(requireContext(), viewModel.getLayerConfigList()) - + val adapter = + LayerManagerExpandableListAdapter(requireContext(), viewModel.getLayerConfigList()) binding.elvLayerManager.setAdapter(adapter) // 默认显示第一个父项下的子类 binding.elvLayerManager.expandGroup(0) binding.elvLayerManager.setGroupIndicator(null) - binding.elvLayerManager.setOnGroupClickListener { expandableListView, view, groupPosition, l -> + binding.elvLayerManager.setOnGroupClickListener { expandableListView, _, groupPosition, _ -> if (expandableListView.isGroupExpanded(groupPosition)) { binding.elvLayerManager.collapseGroup(groupPosition) } else { @@ -49,14 +40,19 @@ class LayermanagerFragment : BaseFragment(){ } binding.imgConfirm.setOnClickListener { - viewModel.saveLayerConfigList(requireContext(),adapter.parentItems) + viewModel.saveLayerConfigList(requireContext(), adapter.parentItems) } binding.imgBack.setOnClickListener { - findNavController().navigateUp() + backListener?.invoke() } - binding.tvTitle.text = "图层管理" + binding.tvTitle.text = "图层管理"//findNavController().currentDestination?.label + + binding.imgConfirm.setOnClickListener { // 用户点击确认,重新设置当前的图层显隐控制 + viewModel.saveLayerConfigList(requireContext(), adapter.parentItems) + backListener?.invoke() + } } override fun onDestroyView() { diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayerManagerViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayerManagerViewModel.kt index c747c423..0e889dbd 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayerManagerViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayerManagerViewModel.kt @@ -4,10 +4,8 @@ import android.content.Context import android.widget.Toast import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.blankj.utilcode.util.FileIOUtils import com.blankj.utilcode.util.SPStaticUtils import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.navinfo.omqs.Constant import com.navinfo.omqs.bean.ImportConfig import com.navinfo.omqs.tools.LayerConfigUtils @@ -15,9 +13,8 @@ import com.navinfo.omqs.util.FlowEventBus import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import java.io.File -class LayerManagerViewModel(): ViewModel() { +class LayerManagerViewModel() : ViewModel() { private val gson = Gson() fun getLayerConfigList(): List { diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/offlinemap/OfflineMapFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/offlinemap/OfflineMapFragment.kt index c04ceb9d..2e8d7ac3 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/offlinemap/OfflineMapFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/offlinemap/OfflineMapFragment.kt @@ -13,7 +13,8 @@ import com.navinfo.omqs.ui.fragment.BaseFragment /** * 离线地图总页面 */ -class OfflineMapFragment : BaseFragment() { +class OfflineMapFragment(private var backListener: (() -> Unit?)? = null) : + BaseFragment() { private var _binding: FragmentOfflineMapBinding? = null @@ -48,7 +49,7 @@ class OfflineMapFragment : BaseFragment() { //处理返回按钮 binding.offlineMapBack.setOnClickListener { - findNavController().popBackStack() + backListener?.invoke() } } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt index 5d53c83a..82b04705 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt @@ -29,7 +29,8 @@ import javax.inject.Inject * 个人中心 */ @AndroidEntryPoint -class PersonalCenterFragment : BaseFragment(), FSAFActivityCallbacks { +class PersonalCenterFragment(private var backListener: (() -> Unit?)? = null) : BaseFragment(), + FSAFActivityCallbacks { private var _binding: FragmentPersonalCenterBinding? = null private val binding get() = _binding!! @@ -111,7 +112,7 @@ class PersonalCenterFragment : BaseFragment(), FSAFActivityCallbacks { viewModel.readRealmData() // 定位到指定位置 niMapController.mMapView.vtmMap.animator() - .animateTo(GeoPoint(40.031657799200346, 116.32207834810715 )) + .animateTo(GeoPoint(40.031657799200346, 116.32207834810715)) } R.id.personal_center_menu_task_list -> { findNavController().navigate(R.id.TaskManagerFragment) diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/qsrecordlist/QsRecordListFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/qsrecordlist/QsRecordListFragment.kt index e4fb1819..30d52e77 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/qsrecordlist/QsRecordListFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/qsrecordlist/QsRecordListFragment.kt @@ -16,7 +16,7 @@ import com.navinfo.omqs.ui.fragment.tasklist.QsRecordListAdapter import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class QsRecordListFragment : BaseFragment(){ +class QsRecordListFragment(private var backListener: (() -> Unit?)? = null) : BaseFragment() { private var _binding: FragmentQsRecordListBinding? = null private val viewModel by viewModels() private val binding get() = _binding!! @@ -44,7 +44,7 @@ class QsRecordListFragment : BaseFragment(){ binding.qsRecyclerview.adapter = adapter viewModel.liveDataQSList.observe(viewLifecycleOwner) { adapter.refreshData(it) - binding.tvTitleCount.text = "共"+adapter.data.size+"条" + binding.tvTitleCount.text = "共" + adapter.data.size + "条" } val itemDecoration = DividerItemDecoration(context, DividerItemDecoration.VERTICAL) itemDecoration.setDrawable(resources.getDrawable(R.drawable.separator)) @@ -53,13 +53,13 @@ class QsRecordListFragment : BaseFragment(){ // itemClick adapter.setOnKotlinItemClickListener(object : QsRecordListAdapter.IKotlinItemClickListener { override fun onItemClickListener(position: Int) { - viewModel.onItemClickListener(activity as MainActivity,position) - findNavController().popBackStack() + viewModel.onItemClickListener(activity as MainActivity, position) + backListener?.invoke() } }) - binding.imgBack.setOnClickListener{ - findNavController().navigateUp() + binding.imgBack.setOnClickListener { + backListener?.invoke() } } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskManagerFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskManagerFragment.kt index 8c74cdfc..ec11bd80 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskManagerFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskManagerFragment.kt @@ -15,7 +15,7 @@ import dagger.hilt.android.AndroidEntryPoint * 评测任务viewpager管理页面 */ @AndroidEntryPoint -class TaskManagerFragment : BaseFragment() { +class TaskManagerFragment(private var backListener: ((TaskManagerFragment) -> Unit?)? = null) : BaseFragment() { private var _binding: FragmentTaskManagerBinding? = null private val binding get() = _binding!! @@ -53,7 +53,7 @@ class TaskManagerFragment : BaseFragment() { }.attach() viewModel.getTaskList(requireContext()) binding.taskBack.setOnClickListener { - findNavController().navigateUp() + backListener?.invoke(this) } } diff --git a/app/src/main/res/drawable-v24/baseline_minimize_24.xml b/app/src/main/res/drawable-v24/baseline_minimize_24.xml new file mode 100644 index 00000000..73c835c2 --- /dev/null +++ b/app/src/main/res/drawable-v24/baseline_minimize_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable-xxhdpi/icon_main_bottom_home.png b/app/src/main/res/drawable-xxhdpi/icon_main_bottom_home.png new file mode 100644 index 00000000..5b5ad319 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_main_bottom_home.png differ diff --git a/app/src/main/res/drawable-xxhdpi/icon_main_bottom_offline_map.png b/app/src/main/res/drawable-xxhdpi/icon_main_bottom_offline_map.png new file mode 100644 index 00000000..3ca4ce2b Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_main_bottom_offline_map.png differ diff --git a/app/src/main/res/drawable-xxhdpi/icon_main_bottom_res.png b/app/src/main/res/drawable-xxhdpi/icon_main_bottom_res.png new file mode 100644 index 00000000..e14eff80 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_main_bottom_res.png differ diff --git a/app/src/main/res/drawable-xxhdpi/icon_main_bottom_route.png b/app/src/main/res/drawable-xxhdpi/icon_main_bottom_route.png new file mode 100644 index 00000000..38b06d45 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_main_bottom_route.png differ diff --git a/app/src/main/res/drawable-xxhdpi/icon_main_bottom_task.png b/app/src/main/res/drawable-xxhdpi/icon_main_bottom_task.png new file mode 100644 index 00000000..a9942030 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_main_bottom_task.png differ diff --git a/app/src/main/res/drawable/shape_bottom_sheet.xml b/app/src/main/res/drawable/shape_bottom_sheet.xml new file mode 100644 index 00000000..3fa8cf1c --- /dev/null +++ b/app/src/main/res/drawable/shape_bottom_sheet.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index bb17c8e4..690d0642 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -17,265 +17,397 @@ type="com.navinfo.omqs.ui.activity.map.MainViewModel" /> - + android:layout_height="match_parent"> - + - + + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + android:layout_width="wrap_content" + android:layout_height="0dp" + android:elevation="3dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:navGraph="@navigation/right_fragment_nav_graph" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - \ No newline at end of file diff --git a/app/src/main/res/layout/adapter_sign.xml b/app/src/main/res/layout/adapter_sign.xml index 382b591b..98d10cb5 100644 --- a/app/src/main/res/layout/adapter_sign.xml +++ b/app/src/main/res/layout/adapter_sign.xml @@ -27,7 +27,7 @@ android:gravity="center" android:text="80" android:textColor="#2F2F2F" - android:textSize="14sp" /> + android:textSize="16sp" /> + tools:context=".ui.fragment.console.ConsoleFragment"> + tools:context=".ui.fragment.console.ConsoleFragment"> + tools:context=".ui.fragment.console.ConsoleFragment"> \ No newline at end of file diff --git a/app/src/main/res/navigation/left_drawer_nav_graph.xml b/app/src/main/res/navigation/left_drawer_nav_graph.xml index 2e2c94b3..81d0f6be 100644 --- a/app/src/main/res/navigation/left_drawer_nav_graph.xml +++ b/app/src/main/res/navigation/left_drawer_nav_graph.xml @@ -39,7 +39,7 @@ diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index d8672f37..d0a4d202 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,5 +1,10 @@ + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_4002_1.png b/collect-library/src/main/assets/omdb/icon_4002_1.png deleted file mode 100644 index db1014da..00000000 Binary files a/collect-library/src/main/assets/omdb/icon_4002_1.png and /dev/null differ diff --git a/collect-library/src/main/assets/omdb/icon_4002_1.svg b/collect-library/src/main/assets/omdb/icon_4002_1.svg new file mode 100644 index 00000000..158b4f48 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_4002_1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_4003_0.png b/collect-library/src/main/assets/omdb/icon_4003_0.png deleted file mode 100644 index 747e7357..00000000 Binary files a/collect-library/src/main/assets/omdb/icon_4003_0.png and /dev/null differ diff --git a/collect-library/src/main/assets/omdb/icon_4003_0.svg b/collect-library/src/main/assets/omdb/icon_4003_0.svg new file mode 100644 index 00000000..50a7b3b7 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_4003_0.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_4003_1.png b/collect-library/src/main/assets/omdb/icon_4003_1.png deleted file mode 100644 index 4b798ec4..00000000 Binary files a/collect-library/src/main/assets/omdb/icon_4003_1.png and /dev/null differ diff --git a/collect-library/src/main/assets/omdb/icon_4003_1.svg b/collect-library/src/main/assets/omdb/icon_4003_1.svg new file mode 100644 index 00000000..9254e9c0 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_4003_1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_4004_0.png b/collect-library/src/main/assets/omdb/icon_4004_0.png deleted file mode 100644 index 889aabb6..00000000 Binary files a/collect-library/src/main/assets/omdb/icon_4004_0.png and /dev/null differ diff --git a/collect-library/src/main/assets/omdb/icon_4004_0.svg b/collect-library/src/main/assets/omdb/icon_4004_0.svg new file mode 100644 index 00000000..54de0465 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_4004_0.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_4004_1.png b/collect-library/src/main/assets/omdb/icon_4004_1.png deleted file mode 100644 index f152c1f1..00000000 Binary files a/collect-library/src/main/assets/omdb/icon_4004_1.png and /dev/null differ diff --git a/collect-library/src/main/assets/omdb/icon_4006_0.png b/collect-library/src/main/assets/omdb/icon_4006_0.png deleted file mode 100644 index 5c912a60..00000000 Binary files a/collect-library/src/main/assets/omdb/icon_4006_0.png and /dev/null differ diff --git a/collect-library/src/main/assets/omdb/icon_4006_0.svg b/collect-library/src/main/assets/omdb/icon_4006_0.svg new file mode 100644 index 00000000..f5b3b3c5 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_4006_0.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_4022_0.png b/collect-library/src/main/assets/omdb/icon_4022_0.png deleted file mode 100644 index a718c8e2..00000000 Binary files a/collect-library/src/main/assets/omdb/icon_4022_0.png and /dev/null differ diff --git a/collect-library/src/main/assets/omdb/icon_4022_0.svg b/collect-library/src/main/assets/omdb/icon_4022_0.svg new file mode 100644 index 00000000..63378323 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_4022_0.svg @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_arrow_right.png b/collect-library/src/main/assets/omdb/icon_arrow_right.png deleted file mode 100644 index b0246785..00000000 Binary files a/collect-library/src/main/assets/omdb/icon_arrow_right.png and /dev/null differ diff --git a/collect-library/src/main/assets/omdb/icon_arrow_right.svg b/collect-library/src/main/assets/omdb/icon_arrow_right.svg new file mode 100644 index 00000000..fc0678f3 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_arrow_right.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/NIMapView.java b/collect-library/src/main/java/com/navinfo/collect/library/map/NIMapView.java index 0b459fb7..f599fcb7 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/NIMapView.java +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/NIMapView.java @@ -596,7 +596,8 @@ public final class NIMapView extends RelativeLayout { VECTOR(2)/*高亮组*/, OPERATE_LINE(3)/*操作图层组*/, OPERATE_MARKER(4)/*操作图层组*/, - NAVIGATION(5)/*定位导航组*/; + NAVIGATION(5)/*定位导航组*/, + LABEL(6)/*图标,文字图层*/; int groupIndex; diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LayerManagerHandler.kt b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LayerManagerHandler.kt index 75aafa44..d3348487 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LayerManagerHandler.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LayerManagerHandler.kt @@ -22,10 +22,11 @@ import java.io.File /** * Layer 操作 */ -class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView,tracePath: String) : BaseHandler(context, mapView) { +class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView, tracePath: String) : + BaseHandler(context, mapView) { private var baseGroupLayer // 用于盛放所有基础底图的图层组,便于统一管理 : GroupLayer? = null - private val mTracePath:String = tracePath + private val mTracePath: String = tracePath /** * 轨迹渲染图层 @@ -70,12 +71,13 @@ class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView,tracePa vectorNiLocationTileLayer = VectorTileLayer(mMapView.vtmMap, mapLifeNiLocationTileSource) - labelNiLocationLayer = LabelLayer(mMapView.vtmMap, vectorNiLocationTileLayer, LabelTileLoaderHook(), 15) + labelNiLocationLayer = + LabelLayer(mMapView.vtmMap, vectorNiLocationTileLayer, LabelTileLoaderHook(), 15) - if(vectorNiLocationTileLayer!=null){ - addLayer(vectorNiLocationTileLayer,NIMapView.LAYER_GROUPS.BASE) + if (vectorNiLocationTileLayer != null) { + addLayer(vectorNiLocationTileLayer, NIMapView.LAYER_GROUPS.BASE) } - if(labelNiLocationLayer!=null){ + if (labelNiLocationLayer != null) { addLayer(labelNiLocationLayer, NIMapView.LAYER_GROUPS.BASE) } @@ -92,7 +94,7 @@ class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView,tracePa mMapView.vtmMap.events.bind(UpdateListener { e, mapPosition -> if (e == org.oscim.map.Map.SCALE_EVENT) { // 测评数据图层在指定Zoom后开始显示 - val isOmdbZoom = mapPosition.zoomLevel>=Constant.OMDB_MIN_ZOOM + val isOmdbZoom = mapPosition.zoomLevel >= Constant.OMDB_MIN_ZOOM baseGroupLayer?.layers?.forEach { it.isEnabled = !isOmdbZoom } @@ -103,25 +105,36 @@ class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView,tracePa } private fun initOMDBVectorTileLayer() { - // 初始化OMDB相关图层 - omdbVectorTileLayer = VectorTileLayer(mMapView.vtmMap, omdbTileSource) - omdbLabelLayer = LabelLayer(mMapView.vtmMap, omdbVectorTileLayer, LabelTileLoaderHook(), Constant.OMDB_MIN_ZOOM) - if(omdbVectorTileLayer!=null){ - addLayer(omdbVectorTileLayer,NIMapView.LAYER_GROUPS.VECTOR_TILE) - } - if(omdbLabelLayer!=null){ - addLayer(omdbLabelLayer, NIMapView.LAYER_GROUPS.VECTOR_TILE) - } // 初始化OMDB参考相关图层 omdbReferenceTileLayer = VectorTileLayer(mMapView.vtmMap, omdbReferenceTileSource) - omdbReferenceLabelLayer = LabelLayer(mMapView.vtmMap, omdbReferenceTileLayer, LabelTileLoaderHook(), Constant.OMDB_MIN_ZOOM) - if(omdbReferenceTileLayer!=null){ - addLayer(omdbReferenceTileLayer,NIMapView.LAYER_GROUPS.VECTOR_TILE) + omdbReferenceLabelLayer = LabelLayer( + mMapView.vtmMap, + omdbReferenceTileLayer, + LabelTileLoaderHook(), + Constant.OMDB_MIN_ZOOM + ) + if (omdbReferenceTileLayer != null) { + addLayer(omdbReferenceTileLayer, NIMapView.LAYER_GROUPS.VECTOR_TILE) } - if(omdbReferenceLabelLayer!=null){ - addLayer(omdbReferenceLabelLayer, NIMapView.LAYER_GROUPS.VECTOR_TILE) + if (omdbReferenceLabelLayer != null) { + addLayer(omdbReferenceLabelLayer, NIMapView.LAYER_GROUPS.LABEL) } + // 初始化OMDB相关图层 + omdbVectorTileLayer = VectorTileLayer(mMapView.vtmMap, omdbTileSource) + omdbLabelLayer = LabelLayer( + mMapView.vtmMap, + omdbVectorTileLayer, + LabelTileLoaderHook(), + Constant.OMDB_MIN_ZOOM + ) + if (omdbVectorTileLayer != null) { + addLayer(omdbVectorTileLayer, NIMapView.LAYER_GROUPS.VECTOR_TILE) + } + if (omdbLabelLayer != null) { + addLayer(omdbLabelLayer, NIMapView.LAYER_GROUPS.LABEL) + } + } /** diff --git a/vtm b/vtm index dd13e533..1ee201a4 160000 --- a/vtm +++ b/vtm @@ -1 +1 @@ -Subproject commit dd13e533c38b5738ab404c2737d7ccadeff01323 +Subproject commit 1ee201a41f78f169873848209a3f3bdac36f185a