From 0385d6e7e903d6b2b4de4e3bdd6e3d87e7bd4629 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 15 Feb 2023 20:10:44 +0800 Subject: [PATCH] =?UTF-8?q?[m1]=20[1.0.2]=20[2s=E7=A6=81=E6=AD=A2=E5=BC=80?= =?UTF-8?q?=E5=85=B3=E7=81=AF=E3=80=81=E6=BB=9A=E5=8A=A8=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusPassengerFunctionSoftPresenter.kt | 2 +- .../ui/BusPassengerFunctionSoftFragment.kt | 46 +++++++++++++++++-- .../passenger/view/HorizontalDecoration.java | 22 +++++++-- .../src/m1/res/layout/bus_p_fragment.xml | 3 +- 4 files changed, 62 insertions(+), 11 deletions(-) diff --git a/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt b/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt index f26b01bb23..7eba86e84d 100644 --- a/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt +++ b/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt @@ -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("操作未生效,请稍后重试吧~") } } diff --git a/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/BusPassengerFunctionSoftFragment.kt b/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/BusPassengerFunctionSoftFragment.kt index 9872c91961..4cd44d6cdf 100644 --- a/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/BusPassengerFunctionSoftFragment.kt +++ b/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/BusPassengerFunctionSoftFragment.kt @@ -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 { @@ -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 diff --git a/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/view/HorizontalDecoration.java b/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/view/HorizontalDecoration.java index 53a3c85dd4..889957bc92 100644 --- a/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/view/HorizontalDecoration.java +++ b/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/view/HorizontalDecoration.java @@ -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左右边距实现第一个左侧和最后一个右侧设置边距,确保显示的视图位于屏幕中间 diff --git a/OCH/mogo-och-bus-passenger/src/m1/res/layout/bus_p_fragment.xml b/OCH/mogo-och-bus-passenger/src/m1/res/layout/bus_p_fragment.xml index 3975ad329c..036f011afb 100644 --- a/OCH/mogo-och-bus-passenger/src/m1/res/layout/bus_p_fragment.xml +++ b/OCH/mogo-och-bus-passenger/src/m1/res/layout/bus_p_fragment.xml @@ -42,13 +42,14 @@ android:background="@drawable/bus_p_car_speed" android:orientation="vertical" android:layout_height="@dimen/dp_152"> +