[3.4.0][Feat]新增蘑菇咨询功能
This commit is contained in:
@@ -20,15 +20,7 @@ import com.mogo.och.taxi.passenger.presenter.BaseTaxiPassengerPresenter
|
||||
import com.mogo.och.taxi.passenger.ui.bottom.BottomBar
|
||||
import com.mogo.och.taxi.passenger.ui.arrived.ArrivedView
|
||||
import com.mogo.och.taxi.passenger.ui.startautopilot.StartAutopilotView
|
||||
import kotlinx.android.synthetic.main.taxi_p_base_fragment.aciv_xiaozhi_normal
|
||||
import kotlinx.android.synthetic.main.taxi_p_base_fragment.bottom
|
||||
import kotlinx.android.synthetic.main.taxi_p_base_fragment.ck_setting
|
||||
import kotlinx.android.synthetic.main.taxi_p_base_fragment.itinerary
|
||||
import kotlinx.android.synthetic.main.taxi_p_base_fragment.mapBizView
|
||||
import kotlinx.android.synthetic.main.taxi_p_base_fragment.overMapView
|
||||
import kotlinx.android.synthetic.main.taxi_p_base_fragment.pcnActionView
|
||||
import kotlinx.android.synthetic.main.taxi_p_base_fragment.romaPView
|
||||
import kotlinx.android.synthetic.main.taxi_p_base_fragment.rv_location_center
|
||||
import kotlinx.android.synthetic.main.taxi_p_base_fragment.*
|
||||
import java.lang.ref.WeakReference
|
||||
|
||||
/**
|
||||
@@ -93,6 +85,7 @@ class TaxiPassengerBaseFragment() :
|
||||
rv_location_center.visibility = View.VISIBLE
|
||||
pcnActionView.visibility = View.VISIBLE
|
||||
CallerHmiManager.showTrafficLightView()
|
||||
infoVideoView.visibility = View.GONE
|
||||
}
|
||||
BottomBar.SelectView.OVERMAPVIEW -> {
|
||||
overMapView.visibility = View.VISIBLE
|
||||
@@ -103,6 +96,7 @@ class TaxiPassengerBaseFragment() :
|
||||
rv_location_center.visibility = View.VISIBLE
|
||||
pcnActionView.visibility = View.VISIBLE
|
||||
CallerHmiManager.showTrafficLightView()
|
||||
infoVideoView.visibility = View.GONE
|
||||
}
|
||||
BottomBar.SelectView.VIDEO -> {
|
||||
overMapView.visibility = View.GONE
|
||||
@@ -113,6 +107,7 @@ class TaxiPassengerBaseFragment() :
|
||||
rv_location_center.visibility = View.GONE
|
||||
pcnActionView.visibility = View.GONE
|
||||
CallerHmiManager.hideTrafficLightView()
|
||||
infoVideoView.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,214 @@
|
||||
package com.mogo.och.taxi.passenger.ui.video
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.widget.FrameLayout
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.mogo.och.taxi.passenger.R
|
||||
import com.mogo.och.taxi.passenger.bean.TaxiPassengerVideoPlay
|
||||
import com.mogo.och.taxi.passenger.ui.video.layoutmanage.CarouselLayoutManager
|
||||
import com.mogo.och.taxi.passenger.ui.video.layoutmanage.CarouselZoomPostLayoutListener
|
||||
import com.mogo.och.taxi.passenger.ui.video.layoutmanage.CenterScrollListener
|
||||
import com.mogo.och.taxi.passenger.widget.ConsultVideoPlayer
|
||||
import com.mogo.och.taxi.passenger.widget.indicator.IndicatorView
|
||||
import com.mogo.och.taxi.passenger.widget.indicator.enums.IndicatorOrientation
|
||||
import com.mogo.och.taxi.passenger.widget.indicator.enums.IndicatorSlideMode
|
||||
import com.mogo.och.taxi.passenger.widget.indicator.enums.IndicatorStyle
|
||||
import com.shuyu.gsyvideoplayer.video.base.GSYVideoView
|
||||
import kotlin.math.floor
|
||||
|
||||
/**
|
||||
* @author ChenFufeng
|
||||
* 蘑菇资讯视频
|
||||
*/
|
||||
internal class InfoVideoView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : FrameLayout(
|
||||
context,
|
||||
attrs,
|
||||
defStyleAttr
|
||||
) {
|
||||
|
||||
companion object{
|
||||
private const val TAG = "VideoView"
|
||||
}
|
||||
|
||||
init {
|
||||
LayoutInflater.from(context).inflate(R.layout.taxi_p_mogo_video_layout, this, true)
|
||||
initView()
|
||||
}
|
||||
|
||||
private var rvVideoPlaylist: RecyclerView? = null
|
||||
private lateinit var indicatorView: IndicatorView
|
||||
private lateinit var clContain: ConstraintLayout
|
||||
|
||||
private val arrayListOf by lazy {
|
||||
arrayListOf<TaxiPassengerVideoPlay>().apply {
|
||||
add(TaxiPassengerVideoPlay(
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708596763/全车型混剪增加红旗车队.m4v",
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969511280/车队.png",
|
||||
"蘑菇车联覆盖生活的方方面面"
|
||||
))
|
||||
add(TaxiPassengerVideoPlay(
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708554279/红旗车队.m4v",
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969553174/红旗重新排版.png",
|
||||
"蘑菇车联之红旗车队"
|
||||
))
|
||||
add(
|
||||
com.mogo.och.taxi.passenger.bean.TaxiPassengerVideoPlay(
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708499497/大运会合作解说版.m4v",
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969536177/大运会.png",
|
||||
"蘑菇车联牵手成都大运会"
|
||||
)
|
||||
)
|
||||
add(
|
||||
TaxiPassengerVideoPlay(
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708409810/20210610重新排版3屏.m4v",
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969579713/三屏.png",
|
||||
"多视角体验蘑菇车联自动驾驶"
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun exitFullScreenMode() {
|
||||
val carouselLayoutManager = rvVideoPlaylist?.layoutManager as CarouselLayoutManager
|
||||
val (centerItemPosition: Int, player) = getPlayer(carouselLayoutManager)
|
||||
player?.let {
|
||||
it.exitFullScreenMode()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
configPage()
|
||||
}
|
||||
|
||||
override fun onVisibilityChanged(changedView: View, visibility: Int) {
|
||||
super.onVisibilityChanged(changedView, visibility)
|
||||
val carouselLayoutManager = rvVideoPlaylist?.layoutManager as CarouselLayoutManager
|
||||
val (centerItemPosition: Int, player) = getPlayer(carouselLayoutManager)
|
||||
when (visibility) {
|
||||
View.VISIBLE -> {
|
||||
player?.let {
|
||||
if (!player.isIfCurrentIsFullscreen) {
|
||||
when (player.currentState) {
|
||||
GSYVideoView.CURRENT_STATE_PAUSE -> {
|
||||
player.onVideoResume(false)
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
player?.let {
|
||||
if (!player.isIfCurrentIsFullscreen) {
|
||||
player.onVideoPause()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun initView() {
|
||||
rvVideoPlaylist = findViewById(R.id.infoVideoPlaylist)
|
||||
indicatorView = findViewById(R.id.infoIndicatorView)
|
||||
clContain = findViewById(R.id.infoContainer)
|
||||
}
|
||||
|
||||
private fun configPage() {
|
||||
// FullVideoUtils.dismissOverlayView(true)
|
||||
initData()
|
||||
}
|
||||
|
||||
private fun initData() {
|
||||
val carouselLayoutManager = CarouselLayoutManager(CarouselLayoutManager.HORIZONTAL, true)
|
||||
carouselLayoutManager.setPostLayoutListener(CarouselZoomPostLayoutListener())
|
||||
carouselLayoutManager.maxVisibleItems = 1
|
||||
indicatorView.notifyDataChanged(arrayListOf.size)
|
||||
indicatorView.setSlideMode(IndicatorSlideMode.SCALE)
|
||||
indicatorView.setOrientation(IndicatorOrientation.INDICATOR_HORIZONTAL)
|
||||
indicatorView.setIndicatorStyle(IndicatorStyle.ROUND_RECT)
|
||||
indicatorView.setSliderColor(
|
||||
Color.parseColor("#80000000"), Color.parseColor("#3FACFD"),
|
||||
Color.parseColor("#3FACFD")
|
||||
)
|
||||
indicatorView.setSliderWidth(9f, 54f)
|
||||
indicatorView.setSliderHeight(9f)
|
||||
indicatorView.setSliderGap(36f)
|
||||
rvVideoPlaylist?.addOnScrollListener(object : CenterScrollListener() {
|
||||
var prePlayerPosition = 0
|
||||
override fun pageSelect(recyclerView: RecyclerView?, newState: Int) {
|
||||
//播放视频
|
||||
val (centerItemPosition: Int, player) = getPlayer(carouselLayoutManager)
|
||||
indicatorView.onPageSelected(centerItemPosition)
|
||||
if (player is ConsultVideoPlayer) {
|
||||
if (prePlayerPosition != centerItemPosition) {
|
||||
if (player.currentState == GSYVideoView.CURRENT_STATE_PAUSE) {
|
||||
player.onVideoReset()
|
||||
}
|
||||
val playerHolder =
|
||||
carouselLayoutManager.findViewByPosition(prePlayerPosition)
|
||||
val prePlayer =
|
||||
playerHolder?.findViewById<ConsultVideoPlayer>(R.id.video_item_player)
|
||||
prePlayer?.onVideoReset()
|
||||
val taxiPassengerVideoPlay = arrayListOf[centerItemPosition]
|
||||
} else {
|
||||
player.onVideoResume(false)
|
||||
}
|
||||
}
|
||||
prePlayerPosition = centerItemPosition
|
||||
}
|
||||
|
||||
override fun pageStop() {
|
||||
val (_: Int, player) = getPlayer(carouselLayoutManager)
|
||||
if (player is ConsultVideoPlayer) {
|
||||
player.onVideoPause()
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
carouselLayoutManager.addOnDargAutoDiffListener { adapterPosition, currentPosition ->
|
||||
val fl = adapterPosition - floor(adapterPosition)
|
||||
var currentIndex = currentPosition
|
||||
if (fl > 0.5) {
|
||||
if (currentPosition == 0) {
|
||||
currentIndex = rvVideoPlaylist?.adapter!!.itemCount - 1
|
||||
} else {
|
||||
currentIndex -= 1
|
||||
}
|
||||
}
|
||||
indicatorView.onPageScrolled(currentIndex, fl, 0)
|
||||
}
|
||||
val recyclerVideoAdapter = RecyclerVideoAdapter(context, arrayListOf, rvVideoPlaylist)
|
||||
recyclerVideoAdapter.setOnThumbImageClilckListener {
|
||||
val (_: Int, player) = getPlayer(carouselLayoutManager)
|
||||
if (player is ConsultVideoPlayer) {
|
||||
player.onVideoReset()
|
||||
player.thumbImageViewLayout.visibility = View.VISIBLE
|
||||
}
|
||||
rvVideoPlaylist?.smoothScrollToPosition(it)
|
||||
}
|
||||
rvVideoPlaylist?.layoutManager = carouselLayoutManager
|
||||
rvVideoPlaylist?.setHasFixedSize(true)
|
||||
rvVideoPlaylist?.adapter = recyclerVideoAdapter
|
||||
}
|
||||
|
||||
private fun getPlayer(carouselLayoutManager: CarouselLayoutManager): Pair<Int, ConsultVideoPlayer?> {
|
||||
val centerItemPosition: Int = carouselLayoutManager.centerItemPosition
|
||||
val playerHolder = carouselLayoutManager.findViewByPosition(centerItemPosition)
|
||||
val player = playerHolder?.findViewById<ConsultVideoPlayer>(R.id.video_item_player)
|
||||
return Pair(centerItemPosition, player)
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
}
|
||||
}
|
||||
@@ -52,7 +52,7 @@ public class RecyclerVideoAdapter extends RecyclerView.Adapter<RecyclerItemVideo
|
||||
@NonNull
|
||||
@Override
|
||||
public RecyclerItemVideoHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
View v = LayoutInflater.from(context).inflate(R.layout.list_video_item_normal, parent, false);
|
||||
View v = LayoutInflater.from(context).inflate(R.layout.list_video_item_light, parent, false);
|
||||
RecyclerItemVideoHolder recyclerItemVideoHolder = new RecyclerItemVideoHolder(context, v);
|
||||
recyclerItemVideoHolder.setIsRecyclable(false);
|
||||
return recyclerItemVideoHolder;
|
||||
|
||||
@@ -96,9 +96,9 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer {
|
||||
val background = layoutBottom.background as GradientDrawable
|
||||
val x = arrayOf(12f, 12f,12f, 12f,12f, 12f,12f, 12f)
|
||||
background.cornerRadii = x.toFloatArray()
|
||||
|
||||
layoutBottom.background = background
|
||||
|
||||
fullscreenButton.setPadding(92,0,92,0)
|
||||
titleTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, 50f)
|
||||
val layoutParams1 = titleTextView.layoutParams as ConstraintLayout.LayoutParams
|
||||
layoutParams1.marginStart = 80
|
||||
@@ -157,15 +157,39 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer {
|
||||
override fun changeUiToNormal() {
|
||||
super.changeUiToNormal()
|
||||
setViewShowState(fullscreenButton, INVISIBLE)
|
||||
// TODO:("显示顶部View")
|
||||
}
|
||||
|
||||
override fun changeUiToPreparingShow() {
|
||||
super.changeUiToPreparingShow()
|
||||
// TODO:("显示顶部View")
|
||||
}
|
||||
|
||||
override fun changeUiToPlayingShow() {
|
||||
super.changeUiToPlayingShow()
|
||||
setViewShowState(fullscreenButton, VISIBLE)
|
||||
// TODO:("显示顶部View")
|
||||
}
|
||||
|
||||
override fun changeUiToPauseShow() {
|
||||
super.changeUiToPauseShow()
|
||||
// TODO:("显示顶部View")
|
||||
}
|
||||
|
||||
override fun changeUiToPlayingBufferingShow() {
|
||||
super.changeUiToPlayingBufferingShow()
|
||||
// TODO:("显示顶部View")
|
||||
}
|
||||
|
||||
override fun changeUiToCompleteShow() {
|
||||
super.changeUiToCompleteShow()
|
||||
// TODO:("显示顶部View")
|
||||
}
|
||||
|
||||
public override fun hideAllWidget() {
|
||||
super.hideAllWidget()
|
||||
// TODO:("隐藏顶部View")
|
||||
|
||||
}
|
||||
|
||||
override fun setProgressAndTime(
|
||||
@@ -297,11 +321,16 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer {
|
||||
override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
|
||||
super.onSizeChanged(w, h, oldw, oldh)
|
||||
if (!mIfCurrentIsFullscreen) {
|
||||
this.outlineProvider = TextureVideoViewOutlineProvider(38F)
|
||||
this.outlineProvider = TextureVideoViewOutlineProvider(12F)
|
||||
this.clipToOutline = true
|
||||
}
|
||||
}
|
||||
|
||||
fun exitFullScreenMode() {
|
||||
fullVideoPlayer?.let { clearFullscreenLayout(it) }
|
||||
FullVideoUtils.dismissOverlayView(false)
|
||||
}
|
||||
|
||||
private fun startWindowFullscreenOwn(context:Context){
|
||||
val gsyBaseVideoPlayer = startWindowFullscreen(context)
|
||||
gsyBaseVideoPlayer?.let {
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 749 B After Width: | Height: | Size: 2.3 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 4.0 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 5.4 MiB |
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="#59141A2D"/>
|
||||
<solid android:color="#58141A2D"/>
|
||||
<corners android:radius="8dp"/>
|
||||
</shape>
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<corners
|
||||
android:bottomLeftRadius="36dp"
|
||||
android:bottomRightRadius="36dp"
|
||||
android:topLeftRadius="36dp"
|
||||
android:topRightRadius="36dp" />
|
||||
<solid android:color="#ADFFFFFF" />
|
||||
</shape>
|
||||
@@ -3,22 +3,22 @@
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:id="@android:id/background">
|
||||
<shape>
|
||||
<corners android:radius="5dp"/>
|
||||
<solid android:color="#99D8D8D8" />
|
||||
<corners android:radius="4dp"/>
|
||||
<solid android:color="#26FFFFFF" />
|
||||
</shape>
|
||||
</item>
|
||||
<item android:id="@android:id/secondaryProgress">
|
||||
<clip>
|
||||
<shape>
|
||||
<corners android:radius="5dp"/>
|
||||
<solid android:color="#66FFFFFF" />
|
||||
<corners android:radius="4dp"/>
|
||||
<solid android:color="#4DFFFFFF" />
|
||||
</shape>
|
||||
</clip>
|
||||
</item>
|
||||
<item android:id="@android:id/progress">
|
||||
<scale android:scaleWidth="100%">
|
||||
<shape android:shape="rectangle">
|
||||
<corners android:radius="5dp"/>
|
||||
<corners android:radius="4dp"/>
|
||||
<gradient android:startColor="#303CFF" android:centerColor="#216CFF" android:endColor="#25C1F9"/>
|
||||
</shape>
|
||||
</scale>
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:background="@drawable/bg_taxi_p_video_light_bg_shape"
|
||||
android:layout_width="1620dp"
|
||||
android:layout_height="940dp"
|
||||
android:paddingTop="57dp"
|
||||
android:paddingBottom="57dp"
|
||||
android:paddingStart="61dp"
|
||||
android:paddingEnd="61dp"
|
||||
>
|
||||
|
||||
<com.mogo.och.taxi.passenger.widget.ConsultVideoPlayer
|
||||
android:id="@+id/video_item_player"
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
</FrameLayout>
|
||||
|
||||
@@ -15,6 +15,12 @@
|
||||
app:mapStylePath="style.data"
|
||||
/>
|
||||
|
||||
<!-- 视频播放View -->
|
||||
<com.mogo.och.taxi.passenger.ui.video.InfoVideoView
|
||||
android:id="@+id/infoVideoView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<!-- 高精地图 -->
|
||||
<com.mogo.eagle.core.function.view.MapBizView
|
||||
android:id="@+id/mapBizView"
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
<?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"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/infoContainer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/taxi_p_video_light_bg"
|
||||
tools:ignore="MissingDefaultResource">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/infoVideoPlaylist"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="991dp"
|
||||
android:orientation="horizontal"
|
||||
android:layout_marginTop="284dp"
|
||||
android:layout_marginStart="24dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<com.mogo.och.taxi.passenger.widget.indicator.IndicatorView
|
||||
android:id="@+id/infoIndicatorView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/infoVideoPlaylist"
|
||||
android:layout_marginTop="67dp"
|
||||
app:vpi_orientation="horizontal"
|
||||
app:vpi_slide_mode="scale"
|
||||
app:vpi_slider_checked_color="@color/taxi_p_traffic_light_red_color_up"
|
||||
app:vpi_slider_normal_color="@color/taxi_p_check_keyboard_input_field"
|
||||
app:vpi_slider_radius="@dimen/dp_20"
|
||||
app:vpi_style="round_rect" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -45,10 +45,11 @@
|
||||
android:id="@+id/fullscreen"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingEnd="40dp"
|
||||
android:paddingStart="93dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_width="69dp"
|
||||
android:layout_height="69dp"
|
||||
android:layout_marginEnd="49dp"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@drawable/taxi_p_change_full" />
|
||||
|
||||
<TextView
|
||||
@@ -71,8 +72,8 @@
|
||||
android:background="@drawable/bg_taxi_p_video_bg"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_marginLeft="148dp"
|
||||
android:layout_marginRight="148dp"
|
||||
android:layout_marginLeft="150dp"
|
||||
android:layout_marginRight="150dp"
|
||||
android:layout_marginBottom="51dp"
|
||||
android:layout_height="99dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent">
|
||||
|
||||
Reference in New Issue
Block a user