[6.7.0] map ui union
This commit is contained in:
@@ -1,238 +0,0 @@
|
||||
package com.mogo.eagle.core.function.hmi.ui.widget
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.animation.AlphaAnimation
|
||||
import android.view.animation.Animation
|
||||
import android.view.animation.LinearInterpolator
|
||||
import android.widget.RelativeLayout
|
||||
import com.mogo.eagle.core.data.enums.WarningDirectionEnum
|
||||
import com.mogo.eagle.core.data.enums.WarningDirectionEnum.*
|
||||
import com.mogo.eagle.core.function.api.hmi.warning.IV2XEventListener
|
||||
import com.mogo.eagle.core.function.call.v2x.CallerV2XWarningListenerManager
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import kotlinx.android.synthetic.main.view_v2x_warning.view.*
|
||||
import java.util.concurrent.atomic.AtomicReference
|
||||
|
||||
|
||||
class V2XWarningView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : RelativeLayout(context, attrs, defStyleAttr), IV2XEventListener {
|
||||
|
||||
companion object {
|
||||
private const val ALL_CLOSE_TIMER = 5000L
|
||||
private const val TAG = "V2XWarningView"
|
||||
}
|
||||
|
||||
private val closeWarningTask: Runnable = Runnable {
|
||||
showWarning(ALERT_WARNING_NON)
|
||||
}
|
||||
|
||||
private val oldDirection = AtomicReference<WarningDirectionEnum>()
|
||||
|
||||
init {
|
||||
LayoutInflater.from(context).inflate(R.layout.view_v2x_warning, this, true)
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
CallerV2XWarningListenerManager.addListener(TAG, this)
|
||||
}
|
||||
|
||||
override fun show(v2xType: String, direction: WarningDirectionEnum, time: Long) {
|
||||
showWarning(direction, time)
|
||||
}
|
||||
|
||||
override fun dismiss(direction: WarningDirectionEnum) {
|
||||
dismissWarning(direction)
|
||||
}
|
||||
|
||||
/**
|
||||
* 展示指定方位上的红框预警
|
||||
* @param direction
|
||||
* @see WarningDirectionEnum
|
||||
*/
|
||||
private fun showWarning(direction: WarningDirectionEnum, time: Long = ALL_CLOSE_TIMER) {
|
||||
// 如果传入的不是关闭显示,则设置倒计时,定时关闭红框警示
|
||||
if (oldDirection.get() == direction) {
|
||||
removeCallbacks(closeWarningTask)
|
||||
postDelayed(closeWarningTask, time)
|
||||
return
|
||||
}
|
||||
if (direction != ALERT_WARNING_NON) {
|
||||
oldDirection.set(direction)
|
||||
removeCallbacks(closeWarningTask)
|
||||
postDelayed(closeWarningTask, time)
|
||||
}
|
||||
post {
|
||||
when (direction) {
|
||||
ALERT_WARNING_NON -> {
|
||||
// nothing
|
||||
}
|
||||
ALERT_WARNING_TOP -> {
|
||||
hmiWarningTopImg.visibility = View.VISIBLE
|
||||
hmiWarningRightImg.visibility = View.GONE
|
||||
hmiWarningBottomImg.visibility = View.GONE
|
||||
hmiWarningLeftImg.visibility = View.GONE
|
||||
hmiWarningLeftTopImg.visibility = View.GONE
|
||||
hmiWarningLeftBottomImg.visibility = View.GONE
|
||||
hmiWarningRightTopImg.visibility = View.GONE
|
||||
hmiWarningRightBottomImg.visibility = View.GONE
|
||||
}
|
||||
ALERT_WARNING_RIGHT -> {
|
||||
hmiWarningTopImg.visibility = View.GONE
|
||||
hmiWarningRightImg.visibility = View.VISIBLE
|
||||
hmiWarningBottomImg.visibility = View.GONE
|
||||
hmiWarningLeftImg.visibility = View.GONE
|
||||
hmiWarningLeftTopImg.visibility = View.GONE
|
||||
hmiWarningLeftBottomImg.visibility = View.GONE
|
||||
hmiWarningRightTopImg.visibility = View.GONE
|
||||
hmiWarningRightBottomImg.visibility = View.GONE
|
||||
}
|
||||
ALERT_WARNING_BOTTOM -> {
|
||||
hmiWarningTopImg.visibility = View.GONE
|
||||
hmiWarningRightImg.visibility = View.GONE
|
||||
hmiWarningBottomImg.visibility = View.VISIBLE
|
||||
hmiWarningLeftImg.visibility = View.GONE
|
||||
hmiWarningLeftTopImg.visibility = View.GONE
|
||||
hmiWarningLeftBottomImg.visibility = View.GONE
|
||||
hmiWarningRightTopImg.visibility = View.GONE
|
||||
hmiWarningRightBottomImg.visibility = View.GONE
|
||||
}
|
||||
ALERT_WARNING_LEFT -> {
|
||||
hmiWarningTopImg.visibility = View.GONE
|
||||
hmiWarningRightImg.visibility = View.GONE
|
||||
hmiWarningBottomImg.visibility = View.GONE
|
||||
hmiWarningLeftImg.visibility = View.VISIBLE
|
||||
hmiWarningLeftTopImg.visibility = View.GONE
|
||||
hmiWarningLeftBottomImg.visibility = View.GONE
|
||||
hmiWarningRightTopImg.visibility = View.GONE
|
||||
hmiWarningRightBottomImg.visibility = View.GONE
|
||||
}
|
||||
ALERT_WARNING_TOP_RIGHT -> {
|
||||
hmiWarningTopImg.visibility = View.GONE
|
||||
hmiWarningRightImg.visibility = View.GONE
|
||||
hmiWarningBottomImg.visibility = View.GONE
|
||||
hmiWarningLeftImg.visibility = View.GONE
|
||||
hmiWarningLeftTopImg.visibility = View.GONE
|
||||
hmiWarningLeftBottomImg.visibility = View.GONE
|
||||
hmiWarningRightTopImg.visibility = View.VISIBLE
|
||||
hmiWarningRightBottomImg.visibility = View.GONE
|
||||
}
|
||||
ALERT_WARNING_BOTTOM_RIGHT -> {
|
||||
hmiWarningTopImg.visibility = View.GONE
|
||||
hmiWarningRightImg.visibility = View.GONE
|
||||
hmiWarningBottomImg.visibility = View.GONE
|
||||
hmiWarningLeftImg.visibility = View.GONE
|
||||
hmiWarningLeftTopImg.visibility = View.GONE
|
||||
hmiWarningLeftBottomImg.visibility = View.GONE
|
||||
hmiWarningRightTopImg.visibility = View.GONE
|
||||
hmiWarningRightBottomImg.visibility = View.VISIBLE
|
||||
}
|
||||
ALERT_WARNING_BOTTOM_LEFT -> {
|
||||
hmiWarningTopImg.visibility = View.GONE
|
||||
hmiWarningRightImg.visibility = View.GONE
|
||||
hmiWarningBottomImg.visibility = View.GONE
|
||||
hmiWarningLeftImg.visibility = View.GONE
|
||||
hmiWarningLeftTopImg.visibility = View.GONE
|
||||
hmiWarningLeftBottomImg.visibility = View.VISIBLE
|
||||
hmiWarningRightTopImg.visibility = View.GONE
|
||||
hmiWarningRightBottomImg.visibility = View.GONE
|
||||
}
|
||||
ALERT_WARNING_TOP_LEFT -> {
|
||||
hmiWarningTopImg.visibility = View.GONE
|
||||
hmiWarningRightImg.visibility = View.GONE
|
||||
hmiWarningBottomImg.visibility = View.GONE
|
||||
hmiWarningLeftImg.visibility = View.GONE
|
||||
hmiWarningLeftTopImg.visibility = View.VISIBLE
|
||||
hmiWarningLeftBottomImg.visibility = View.GONE
|
||||
hmiWarningRightTopImg.visibility = View.GONE
|
||||
hmiWarningRightBottomImg.visibility = View.GONE
|
||||
}
|
||||
ALERT_WARNING_ALL -> { //todo problem
|
||||
hmiWarningTopImg.visibility = View.VISIBLE
|
||||
hmiWarningRightImg.visibility = View.GONE
|
||||
hmiWarningBottomImg.visibility = View.GONE
|
||||
hmiWarningLeftImg.visibility = View.GONE
|
||||
hmiWarningLeftTopImg.visibility = View.GONE
|
||||
hmiWarningLeftBottomImg.visibility = View.GONE
|
||||
hmiWarningRightTopImg.visibility = View.GONE
|
||||
hmiWarningRightBottomImg.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
if (direction == ALERT_WARNING_NON) {
|
||||
dismissWarning(ALERT_WARNING_ALL)
|
||||
} else {
|
||||
val alphaAnimation = AlphaAnimation(0f, 0.88f)
|
||||
alphaAnimation.duration = 600
|
||||
alphaAnimation.interpolator = LinearInterpolator()
|
||||
alphaAnimation.repeatCount = Animation.INFINITE
|
||||
alphaAnimation.repeatMode = Animation.REVERSE
|
||||
startAnimation(alphaAnimation)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun dismissWarning(direction: WarningDirectionEnum) {
|
||||
if (direction == ALERT_WARNING_NON) {
|
||||
return
|
||||
}
|
||||
removeCallbacks(closeWarningTask)
|
||||
post {
|
||||
when (direction) {
|
||||
ALERT_WARNING_TOP -> {
|
||||
hmiWarningRightTopImg.visibility = View.GONE
|
||||
}
|
||||
ALERT_WARNING_RIGHT -> {
|
||||
hmiWarningRightImg.visibility = View.GONE
|
||||
}
|
||||
ALERT_WARNING_BOTTOM -> {
|
||||
hmiWarningBottomImg.visibility = View.GONE
|
||||
}
|
||||
ALERT_WARNING_LEFT -> {
|
||||
hmiWarningLeftImg.visibility = View.GONE
|
||||
}
|
||||
ALERT_WARNING_TOP_RIGHT -> {
|
||||
hmiWarningRightTopImg.visibility = View.GONE
|
||||
}
|
||||
ALERT_WARNING_BOTTOM_RIGHT -> {
|
||||
hmiWarningRightBottomImg.visibility = View.GONE
|
||||
}
|
||||
ALERT_WARNING_BOTTOM_LEFT -> {
|
||||
hmiWarningLeftBottomImg.visibility = View.GONE
|
||||
}
|
||||
ALERT_WARNING_TOP_LEFT -> {
|
||||
hmiWarningLeftTopImg.visibility = View.GONE
|
||||
}
|
||||
ALERT_WARNING_ALL -> {
|
||||
hmiWarningTopImg.visibility = View.GONE
|
||||
hmiWarningRightImg.visibility = View.GONE
|
||||
hmiWarningBottomImg.visibility = View.GONE
|
||||
hmiWarningLeftImg.visibility = View.GONE
|
||||
hmiWarningLeftTopImg.visibility = View.GONE
|
||||
hmiWarningLeftBottomImg.visibility = View.GONE
|
||||
hmiWarningRightTopImg.visibility = View.GONE
|
||||
hmiWarningRightBottomImg.visibility = View.GONE
|
||||
}
|
||||
else -> {
|
||||
CallerLogger.d("$M_HMI$TAG", "Not Support Direction")
|
||||
}
|
||||
}
|
||||
clearAnimation()
|
||||
this.oldDirection.set(null)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
CallerV2XWarningListenerManager.removeListener(TAG)
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_19"
|
||||
android:layout_marginTop="@dimen/dp_76"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
@@ -23,14 +23,13 @@
|
||||
android:layout_height="270dp"
|
||||
android:layout_marginStart="1230dp"
|
||||
android:layout_marginTop="1204dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:bottomPadding="160"
|
||||
app:carDrawable="@drawable/taxt_u_p_map_car"
|
||||
app:compassDrawable="@drawable/taxt_u_p_map_car_light"
|
||||
app:startPointDrawable="@drawable/taxi_overmap_startpoint"
|
||||
app:endPointDrawable="@drawable/taxi_overmap_endpoint"
|
||||
app:globalPathColor="#39BA90"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:leftPadding="70"
|
||||
app:mapStyleExtraPath="over_view_style_extra.data"
|
||||
app:mapStylePath="over_view_style.data"
|
||||
@@ -38,6 +37,7 @@
|
||||
app:rightPadding="70"
|
||||
app:roadRangeDrawable="@drawable/taxi_overmap_road_range"
|
||||
app:roadTrajectoryDrawable="@drawable/taxi_orvermap_road_trajectory"
|
||||
app:startPointDrawable="@drawable/taxi_overmap_startpoint"
|
||||
app:topPadding="70" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.viewport.VisualAngleToggleView
|
||||
@@ -49,24 +49,34 @@
|
||||
app:layout_constraintBottom_toTopOf="@+id/shadowView"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<!--Vip车辆标志-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.VipIdentificationView
|
||||
android:layout_width="@dimen/module_vip_width"
|
||||
android:layout_height="@dimen/module_vip_height"
|
||||
android:layout_marginStart="@dimen/dp_640"
|
||||
android:layout_marginTop="@dimen/dp_147"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.mofang.MoFangStatusView
|
||||
android:id="@+id/mofangStatusView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_goneMarginEnd="@dimen/dp_50"
|
||||
android:layout_marginBottom="@dimen/dp_30"
|
||||
app:layout_constraintBottom_toTopOf="@+id/shadowView"
|
||||
app:layout_constraintEnd_toStartOf="@+id/visualAngleToggle" />
|
||||
app:layout_constraintEnd_toStartOf="@+id/visualAngleToggle"
|
||||
app:layout_goneMarginEnd="@dimen/dp_50" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.SingleTrafficLightView
|
||||
android:id="@+id/viewTrafficLightVr"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="@dimen/hmi_traffic_light_layout_margin_top"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.FusionTrafficLightView
|
||||
android:layout_width="wrap_content"
|
||||
@@ -78,14 +88,74 @@
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--红绿灯提醒-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.notice.traffic.TrafficLightPromptView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_350"
|
||||
android:layout_marginEnd="@dimen/dp_50"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:promptUser="driver" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.GreenWaveView
|
||||
android:layout_width="@dimen/dp_580"
|
||||
android:layout_height="@dimen/dp_129"
|
||||
android:layout_marginTop="@dimen/dp_71"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintEnd_toEndOf="@+id/viewTrafficLightVr"
|
||||
app:layout_constraintTop_toBottomOf="@+id/viewTrafficLightVr"
|
||||
app:layout_goneMarginEnd="40dp"
|
||||
app:layout_goneMarginTop="@dimen/dp_236" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.msgbox.MsgBoxToastView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_53"
|
||||
android:layout_marginEnd="@dimen/dp_60"
|
||||
/>
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!-- 事件弹框 -->
|
||||
<com.mogo.eagle.core.function.hmi.ui.v2n.RoadV2NEventWindowView
|
||||
android:id="@+id/roadV2NEventWindowView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_39"
|
||||
android:layout_marginEnd="@dimen/dp_23"
|
||||
android:visibility="visible"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!-- 前方路况探查 -->
|
||||
<com.mogo.eagle.core.function.view.RoadCrossRoamView
|
||||
android:layout_width="@dimen/dp_654"
|
||||
android:layout_height="@dimen/dp_790"
|
||||
android:layout_marginTop="@dimen/dp_39"
|
||||
android:layout_marginEnd="@dimen/dp_4"
|
||||
android:visibility="visible"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!-- 地图marker点击触发路侧直播 -->
|
||||
<com.mogo.eagle.core.function.hmi.ui.camera.RoadCrossLiveView
|
||||
android:layout_width="@dimen/dp_800"
|
||||
android:layout_height="@dimen/dp_560"
|
||||
android:layout_marginTop="@dimen/dp_333"
|
||||
android:layout_marginEnd="@dimen/dp_50"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--pnc行为决策-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.vehicle.PncActionsView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_100"
|
||||
android:layout_marginBottom="@dimen/dp_110"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<View
|
||||
android:id="@+id/shadowView"
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
<!--四个方向,碰撞预警-->
|
||||
<!--上方-->
|
||||
<ImageView
|
||||
android:id="@+id/hmiWarningTopImg"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_328"
|
||||
android:background="@drawable/module_hmi_warning_bkg_top"
|
||||
android:visibility="gone"
|
||||
tools:visibility="invisible" />
|
||||
|
||||
<!--左方-->
|
||||
<ImageView
|
||||
android:id="@+id/hmiWarningLeftImg"
|
||||
android:layout_width="@dimen/dp_328"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/module_hmi_warning_bkg_left"
|
||||
android:visibility="gone"
|
||||
tools:visibility="invisible" />
|
||||
|
||||
<!--左上角-->
|
||||
<ImageView
|
||||
android:id="@+id/hmiWarningLeftTopImg"
|
||||
android:layout_width="@dimen/dp_1600"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/top_left"
|
||||
android:visibility="gone"
|
||||
tools:visibility="invisible" />
|
||||
|
||||
<!--左下角-->
|
||||
<ImageView
|
||||
android:id="@+id/hmiWarningLeftBottomImg"
|
||||
android:layout_width="@dimen/dp_1600"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/bottom_left"
|
||||
android:visibility="gone"
|
||||
tools:visibility="invisible" />
|
||||
|
||||
<!--右方-->
|
||||
<ImageView
|
||||
android:id="@+id/hmiWarningRightImg"
|
||||
android:layout_width="@dimen/dp_328"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="end"
|
||||
android:background="@drawable/module_hmi_warning_bkg_right"
|
||||
android:visibility="gone"
|
||||
tools:visibility="invisible" />
|
||||
|
||||
<!--右上角-->
|
||||
<ImageView
|
||||
android:id="@+id/hmiWarningRightTopImg"
|
||||
android:layout_width="@dimen/dp_1600"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="end"
|
||||
android:background="@drawable/module_hmi_warning_bkg_right_top"
|
||||
android:visibility="gone"
|
||||
tools:visibility="invisible" />
|
||||
|
||||
<!--右下角-->
|
||||
<ImageView
|
||||
android:id="@+id/hmiWarningRightBottomImg"
|
||||
android:layout_width="@dimen/dp_1600"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="end"
|
||||
android:background="@drawable/bottom_right"
|
||||
android:visibility="gone"
|
||||
tools:visibility="invisible" />
|
||||
|
||||
<!--下方-->
|
||||
<ImageView
|
||||
android:id="@+id/hmiWarningBottomImg"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_328"
|
||||
android:layout_gravity="bottom"
|
||||
android:background="@drawable/module_hmi_warning_bkg_bottom"
|
||||
android:visibility="gone"
|
||||
tools:visibility="invisible" />
|
||||
</FrameLayout>
|
||||
Reference in New Issue
Block a user