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

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

2.优化地图相关类依赖关系
parent 2c0c90f1
......@@ -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.style
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.generated.PointAnnotationManager
import com.mapbox.maps.plugin.annotation.generated.PointAnnotationOptions
......@@ -78,7 +77,7 @@ import kotlinx.coroutines.flow.last
import kotlinx.coroutines.launch
import java.math.BigDecimal
open class BaseFragment : Fragment() {
open class BaseMapFragment : Fragment() {
private val mapModel: MainViewModel by viewModels {
MainViewModel.MainViewModelFactory(MainRepository(requireContext()))
......@@ -142,15 +141,15 @@ open class BaseFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
layoutMapBoxBinding = LayoutMapBoxBinding.inflate(LayoutInflater.from(requireContext()))
}
fun setupMapBox() {
LogUtils.d("setupMapBox")
layoutMapBoxBinding.mapView.run {
logo.enabled = false
compass.enabled = false
attribution.enabled = false
}
}
fun setupMapBox() {
LogUtils.d("setupMapBox")
mapboxMap = layoutMapBoxBinding.mapView.getMapboxMap().also {
it.setCamera(cameraOptions)
}
......
......@@ -8,18 +8,17 @@ import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.viewModels
import androidx.lifecycle.ViewModelProvider
import com.blankj.utilcode.util.LogUtils
import com.mapbox.maps.MapView
import com.waytous.anticollision.R
import com.waytous.anticollision.databinding.FragmentHomeBinding
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.view.MoreFeaturesPopup
import com.waytous.anticollision.ui.view.WorkStatusEditPopup
import com.waytous.anticollision.utils.setTextSize
class HomeFragment : BaseFragment() {
class HomeNoVideoFragment : BaseMapFragment() {
private var _binding: FragmentHomeBinding? = null
......@@ -33,8 +32,6 @@ class HomeFragment : BaseFragment() {
private lateinit var workStatusEditPopup: WorkStatusEditPopup
private val mapModel: MainViewModel by viewModels {
MainViewModel.MainViewModelFactory(MainRepository(requireContext()))
}
......@@ -59,9 +56,8 @@ class HomeFragment : BaseFragment() {
it.maskOffsetY = 20
it.setBackgroundColor(R.color.color_99000000)
}
LogUtils.d("HomeFragment.onCreateView")
setupMapBox()
binding.defaultMapLayout.addView(layoutMapBoxBinding.root)
binding.noVideoMapWrapper.addView(layoutMapBoxBinding.root)
setTodayCarriedNum(18)
setTodayIllegallyNum(1)
binding.workStatusEdit.setOnClickListener {
......@@ -87,7 +83,7 @@ class HomeFragment : BaseFragment() {
override fun onDestroyView() {
super.onDestroyView()
binding.defaultMapLayout.removeView(layoutMapBoxBinding.root)
binding.noVideoMapWrapper.removeView(layoutMapBoxBinding.root)
_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 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.BaseFragment">
tools:context=".ui.BaseMapFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
......
......@@ -46,7 +46,7 @@
app:layout_constraintTop_toBottomOf="@id/collectRadioGroup"
app:layout_constraintStart_toStartOf="@id/collectRadioGroup"/>
<include
android:id="@+id/defaultMapLayout"
android:id="@+id/noVideoMapWrapper"
layout="@layout/layout_map_box"
android:layout_width="0dp"
android:layout_height="0dp"
......
......@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.home.HomeFragment">
tools:context=".ui.home.HomeNoVideoFragment">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/defaultWorkingAvatar"
......@@ -280,10 +280,10 @@
android:clickable="true"
android:textColor="@drawable/color_text_btn"
app:layout_constraintTop_toTopOf="@id/defaultToggleMore"
app:layout_constraintEnd_toEndOf="@id/defaultMapLayout" />
app:layout_constraintEnd_toEndOf="@id/noVideoMapWrapper" />
<FrameLayout
android:id="@+id/defaultMapLayout"
android:id="@+id/noVideoMapWrapper"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginEnd="16dp"
......
......@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.video.VideoHomeFragment">
tools:context=".ui.video.HomeVideoFragment">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/workingAvatar"
......@@ -94,9 +94,8 @@
app:layout_constraintTop_toTopOf="@id/dispatchedCommTime"
tools:ignore="SmallSp" />
<include
android:id="@+id/videoHomeMapLayout"
layout="@layout/layout_map_box"
<FrameLayout
android:id="@+id/videoMapWrapper"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="18dp"
......
......@@ -7,7 +7,7 @@
<fragment
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"
tools:layout="@layout/fragment_home" >
<action
......@@ -19,7 +19,7 @@
</fragment>
<fragment
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"
tools:layout="@layout/fragment_video_home" >
<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