[1.0.2]
[2s禁止开关灯、滚动设置]
This commit is contained in:
yangyakun
2023-02-15 20:10:44 +08:00
parent 0220826014
commit 0385d6e7e9
4 changed files with 62 additions and 11 deletions

View File

@@ -113,7 +113,7 @@ class BusPassengerFunctionSoftPresenter(view: BusPassengerFunctionSoftFragment?)
disposeSubscribe(heaterDisposable)
heaterDisposable = createSubscribe(2000){
if (!OCHM1LightAirconditionDoorStatusManager.heaterStatue.isOpen&&
OCHM1LightAirconditionDoorStatusManager.heaterStatue.windSpeed!=windSpeedCmd&&) {
OCHM1LightAirconditionDoorStatusManager.heaterStatue.windSpeed!=windSpeedCmd) {
ToastUtils.showShort("操作未生效,请稍后重试吧~")
}
}

View File

@@ -1,7 +1,6 @@
package com.mogo.och.bus.passenger.ui
import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ClipDrawable
import android.graphics.drawable.LayerDrawable
import android.media.AudioManager
@@ -17,8 +16,8 @@ import androidx.recyclerview.widget.SnapHelper
import com.mogo.commons.mvp.MvpFragment
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
import com.mogo.eagle.core.utilcode.util.ClickUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.bus.passenger.R
import com.mogo.och.bus.passenger.bean.Temperature
@@ -28,8 +27,12 @@ import com.mogo.och.bus.passenger.view.HorizontalDecoration
import com.mogo.och.bus.passenger.view.PickerLayoutManager
import com.mogo.och.common.module.utils.SoundPoolHelper
import com.yangyakun.main.ui.loading.drawable.MineGradientDrawable
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import kotlinx.android.synthetic.m1.bus_p_function_setting_soft_fragment.*
import me.jessyan.autosize.utils.AutoSizeUtils
import java.util.concurrent.TimeUnit
/**
* @author: yangyakun
@@ -44,6 +47,11 @@ class BusPassengerFunctionSoftFragment :
private var currentTemperature: Temperature? = null
private var subscribeLightTop1: Disposable? = null
private var subscribeLightTop2: Disposable? = null
private var subscribeAtmosphere: Disposable? = null
override fun initViews() {
rg_select_function.setOnCheckedChangeListener { group, checkedId ->
when (checkedId) {
@@ -157,12 +165,14 @@ class BusPassengerFunctionSoftFragment :
pickerLayoutManager.scaleDownBy = 0.29f
pickerLayoutManager.scaleDownDistance = 0.8f
val adapter = TemperatureAdapter(requireContext(), getData(), rv_aircondition_temperature)
val data = getData()
val adapter = TemperatureAdapter(requireContext(), data, rv_aircondition_temperature)
val snapHelper: SnapHelper = LinearSnapHelper()
snapHelper.attachToRecyclerView(rv_aircondition_temperature)
rv_aircondition_temperature.layoutManager = pickerLayoutManager
rv_aircondition_temperature.adapter = adapter
rv_aircondition_temperature.addItemDecoration(HorizontalDecoration(15))
HorizontalDecoration.distance = SharedPrefsMgr.getInstance(requireContext()).getInt(HorizontalDecoration.distancekey,0)
rv_aircondition_temperature.addItemDecoration(HorizontalDecoration(15,data.size-1))
pickerLayoutManager.setOnScrollStopListener { view ->
if (view is TextView) {
@@ -186,6 +196,9 @@ class BusPassengerFunctionSoftFragment :
}
}
if(HorizontalDecoration.distance!=0){
rv_aircondition_temperature.smoothScrollToPosition(data.size-1)
}
}
private fun getData(): MutableList<Temperature> {
@@ -361,6 +374,12 @@ class BusPassengerFunctionSoftFragment :
if(!buttonView.isPressed){
return@setOnCheckedChangeListener
}
tv_light_top_01.isEnabled = false
subscribeLightTop1 = Observable.timer(2000, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
tv_light_top_01.isEnabled = true
}
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
mPresenter?.setLightData1(isChecked)
setLightView(isChecked, tv_light_top_02.isChecked, tv_light_atmosphere.isChecked)
@@ -369,6 +388,12 @@ class BusPassengerFunctionSoftFragment :
if(!buttonView.isPressed){
return@setOnCheckedChangeListener
}
tv_light_top_02.isEnabled = false
subscribeLightTop2 = Observable.timer(2000, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
tv_light_top_02.isEnabled = true
}
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
mPresenter?.setLightData2(isChecked)
setLightView(tv_light_top_01.isChecked, isChecked, tv_light_atmosphere.isChecked)
@@ -377,6 +402,12 @@ class BusPassengerFunctionSoftFragment :
if(!buttonView.isPressed){
return@setOnCheckedChangeListener
}
tv_light_atmosphere.isEnabled = false
subscribeAtmosphere = Observable.timer(2000, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
tv_light_atmosphere.isEnabled = true
}
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
mPresenter?.setAtmosphereLightData2(isChecked)
setLightView(tv_light_top_01.isChecked, tv_light_top_02.isChecked, isChecked)
@@ -513,6 +544,13 @@ class BusPassengerFunctionSoftFragment :
override fun createPresenter(): BusPassengerFunctionSoftPresenter =
BusPassengerFunctionSoftPresenter(this)
override fun onDestroy() {
mPresenter?.disposeSubscribe(subscribeLightTop1)
mPresenter?.disposeSubscribe(subscribeLightTop2)
mPresenter?.disposeSubscribe(subscribeAtmosphere)
super.onDestroy()
}
companion object {
const val TAG = "BusPassengerFunctionSoftFragment"
const val touchTagKey = 2

View File

@@ -6,20 +6,26 @@ import android.view.View;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
public class HorizontalDecoration extends RecyclerView.ItemDecoration {
private int space = 0;
private int shouldScrollTo = 0;
/**
* 第一个视图和最后一个视图偏移的距离
*/
private static int distance = 0;
public static int distance = 0;
public static String distancekey = "DISTANCEKEY";
private static final String TAG = "HorizontalDecoration";
/**
* 设置RecyclerView子视图的边距本示例仅用于定义两个子视图之间的边距为space*2
* @param space 设置的边距
*/
public HorizontalDecoration(int space) {
public HorizontalDecoration(int space,int shouldScrollTo) {
this.space = space;
this.shouldScrollTo = shouldScrollTo;
}
/**
@@ -36,7 +42,7 @@ public class HorizontalDecoration extends RecyclerView.ItemDecoration {
* 由于此时View并未完成测量无法基于测量获取其宽度;思路是在view绘制完成后再进行测量并设置第一个的左边距
*/
if(distance <= 0){
view.postDelayed(new Runnable() {
view.post(new Runnable() {
@Override
public void run() {
distance = dtDistance(parent,view);
@@ -46,9 +52,15 @@ public class HorizontalDecoration extends RecyclerView.ItemDecoration {
layoutParams.setMargins(distance,0,space,0);
childView.setLayoutParams(layoutParams);
//打开后默认显示第一个(居中显示)
parent.scrollToPosition(0);
view.postDelayed(new Runnable() {
@Override
public void run() {
parent.smoothScrollToPosition(shouldScrollTo);
}
}, 500);
SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()).putInt(distancekey,distance);
}
},500);
});
}
/**
* 通过设置Item左右边距实现第一个左侧和最后一个右侧设置边距,确保显示的视图位于屏幕中间

View File

@@ -42,13 +42,14 @@
android:background="@drawable/bus_p_car_speed"
android:orientation="vertical"
android:layout_height="@dimen/dp_152">
<TextView
android:id="@+id/tv_speed"
android:text="0"
android:textSize="@dimen/dp_60"
android:gravity="center"
android:textColor="@color/bus_p_m1_f5fbff"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:textSize="@dimen/dp_19"