[8.4.0]
[b4] [高级地图展示 速度、转向灯和自驾状态]
@@ -84,25 +84,25 @@ class B4StatusView : AppCompatTextView, ICommonCallback, IReceivedMsgListener {
|
||||
"数据刷新来源=$sourceStr 自动驾驶状态=${autopilotState} 订单状态=${CommonModel.inOrder} 美化模式状态=${FunctionBuildConfig.isDemoMode} B2美化模式状态=${FunctionBuildConfig.isB2DemoMode} "
|
||||
)
|
||||
if (IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING == autopilotState) {
|
||||
return R.drawable.b4_status_parallel
|
||||
return R.color.b4_9A2EFF
|
||||
}
|
||||
|
||||
// 处理非平行驾驶状态的情况
|
||||
return when {
|
||||
// 无订单的情况
|
||||
!CommonModel.inOrder -> {
|
||||
R.drawable.b4_status_basic
|
||||
return R.color.b4_333333
|
||||
}
|
||||
// 有订单,且美化状态和b2美化状态任意开着
|
||||
CommonModel.inOrder && (FunctionBuildConfig.isDemoMode || FunctionBuildConfig.isB2DemoMode) -> {
|
||||
R.drawable.b4_status_order_auto
|
||||
R.color.b4_2EACFF
|
||||
}
|
||||
// 有订单,且美化状态和b2美化状态都关着
|
||||
CommonModel.inOrder && !FunctionBuildConfig.isDemoMode && !FunctionBuildConfig.isB2DemoMode -> {
|
||||
if (autopilotState == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) R.drawable.b4_status_order_auto else R.drawable.b4_status_basic
|
||||
if (autopilotState == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) R.color.b4_2EACFF else R.color.b4_333333
|
||||
}
|
||||
// 覆盖所有可能的情况
|
||||
else -> R.drawable.b4_status_basic
|
||||
else -> R.color.b4_333333
|
||||
}
|
||||
}
|
||||
|
||||
@@ -110,7 +110,7 @@ class B4StatusView : AppCompatTextView, ICommonCallback, IReceivedMsgListener {
|
||||
BizLoopManager.runInMainThread {
|
||||
context?.let {
|
||||
setTextColor(ContextCompat.getColor(it, R.color.common_FFFFFF))
|
||||
background = ContextCompat.getDrawable(it, getStateIcon(source))
|
||||
setBackgroundColor(getStateIcon(source))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.mogo.och.shuttle.weaknet.passenger.ui.map.autopilot
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import com.mogo.och.shuttle.weaknet.passenger.R
|
||||
|
||||
class B4AutopilotView : ConstraintLayout {
|
||||
|
||||
private val TAG = "B4AutopilotView"
|
||||
|
||||
constructor(context: Context) : super(context)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes)
|
||||
|
||||
private fun initView() {
|
||||
LayoutInflater.from(context).inflate(R.layout.b4_autopilot, this, true)
|
||||
}
|
||||
|
||||
override fun onVisibilityAggregated(isVisible: Boolean) {
|
||||
super.onVisibilityAggregated(isVisible)
|
||||
}
|
||||
|
||||
init {
|
||||
try {
|
||||
initView()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,180 @@
|
||||
package com.mogo.och.shuttle.weaknet.passenger.ui.map.autopilot.light
|
||||
|
||||
import android.animation.AnimatorSet
|
||||
import android.animation.ObjectAnimator
|
||||
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.widget.ImageView
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import com.mogo.eagle.core.function.api.datacenter.union.IMoGoTurnLightListener
|
||||
import com.mogo.eagle.core.function.call.v2x.CallerTurnLightListenerManager
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.och.common.module.manager.light.TurnLightManager
|
||||
import com.mogo.och.shuttle.weaknet.passenger.R
|
||||
import kotlinx.android.synthetic.main.shuttle_p_b4_turn_light_status.view.b4_left_select_image
|
||||
import kotlinx.android.synthetic.main.shuttle_p_b4_turn_light_status.view.b4_right_nor_image
|
||||
import kotlinx.android.synthetic.main.shuttle_p_b4_turn_light_status.view.b4_right_select_image
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
* @date: 2023/2/13
|
||||
*/
|
||||
class B4TurnLightView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr),
|
||||
IMoGoTurnLightListener, TurnLightManager.TurnLightListener {
|
||||
|
||||
|
||||
companion object {
|
||||
private const val TAG = "B4TurnLightView"
|
||||
}
|
||||
|
||||
private var isLeftLight: Boolean = false
|
||||
private var isRightLight: Boolean = false
|
||||
private var isDisappear: Boolean = false
|
||||
|
||||
init {
|
||||
LayoutInflater.from(context).inflate(R.layout.shuttle_p_b4_turn_light_status, this, true)
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
CallerTurnLightListenerManager.addListener(TAG, this)
|
||||
TurnLightManager.addTurnLightStatusChangeListener(TAG, this)
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
CallerTurnLightListenerManager.removeListener(TAG)
|
||||
TurnLightManager.removeTurnLightStatusChangeListener(TAG)
|
||||
}
|
||||
|
||||
override fun hideTurnLightView() {
|
||||
ThreadUtils.runOnUiThread {
|
||||
if (!isDisappear) {
|
||||
isDisappear = true
|
||||
isLeftLight = false
|
||||
isRightLight = false
|
||||
animationDisappear()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun statusChange(newStatus: TurnLightManager.TurnLightStatus) {
|
||||
ThreadUtils.runOnUiThread {
|
||||
setTurnLight(newStatus)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 转向灯动画
|
||||
*/
|
||||
private fun setTurnLight(directionLight: TurnLightManager.TurnLightStatus) {
|
||||
if (!isAttachedToWindow) {
|
||||
return
|
||||
}
|
||||
//根据左右进行显示和隐藏,实际要判断每个来的时间和频度
|
||||
when (directionLight) {
|
||||
TurnLightManager.TurnLightStatus.TURN_LIGHT_LEFT -> { //左转向
|
||||
if (!isLeftLight) {
|
||||
isLeftLight = true
|
||||
isRightLight = false
|
||||
isDisappear = false
|
||||
showNormalAnimation()
|
||||
b4_left_select_image.visibility = View.VISIBLE
|
||||
b4_right_select_image.visibility = View.GONE
|
||||
b4_right_select_image.clearAnimation()
|
||||
setAnimation(b4_left_select_image)
|
||||
}
|
||||
}
|
||||
|
||||
TurnLightManager.TurnLightStatus.TURN_LIGHT_RIGHT -> { //右转向
|
||||
if (!isRightLight) {
|
||||
isRightLight = true
|
||||
isLeftLight = false
|
||||
isDisappear = false
|
||||
showNormalAnimation()
|
||||
b4_left_select_image.visibility = View.GONE
|
||||
b4_right_select_image.visibility = View.VISIBLE
|
||||
b4_left_select_image.clearAnimation()
|
||||
setAnimation(b4_right_select_image)
|
||||
}
|
||||
}
|
||||
|
||||
TurnLightManager.TurnLightStatus.TURN_LIGHT_NONE -> { //消失
|
||||
if (!isDisappear) {
|
||||
isDisappear = true
|
||||
isLeftLight = false
|
||||
isRightLight = false
|
||||
animationDisappear()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//显示背景
|
||||
private fun showNormalAnimation() {
|
||||
val appearAnimation = AlphaAnimation(0f, 1.0f)
|
||||
appearAnimation.duration = 300
|
||||
val appearAnimationImage = AlphaAnimation(0f, 1.0f)
|
||||
appearAnimation.duration = 500
|
||||
// turn_light_layout.startAnimation(appearAnimation)
|
||||
// left_nor_image.startAnimation(appearAnimationImage)
|
||||
b4_right_nor_image.startAnimation(appearAnimationImage)
|
||||
|
||||
// turn_light_layout.visibility = View.VISIBLE
|
||||
// left_nor_image.visibility = View.VISIBLE
|
||||
b4_right_nor_image.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
//消失动画,当转向等数据为空时候
|
||||
private fun animationDisappear() {
|
||||
b4_left_select_image.visibility = View.GONE
|
||||
b4_right_select_image.visibility = View.GONE
|
||||
b4_left_select_image.clearAnimation()
|
||||
b4_right_select_image.clearAnimation()
|
||||
|
||||
//left_nor_image.clearAnimation()
|
||||
b4_right_nor_image.clearAnimation()
|
||||
|
||||
val disappearAnimationLeft = AlphaAnimation(1.0f, 0f)
|
||||
disappearAnimationLeft.duration = 300
|
||||
|
||||
//left_nor_image.startAnimation(disappearAnimationLeft)
|
||||
b4_right_nor_image.startAnimation(disappearAnimationLeft)
|
||||
|
||||
|
||||
disappearAnimationLeft.setAnimationListener(object : Animation.AnimationListener {
|
||||
override fun onAnimationRepeat(p0: Animation?) {
|
||||
}
|
||||
|
||||
override fun onAnimationStart(p0: Animation?) {
|
||||
}
|
||||
|
||||
override fun onAnimationEnd(p0: Animation?) {
|
||||
// left_nor_image.visibility = View.GONE
|
||||
// right_nor_image.visibility = View.GONE
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
//实现图片闪烁效果
|
||||
private fun setAnimation(imageView: ImageView) {
|
||||
val animationSet = AnimatorSet()
|
||||
val valueAnimator = ObjectAnimator.ofFloat(imageView, "alpha", 0f, 1.0f)
|
||||
val valueAnimatorDisappear = ObjectAnimator.ofFloat(imageView, "alpha", 1.0f, 0f)
|
||||
valueAnimator.duration = 1000
|
||||
valueAnimatorDisappear.duration = 800
|
||||
valueAnimator.repeatCount = -1
|
||||
valueAnimatorDisappear.repeatCount = -1
|
||||
animationSet.playTogether(valueAnimatorDisappear, valueAnimator)
|
||||
animationSet.start()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package com.mogo.och.shuttle.weaknet.passenger.ui.map.autopilot.speed
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import com.mogo.eagle.core.data.map.MogoLocation
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener
|
||||
import com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugView
|
||||
import com.mogo.och.bridge.autopilot.location.OchLocationManager
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.shuttle.weaknet.passenger.R
|
||||
import kotlinx.android.synthetic.main.b4_speed.view.b4_tv_speed
|
||||
import kotlin.math.abs
|
||||
|
||||
class B4SpeedView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
|
||||
|
||||
private val TAG = "B4SpeedView"
|
||||
|
||||
constructor(context: Context) : super(context)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes)
|
||||
|
||||
private fun initView() {
|
||||
LayoutInflater.from(context).inflate(R.layout.b4_speed, this, true)
|
||||
|
||||
b4_tv_speed.setOnLongClickListener {
|
||||
context?.let { ToggleDebugView.toggleDebugView.toggle(it) }
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
override fun onVisibilityAggregated(isVisible: Boolean) {
|
||||
super.onVisibilityAggregated(isVisible)
|
||||
if (isVisible) {
|
||||
OchLocationManager.addGCJ02Listener(TAG, 3, this)
|
||||
} else {
|
||||
OchLocationManager.removeGCJ02Listener(TAG)
|
||||
}
|
||||
}
|
||||
|
||||
init {
|
||||
try {
|
||||
initView()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) {
|
||||
mogoLocation?.let {
|
||||
BizLoopManager.runInMainThread {
|
||||
val speedKM = (abs(it.gnssSpeed) * 3.6f).toInt()
|
||||
b4_tv_speed.text = speedKM.toString()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,127 @@
|
||||
package com.mogo.och.shuttle.weaknet.passenger.ui.map.autopilot.status
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import androidx.appcompat.widget.AppCompatTextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
||||
import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
|
||||
import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.shuttle.weaknet.passenger.R
|
||||
import com.mogo.och.shuttle.weaknet.passenger.callback.ICommonCallback
|
||||
import com.mogo.och.shuttle.weaknet.passenger.model.CommonModel
|
||||
|
||||
class B4StatusView : AppCompatTextView, ICommonCallback, IReceivedMsgListener {
|
||||
|
||||
private val TAG = "B4StatusView"
|
||||
|
||||
constructor(context: Context) : super(context)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(
|
||||
context,
|
||||
attributeSet,
|
||||
defStyleAttr
|
||||
)
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
CallerTelematicListenerManager.addListener(TAG, this)
|
||||
CommonModel.setRouteLineInfoCallback(TAG, this)
|
||||
updateAutoIconState(0)
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
CallerTelematicListenerManager.removeListener(TAG)
|
||||
CommonModel.setRouteLineInfoCallback(TAG, null)
|
||||
}
|
||||
|
||||
private fun initView() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
override fun onB2DemoMode(isB2DemoMode: Boolean) {
|
||||
super.onB2DemoMode(isB2DemoMode)
|
||||
updateAutoIconState(1)
|
||||
}
|
||||
|
||||
//美化模式状态变更回调
|
||||
override fun onDemoMode(isDemoMode: Boolean) {
|
||||
super.onDemoMode(isDemoMode)
|
||||
updateAutoIconState(2)
|
||||
}
|
||||
|
||||
override fun updateInOrderStatus(inOrder: Boolean) {
|
||||
super.updateInOrderStatus(inOrder)
|
||||
updateAutoIconState(3)
|
||||
}
|
||||
|
||||
//自动驾驶状态变更
|
||||
override fun updateAutoStatus(state: Int) {
|
||||
updateAutoIconState(4)
|
||||
}
|
||||
|
||||
private fun getStateIcon(source: Int): Int {
|
||||
// 平行驾驶状态下
|
||||
val sourceStr = when (source) {
|
||||
0 -> "View初始化"
|
||||
1 -> "B2美化模式状态变更"
|
||||
2 -> "美化模式状态变更"
|
||||
3 -> "订单状态变更"
|
||||
4 -> "自动驾驶状态变更"
|
||||
else -> "错误"
|
||||
}
|
||||
val autopilotState = CallerAutoPilotStatusListenerManager.getState()
|
||||
CallerLogger.i(
|
||||
TAG,
|
||||
"数据刷新来源=$sourceStr 自动驾驶状态=${autopilotState} 订单状态=${CommonModel.inOrder} 美化模式状态=${FunctionBuildConfig.isDemoMode} B2美化模式状态=${FunctionBuildConfig.isB2DemoMode} "
|
||||
)
|
||||
if (IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING == autopilotState) {
|
||||
return R.drawable.b4_status_parallel
|
||||
}
|
||||
|
||||
// 处理非平行驾驶状态的情况
|
||||
return when {
|
||||
// 无订单的情况
|
||||
!CommonModel.inOrder -> {
|
||||
R.drawable.b4_status_basic
|
||||
}
|
||||
// 有订单,且美化状态和b2美化状态任意开着
|
||||
CommonModel.inOrder && (FunctionBuildConfig.isDemoMode || FunctionBuildConfig.isB2DemoMode) -> {
|
||||
R.drawable.b4_status_order_auto
|
||||
}
|
||||
// 有订单,且美化状态和b2美化状态都关着
|
||||
CommonModel.inOrder && !FunctionBuildConfig.isDemoMode && !FunctionBuildConfig.isB2DemoMode -> {
|
||||
if (autopilotState == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) R.drawable.b4_status_order_auto else R.drawable.b4_status_basic
|
||||
}
|
||||
// 覆盖所有可能的情况
|
||||
else -> R.drawable.b4_status_basic
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateAutoIconState(source: Int) {
|
||||
BizLoopManager.runInMainThread {
|
||||
context?.let {
|
||||
setTextColor(ContextCompat.getColor(it, R.color.common_FFFFFF))
|
||||
background = ContextCompat.getDrawable(it, getStateIcon(source))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
init {
|
||||
try {
|
||||
initView()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 679 B |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 738 B |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 797 B |
|
Before Width: | Height: | Size: 974 B After Width: | Height: | Size: 842 B |
@@ -0,0 +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="@color/b4_333333" />
|
||||
<corners android:radius="@dimen/dp_33" />
|
||||
</shape>
|
||||
@@ -8,9 +8,11 @@
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/b4_aciv_right_bg"
|
||||
android:layout_width="@dimen/dp_217"
|
||||
android:layout_height="@dimen/dp_476"
|
||||
android:src="@drawable/b4_p_driver_info_right"
|
||||
android:layout_width="@dimen/dp_185"
|
||||
android:layout_height="@dimen/dp_380"
|
||||
android:src="@color/black"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
@@ -24,10 +26,10 @@
|
||||
|
||||
<com.mogo.och.shuttle.weaknet.passenger.ui.line.autopilot.status.B4StatusView
|
||||
android:id="@+id/b4_auto_tv"
|
||||
android:layout_width="@dimen/dp_142"
|
||||
android:layout_height="@dimen/dp_96"
|
||||
android:layout_width="@dimen/dp_118"
|
||||
android:layout_height="@dimen/dp_69"
|
||||
android:layout_marginBottom="@dimen/dp_3"
|
||||
android:background="@drawable/b4_status_basic"
|
||||
android:background="@color/b4_333333"
|
||||
android:gravity="center"
|
||||
android:text="@string/b4_autopilot_status"
|
||||
android:textColor="@color/common_ffffffff"
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
tools:background="@color/black"
|
||||
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
|
||||
|
||||
<TextView
|
||||
@@ -11,7 +12,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="60"
|
||||
android:textColor="@color/common_203555"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/dp_100"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
@@ -22,7 +23,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_112"
|
||||
android:text="KM/H"
|
||||
android:textColor="@color/common_203555"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/dp_24"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
|
||||
@@ -2,52 +2,51 @@
|
||||
<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:layout_width="@dimen/dp_142"
|
||||
android:layout_height="@dimen/dp_96"
|
||||
android:visibility="visible"
|
||||
tools:background="@color/common_203555">
|
||||
android:layout_width="@dimen/dp_119"
|
||||
android:layout_height="@dimen/dp_65"
|
||||
android:visibility="visible">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/b4_turn_light_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="top|center_horizontal"
|
||||
android:background="@drawable/b4_turn_light_bg"
|
||||
android:background="@drawable/b4_turen_light_bg"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/b4_left_nor_image"
|
||||
android:layout_width="@dimen/dp_64"
|
||||
android:layout_height="@dimen/dp_64"
|
||||
android:layout_width="@dimen/dp_34"
|
||||
android:layout_height="@dimen/dp_37"
|
||||
android:layout_gravity="left|center_vertical"
|
||||
android:layout_marginLeft="@dimen/dp_12"
|
||||
android:layout_marginLeft="@dimen/dp_20"
|
||||
android:src="@drawable/shuttle_p_b4_zuozhuan_un_open" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/b4_right_nor_image"
|
||||
android:layout_width="@dimen/dp_64"
|
||||
android:layout_height="@dimen/dp_64"
|
||||
android:layout_width="@dimen/dp_34"
|
||||
android:layout_height="@dimen/dp_37"
|
||||
android:layout_gravity="right|center_vertical"
|
||||
android:layout_marginRight="@dimen/dp_12"
|
||||
android:layout_marginRight="@dimen/dp_20"
|
||||
android:src="@drawable/shuttle_p_b4_youzhuan_un_open" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/b4_left_select_image"
|
||||
android:layout_width="@dimen/dp_64"
|
||||
android:layout_height="@dimen/dp_64"
|
||||
android:layout_width="@dimen/dp_34"
|
||||
android:layout_height="@dimen/dp_37"
|
||||
android:layout_gravity="left|center_vertical"
|
||||
android:layout_marginLeft="@dimen/dp_12"
|
||||
android:layout_marginLeft="@dimen/dp_20"
|
||||
android:src="@drawable/shuttle_p_b4_zuozhuan_open"
|
||||
android:visibility="gone" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/b4_right_select_image"
|
||||
android:layout_width="@dimen/dp_64"
|
||||
android:layout_height="@dimen/dp_64"
|
||||
android:layout_width="@dimen/dp_34"
|
||||
android:layout_height="@dimen/dp_37"
|
||||
android:layout_gravity="right|center_vertical"
|
||||
android:layout_marginRight="@dimen/dp_12"
|
||||
android:layout_marginRight="@dimen/dp_20"
|
||||
android:src="@drawable/shuttle_p_b4_youzhuan_open"
|
||||
android:visibility="gone" />
|
||||
</FrameLayout>
|
||||
|
||||
@@ -16,4 +16,6 @@
|
||||
<color name="b4_555555">#555555</color>
|
||||
<color name="b4_333333">#333333</color>
|
||||
<color name="b4_7C7C7C">#7C7C7C</color>
|
||||
<color name="b4_2EACFF">#2EACFF</color>
|
||||
<color name="b4_9A2EFF">#9A2EFF</color>
|
||||
</resources>
|
||||