This commit is contained in:
lixiaopeng
2022-01-18 19:28:00 +08:00
parent 4cd2d5f8d8
commit 2513a56bec
5 changed files with 90 additions and 55 deletions

View File

@@ -30,7 +30,6 @@ class TurnLightBroadcastReceiver : BroadcastReceiver() {
try {
val type = intent.getIntExtra("type", 0)
val lightInt = intent.getIntExtra("light", 0)
Logger.d("liyz", "TurnLightBroadcastReceiver type = $type ---- lightInt = $lightInt")
showTurnLight(type, lightInt)
} catch (e: Exception) {
e.printStackTrace()

View File

@@ -637,11 +637,9 @@ class MoGoHmiFragment : MvpFragment<MoGoWarningContract.View?, WaringPresenter?>
}
/**
* 显示转向灯效果 TODO
* 显示转向灯效果
*/
override fun showTurnLight(light: Int) {
//Logger.d("liyz", "hmiFragment showTurnLight --- light = $light")
// turnLightView?.visibility = View.VISIBLE
turnLightView.setTurnLight(light)
}
@@ -650,8 +648,6 @@ class MoGoHmiFragment : MvpFragment<MoGoWarningContract.View?, WaringPresenter?>
* 显示刹车效果
*/
override fun showBrakeLight(light: Int) {
//Logger.d("liyz", "hmiFragment showBrakeLight --- light = $light")
// brakeView?.visibility = View.VISIBLE
brakeView.setBrakeLight(light)
}

View File

@@ -33,46 +33,53 @@ class BrakeViewStatus @JvmOverloads constructor(
LayoutInflater.from(context).inflate(R.layout.view_brake_light_status, this, true)
}
private var isBrake :Boolean = false
/**
* 刹车动画
*/
fun setBrakeLight(brakeLight: Int) {
if (brakeLight == 1) { //TODO 暂时还不知道数据,如果一直猜会怎样?
var appearAnimation = AlphaAnimation(0f, 1f)
appearAnimation.duration = 300
layout_brake.startAnimation(appearAnimation)
image_brake.startAnimation(appearAnimation)
tv_brake.startAnimation(appearAnimation)
layout_brake.visibility = View.VISIBLE
image_brake.visibility = View.VISIBLE
tv_brake.visibility = View.VISIBLE
} else { //不踩刹车,就消失
GlobalScope.launch(Dispatchers.Main) {
scaleImageAndTv()
if (!isBrake) {
var appearAnimation = AlphaAnimation(0f, 1f)
appearAnimation.duration = 300
layout_brake.startAnimation(appearAnimation)
image_brake.startAnimation(appearAnimation)
tv_brake.startAnimation(appearAnimation)
layout_brake.visibility = View.VISIBLE
image_brake.visibility = View.VISIBLE
tv_brake.visibility = View.VISIBLE
isBrake = true
}
var disappearAnimation = AlphaAnimation(1f, 0f)
disappearAnimation.duration = 1200
layout_brake.startAnimation(disappearAnimation)
image_brake.startAnimation(disappearAnimation)
tv_brake.startAnimation(disappearAnimation)
disappearAnimation.setAnimationListener(object: Animation.AnimationListener{
override fun onAnimationRepeat(p0: Animation?) {
} else { //不踩刹车,就消失
if (isBrake) {
isBrake = false
GlobalScope.launch(Dispatchers.Main) {
scaleImageAndTv()
}
override fun onAnimationStart(p0: Animation?) {
}
var disappearAnimation = AlphaAnimation(1f, 0f)
disappearAnimation.duration = 1200
layout_brake.startAnimation(disappearAnimation)
image_brake.startAnimation(disappearAnimation)
tv_brake.startAnimation(disappearAnimation)
override fun onAnimationEnd(p0: Animation?) {
layout_brake.visibility = View.GONE
image_brake.visibility = View.GONE
tv_brake.visibility = View.GONE
disappearAnimation.setAnimationListener(object: Animation.AnimationListener{
override fun onAnimationRepeat(p0: Animation?) {
}
stopAnimate()
}
})
override fun onAnimationStart(p0: Animation?) {
}
override fun onAnimationEnd(p0: Animation?) {
layout_brake.visibility = View.GONE
image_brake.visibility = View.GONE
tv_brake.visibility = View.GONE
stopAnimate()
}
})
}
}
}

View File

@@ -30,11 +30,56 @@ class TurnLightViewStatus @JvmOverloads constructor(
LayoutInflater.from(context).inflate(R.layout.view_turn_light_status, this, true)
}
private var isShowNormalBg :Boolean = false
private var isLeftLight :Boolean = false
private var isRightLight :Boolean = false
private var isDisappare :Boolean = false
/**
* 转向灯动画
*/
fun setTurnLight(directionLight: Int) {
//显示背景
if (!isShowNormalBg && (directionLight == 1 || directionLight == 2)) {
showNormalAnimation()
isShowNormalBg = true
}
//根据左右进行显示和隐藏,实际要判断每个来的时间和频度
if (directionLight == 1) { //左转向
if (!isLeftLight) {
left_select_image.visibility = View.VISIBLE
right_select_image.visibility = View.GONE
right_select_image.clearAnimation()
setAnimation(left_select_image)
isLeftLight = true
isRightLight = false
isDisappare = false
}
} else if (directionLight == 2) { //右转向
if (!isRightLight) {
left_select_image.visibility = View.GONE
right_select_image.visibility = View.VISIBLE
left_select_image.clearAnimation()
setAnimation(right_select_image)
isRightLight = true
isLeftLight = false
isDisappare = false
}
} else { //消失
if (!isDisappare) {
animationDisappear()
stopAnimate()
isDisappare = true
isShowNormalBg = false
isLeftLight = false
isDisappare = false
}
}
}
//显示背景
private fun showNormalAnimation() {
val appearAnimation = AlphaAnimation(0f, 1.0f)
appearAnimation.duration = 600
val appearAnimationImage = AlphaAnimation(0f, 1.0f)
@@ -46,22 +91,6 @@ class TurnLightViewStatus @JvmOverloads constructor(
turn_light_layout.visibility = View.VISIBLE
left_nor_image.visibility = View.VISIBLE
right_nor_image.visibility = View.VISIBLE
//根据左右进行显示和隐藏,实际要判断每个来的时间和频度
if (directionLight == 1) { //左转向
left_select_image.visibility = View.VISIBLE
right_select_image.visibility = View.GONE
right_select_image.clearAnimation()
setAnimation(left_select_image)
} else if (directionLight == 2) { //右转向
left_select_image.visibility = View.GONE
right_select_image.visibility = View.VISIBLE
left_select_image.clearAnimation()
setAnimation(right_select_image)
} else { //消失
animationDisappear()
stopAnimate()
}
}
//消失动画,当转向等数据为空时候
@@ -73,9 +102,10 @@ class TurnLightViewStatus @JvmOverloads constructor(
val disappearAnimationBg = AlphaAnimation(1.0f, 0f)
disappearAnimationBg.duration = 1000
turn_light_layout.startAnimation(disappearAnimationBg)
left_nor_image.startAnimation(disappearAnimationLeft)
right_nor_image.startAnimation(disappearAnimationLeft)
turn_light_layout.startAnimation(disappearAnimationBg)
disappearAnimationLeft.setAnimationListener(object : Animation.AnimationListener {
override fun onAnimationRepeat(p0: Animation?) {
@@ -114,6 +144,9 @@ class TurnLightViewStatus @JvmOverloads constructor(
}
private fun stopAnimate() {
turn_light_layout.clearAnimation()
left_nor_image.clearAnimation()
right_nor_image.clearAnimation()
left_select_image.clearAnimation()
right_select_image.clearAnimation()
}