Commit 1cbb240c authored by 马乐's avatar 马乐

1.解决地图异步加载车辆图片被遮挡问题

2.优化地图相关类依赖关系
parent 2c0c90f1
...@@ -17,7 +17,6 @@ import com.mapbox.maps.ViewAnnotationAnchor ...@@ -17,7 +17,6 @@ import com.mapbox.maps.ViewAnnotationAnchor
import com.mapbox.maps.extension.style.layers.properties.generated.IconAnchor import com.mapbox.maps.extension.style.layers.properties.generated.IconAnchor
import com.mapbox.maps.extension.style.style import com.mapbox.maps.extension.style.style
import com.mapbox.maps.plugin.annotation.AnnotationConfig import com.mapbox.maps.plugin.annotation.AnnotationConfig
import com.mapbox.maps.plugin.annotation.AnnotationPlugin
import com.mapbox.maps.plugin.annotation.annotations import com.mapbox.maps.plugin.annotation.annotations
import com.mapbox.maps.plugin.annotation.generated.PointAnnotationManager import com.mapbox.maps.plugin.annotation.generated.PointAnnotationManager
import com.mapbox.maps.plugin.annotation.generated.PointAnnotationOptions import com.mapbox.maps.plugin.annotation.generated.PointAnnotationOptions
...@@ -78,7 +77,7 @@ import kotlinx.coroutines.flow.last ...@@ -78,7 +77,7 @@ import kotlinx.coroutines.flow.last
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import java.math.BigDecimal import java.math.BigDecimal
open class BaseFragment : Fragment() { open class BaseMapFragment : Fragment() {
private val mapModel: MainViewModel by viewModels { private val mapModel: MainViewModel by viewModels {
MainViewModel.MainViewModelFactory(MainRepository(requireContext())) MainViewModel.MainViewModelFactory(MainRepository(requireContext()))
...@@ -142,15 +141,15 @@ open class BaseFragment : Fragment() { ...@@ -142,15 +141,15 @@ open class BaseFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
layoutMapBoxBinding = LayoutMapBoxBinding.inflate(LayoutInflater.from(requireContext())) layoutMapBoxBinding = LayoutMapBoxBinding.inflate(LayoutInflater.from(requireContext()))
}
fun setupMapBox() {
LogUtils.d("setupMapBox")
layoutMapBoxBinding.mapView.run { layoutMapBoxBinding.mapView.run {
logo.enabled = false logo.enabled = false
compass.enabled = false compass.enabled = false
attribution.enabled = false attribution.enabled = false
} }
}
fun setupMapBox() {
LogUtils.d("setupMapBox")
mapboxMap = layoutMapBoxBinding.mapView.getMapboxMap().also { mapboxMap = layoutMapBoxBinding.mapView.getMapboxMap().also {
it.setCamera(cameraOptions) it.setCamera(cameraOptions)
} }
......
...@@ -8,18 +8,17 @@ import android.view.View ...@@ -8,18 +8,17 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.blankj.utilcode.util.LogUtils
import com.mapbox.maps.MapView import com.mapbox.maps.MapView
import com.waytous.anticollision.R import com.waytous.anticollision.R
import com.waytous.anticollision.databinding.FragmentHomeBinding import com.waytous.anticollision.databinding.FragmentHomeBinding
import com.waytous.anticollision.repository.MainRepository import com.waytous.anticollision.repository.MainRepository
import com.waytous.anticollision.ui.BaseFragment import com.waytous.anticollision.ui.BaseMapFragment
import com.waytous.anticollision.ui.MainViewModel import com.waytous.anticollision.ui.MainViewModel
import com.waytous.anticollision.ui.view.MoreFeaturesPopup import com.waytous.anticollision.ui.view.MoreFeaturesPopup
import com.waytous.anticollision.ui.view.WorkStatusEditPopup import com.waytous.anticollision.ui.view.WorkStatusEditPopup
import com.waytous.anticollision.utils.setTextSize import com.waytous.anticollision.utils.setTextSize
class HomeFragment : BaseFragment() { class HomeNoVideoFragment : BaseMapFragment() {
private var _binding: FragmentHomeBinding? = null private var _binding: FragmentHomeBinding? = null
...@@ -33,8 +32,6 @@ class HomeFragment : BaseFragment() { ...@@ -33,8 +32,6 @@ class HomeFragment : BaseFragment() {
private lateinit var workStatusEditPopup: WorkStatusEditPopup private lateinit var workStatusEditPopup: WorkStatusEditPopup
private val mapModel: MainViewModel by viewModels { private val mapModel: MainViewModel by viewModels {
MainViewModel.MainViewModelFactory(MainRepository(requireContext())) MainViewModel.MainViewModelFactory(MainRepository(requireContext()))
} }
...@@ -59,9 +56,8 @@ class HomeFragment : BaseFragment() { ...@@ -59,9 +56,8 @@ class HomeFragment : BaseFragment() {
it.maskOffsetY = 20 it.maskOffsetY = 20
it.setBackgroundColor(R.color.color_99000000) it.setBackgroundColor(R.color.color_99000000)
} }
LogUtils.d("HomeFragment.onCreateView")
setupMapBox() setupMapBox()
binding.defaultMapLayout.addView(layoutMapBoxBinding.root) binding.noVideoMapWrapper.addView(layoutMapBoxBinding.root)
setTodayCarriedNum(18) setTodayCarriedNum(18)
setTodayIllegallyNum(1) setTodayIllegallyNum(1)
binding.workStatusEdit.setOnClickListener { binding.workStatusEdit.setOnClickListener {
...@@ -87,7 +83,7 @@ class HomeFragment : BaseFragment() { ...@@ -87,7 +83,7 @@ class HomeFragment : BaseFragment() {
override fun onDestroyView() { override fun onDestroyView() {
super.onDestroyView() super.onDestroyView()
binding.defaultMapLayout.removeView(layoutMapBoxBinding.root) binding.noVideoMapWrapper.removeView(layoutMapBoxBinding.root)
_binding = null _binding = null
} }
......
package com.waytous.anticollision.ui.video
import android.net.Uri
import android.os.Bundle
import android.text.SpannableString
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.widget.AppCompatTextView
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import com.google.android.exoplayer2.ExoPlayer
import com.google.android.exoplayer2.MediaItem
import com.waytous.anticollision.R
import com.waytous.anticollision.databinding.FragmentVideoHomeBinding
import com.waytous.anticollision.ui.BaseMapFragment
import com.waytous.anticollision.ui.view.MoreFeaturesPopup
import com.waytous.anticollision.ui.view.WorkStatusEditPopup
import com.waytous.anticollision.utils.setTextSize
import java.io.File
class HomeVideoFragment : BaseMapFragment() {
private lateinit var binding: FragmentVideoHomeBinding
private var player1: ExoPlayer? = null
private var player2: ExoPlayer? = null
private lateinit var workStatusEditPopup: WorkStatusEditPopup
private lateinit var moreFeaturesPopup: MoreFeaturesPopup
companion object {
fun newInstance() = HomeVideoFragment()
}
private val viewModel: VideoHomeViewModel by viewModels()
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentVideoHomeBinding.inflate(inflater, container, false)
context ?: return binding.root
workStatusEditPopup = WorkStatusEditPopup(context).also {
it.setOutSideDismiss(true)
it.popupGravity = Gravity.TOP or Gravity.CENTER
it.setBackgroundColor(R.color.color_99000000)
}
moreFeaturesPopup = MoreFeaturesPopup(context).also {pupop->
pupop.setOutSideDismiss(true)
pupop.popupGravity = Gravity.TOP or Gravity.CENTER
pupop.maskOffsetY = 20
pupop.setBackgroundColor(R.color.color_99000000)
pupop.contentView.findViewById<AppCompatTextView>(R.id.moreFeatureCollect).setOnClickListener {
findNavController().navigate(R.id.action_navigation_video_Home_to_collectFragment)
pupop.dismiss()
}
}
val templateString = getString(R.string.current_speed, 36)
val spannableString = SpannableString(templateString)
binding.workStatusEdit.setOnClickListener {
workStatusEditPopup.showPopupWindow(binding.currentWorkStatusLayout)
}
binding.speedText.setTextSize(spannableString, templateString)
setupMapBox()
binding.videoMapWrapper.addView(layoutMapBoxBinding.root)
initPlayer()
binding.toggleMore.setOnClickListener {
moreFeaturesPopup.showPopupWindow(it)
}
return binding.root
}
private fun initPlayer() {
val uri1 = Uri.fromFile(File(requireActivity().filesDir, "飞书20230420-181456.mp4"))
player1 = activity?.let {
ExoPlayer.Builder(it).build().apply {
setMediaItem(MediaItem.Builder().setUri(uri1).build())
}
}
binding.videoView1.player = player1
player1?.prepare()
val uri2 = Uri.fromFile(File(requireActivity().filesDir, "飞书20230420-181512.mp4"))
player2 = activity?.let {
ExoPlayer.Builder(it).build().apply {
setMediaItem(MediaItem.Builder().setUri(uri2).build())
}
}
binding.videoView2.player = player2
player2?.prepare()
player1?.play()
player2?.play()
}
override fun onDestroyView() {
binding.videoMapWrapper.removeView(layoutMapBoxBinding.root)
player1?.release()
player2?.release()
super.onDestroyView()
}
}
\ No newline at end of file
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context=".ui.BaseFragment"> tools:context=".ui.BaseMapFragment">
<!-- TODO: Update blank fragment layout --> <!-- TODO: Update blank fragment layout -->
<TextView <TextView
......
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
app:layout_constraintTop_toBottomOf="@id/collectRadioGroup" app:layout_constraintTop_toBottomOf="@id/collectRadioGroup"
app:layout_constraintStart_toStartOf="@id/collectRadioGroup"/> app:layout_constraintStart_toStartOf="@id/collectRadioGroup"/>
<include <include
android:id="@+id/defaultMapLayout" android:id="@+id/noVideoMapWrapper"
layout="@layout/layout_map_box" layout="@layout/layout_map_box"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context=".ui.home.HomeFragment"> tools:context=".ui.home.HomeNoVideoFragment">
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/defaultWorkingAvatar" android:id="@+id/defaultWorkingAvatar"
...@@ -280,10 +280,10 @@ ...@@ -280,10 +280,10 @@
android:clickable="true" android:clickable="true"
android:textColor="@drawable/color_text_btn" android:textColor="@drawable/color_text_btn"
app:layout_constraintTop_toTopOf="@id/defaultToggleMore" app:layout_constraintTop_toTopOf="@id/defaultToggleMore"
app:layout_constraintEnd_toEndOf="@id/defaultMapLayout" /> app:layout_constraintEnd_toEndOf="@id/noVideoMapWrapper" />
<FrameLayout <FrameLayout
android:id="@+id/defaultMapLayout" android:id="@+id/noVideoMapWrapper"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context=".ui.video.VideoHomeFragment"> tools:context=".ui.video.HomeVideoFragment">
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/workingAvatar" android:id="@+id/workingAvatar"
...@@ -94,9 +94,8 @@ ...@@ -94,9 +94,8 @@
app:layout_constraintTop_toTopOf="@id/dispatchedCommTime" app:layout_constraintTop_toTopOf="@id/dispatchedCommTime"
tools:ignore="SmallSp" /> tools:ignore="SmallSp" />
<include <FrameLayout
android:id="@+id/videoHomeMapLayout" android:id="@+id/videoMapWrapper"
layout="@layout/layout_map_box"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_marginTop="18dp" android:layout_marginTop="18dp"
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<fragment <fragment
android:id="@+id/navigation_home" android:id="@+id/navigation_home"
android:name="com.waytous.anticollision.ui.home.HomeFragment" android:name="com.waytous.anticollision.ui.home.HomeNoVideoFragment"
android:label="@string/title_home" android:label="@string/title_home"
tools:layout="@layout/fragment_home" > tools:layout="@layout/fragment_home" >
<action <action
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
</fragment> </fragment>
<fragment <fragment
android:id="@+id/navigation_video_Home" android:id="@+id/navigation_video_Home"
android:name="com.waytous.anticollision.ui.video.VideoHomeFragment" android:name="com.waytous.anticollision.ui.video.HomeVideoFragment"
android:label="fragment_video_home" android:label="fragment_video_home"
tools:layout="@layout/fragment_video_home" > tools:layout="@layout/fragment_video_home" >
<action <action
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment