From 9943888855534d50024bb66875cdd7e1b23dbae4 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Fri, 6 Jun 2025 15:15:35 +0800 Subject: [PATCH] =?UTF-8?q?[8.1.0]=20[fea]=20[m2]=20[=E8=B7=9D=E7=A6=BB?= =?UTF-8?q?=E5=B1=95=E7=A4=BA]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/wigets/OCHGradientTextView.java | 16 +++++++- .../common/src/main/res/values/attrs.xml | 4 ++ .../passenger/ui/line/lineinfo/LineView.kt | 17 ++++++++ .../ui/line/lineinfo/LineViewModel.kt | 27 +++++++++++++ .../ui/line/lineinfo/item/StationAdapter.kt | 11 ++++- .../line/lineinfo/item/StationViewHolder.kt | 40 ++++++++++++------- .../src/main/res/b2/layout/m2_line_view.xml | 5 ++- .../b2/layout/m2_station_current_end_view.xml | 22 +++++++++- .../layout/m2_station_current_start_view.xml | 5 ++- .../res/b2/layout/m2_station_current_view.xml | 24 +++++++++-- .../b2/layout/m2_station_normal_end_view.xml | 2 +- .../layout/m2_station_normal_future_view.xml | 2 +- .../b2/layout/m2_station_normal_pass_view.xml | 2 +- .../layout/m2_station_normal_start_view.xml | 2 +- .../b2/layout/m2_station_omit_view_future.xml | 2 +- .../b2/layout/m2_station_omit_view_pass.xml | 2 +- 16 files changed, 151 insertions(+), 32 deletions(-) diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/OCHGradientTextView.java b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/OCHGradientTextView.java index 914736a270..9edc1391a5 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/OCHGradientTextView.java +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/OCHGradientTextView.java @@ -1,6 +1,7 @@ package com.mogo.och.common.module.wigets; import android.content.Context; +import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.LinearGradient; import android.graphics.Paint; @@ -10,6 +11,8 @@ import android.util.AttributeSet; import androidx.appcompat.widget.AppCompatTextView; +import com.mogo.och.common.module.R; + /** * 通用渐变文字 * @author: wangmingjun @@ -30,6 +33,8 @@ public class OCHGradientTextView extends AppCompatTextView { private float mdy; private int mColor; + private int ochgravity = 1; + public OCHGradientTextView(Context context) { this(context, null); } @@ -39,6 +44,11 @@ public class OCHGradientTextView extends AppCompatTextView { super(context, attrs); //设置默认的颜色 mColorList = new int[]{0xFFFFFFFF, 0xFFFFFFF}; + + TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.OCHGradientTextView); + + ochgravity = array.getInt(R.styleable.OCHGradientTextView_ochgravity, 1); + array.recycle(); } @@ -60,7 +70,11 @@ public class OCHGradientTextView extends AppCompatTextView { mPaint.setShadowLayer(mRadius, mdx, mdy, mColor); //画出文字 - canvas.drawText(mTipText, getMeasuredWidth() / 2.0f - mTextBound.width() / 2.0f, getMeasuredHeight() / 2.0f + mTextBound.height() / 2.0f, mPaint); + if(ochgravity==1) { + canvas.drawText(mTipText, getMeasuredWidth() / 2.0f - mTextBound.width() / 2.0f, getMeasuredHeight() / 2.0f + mTextBound.height() / 2.0f, mPaint); + }else if(ochgravity==0){ + canvas.drawText(mTipText, 0f, getMeasuredHeight() / 2.0f + mTextBound.height() / 2.0f-mTextBound.bottom, mPaint); + } } /** diff --git a/OCH/common/common/src/main/res/values/attrs.xml b/OCH/common/common/src/main/res/values/attrs.xml index 5b122d83ed..50c372ffe9 100644 --- a/OCH/common/common/src/main/res/values/attrs.xml +++ b/OCH/common/common/src/main/res/values/attrs.xml @@ -14,6 +14,10 @@ + + + + diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/ui/line/lineinfo/LineView.kt b/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/ui/line/lineinfo/LineView.kt index d5056cdc90..10894dc80b 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/ui/line/lineinfo/LineView.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/ui/line/lineinfo/LineView.kt @@ -8,11 +8,14 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.findViewTreeViewModelStoreOwner import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.och.common.module.manager.loop.BizLoopManager import com.mogo.och.common.module.wigets.WrapContentLinearLayoutManager import com.mogo.och.data.bean.BusStationBean import com.mogo.och.shuttle.weaknet.passenger.R import com.mogo.och.shuttle.weaknet.passenger.ui.line.lineinfo.item.StationAdapter +import kotlinx.android.synthetic.main.m2_line_view.view.autoplit_info import kotlinx.android.synthetic.main.m2_line_view.view.ll_station_container class LineView : ConstraintLayout, LineViewModel.LineViewCallback { @@ -46,7 +49,15 @@ class LineView : ConstraintLayout, LineViewModel.LineViewCallback { // AutoSizeUtils.dp2px(context,20f) // ) // ) + autoplit_info.onClick { + updateRemainMt("12公里","25分钟") + } ll_station_container.setAdapter(mAdapter) + + ll_station_container.itemAnimator?.addDuration = 0; + ll_station_container.itemAnimator?.changeDuration = 0; + ll_station_container.itemAnimator?.moveDuration = 0; + ll_station_container.itemAnimator?.removeDuration = 0; } override fun onAttachedToWindow() { @@ -74,5 +85,11 @@ class LineView : ConstraintLayout, LineViewModel.LineViewCallback { mAdapter.submitList(stations) } + override fun updateRemainMt(distance: String, time: String) { + BizLoopManager.runInMainThread{ + mAdapter.notifyDistanceAndTime(distance,time) + } + } + } \ No newline at end of file diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/ui/line/lineinfo/LineViewModel.kt b/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/ui/line/lineinfo/LineViewModel.kt index db5c8369c0..334d7d5ab4 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/ui/line/lineinfo/LineViewModel.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/ui/line/lineinfo/LineViewModel.kt @@ -4,10 +4,13 @@ import androidx.lifecycle.ViewModel import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS import com.mogo.och.common.module.manager.loop.BizLoopManager +import com.mogo.och.common.module.utils.NumberFormatUtil import com.mogo.och.data.bean.BusStationBean import com.mogo.och.shuttle.weaknet.passenger.callback.ICommonCallback import com.mogo.och.shuttle.weaknet.passenger.model.CommonModel import io.reactivex.disposables.Disposable +import kotlin.math.ceil +import kotlin.math.roundToInt /** * @author XuXinChao @@ -39,8 +42,32 @@ class LineViewModel : ViewModel(), ICommonCallback { } } + override fun updateRemainMT(meters: Long, timeInSecond: Long) { + super.updateRemainMT(meters, timeInSecond) + var disUnit = "公里" + var remainDis: String? = "0" + + if (meters > 0) { + if (meters / 1000 < 1) { + disUnit = "米" + remainDis = meters.toFloat().roundToInt().toString() + } else { + disUnit = "公里" + remainDis = NumberFormatUtil.formatLong(meters.toDouble() / 1000) + } + } + + val time = ceil(timeInSecond / 60f).toInt() + +// "$remainDis$disUnit".also { tv_distance.text = it } +// "${time}分钟".also { tv_left_time.text = it } + + this.viewCallback?.updateRemainMt("$remainDis$disUnit","${time}分钟") + } + interface LineViewCallback{ fun updateLineStations(stations: MutableList?) + fun updateRemainMt(distance: String, time: String) } } diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/ui/line/lineinfo/item/StationAdapter.kt b/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/ui/line/lineinfo/item/StationAdapter.kt index b8b98736d1..961da95497 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/ui/line/lineinfo/item/StationAdapter.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/ui/line/lineinfo/item/StationAdapter.kt @@ -13,6 +13,8 @@ class StationAdapter : ListAdapter(MessageDif var showPassOmit = false var showFuluterOmit = false + var distanceAndTime = "" + override fun submitList(list: MutableList?) { val newDataList = mutableListOf() list?.let { @@ -80,13 +82,13 @@ class StationAdapter : ListAdapter(MessageDif } } } - + distanceAndTime = "" super.submitList(newDataList) } override fun onBindViewHolder(holder: StationViewHolder, position: Int) { getItem(position)?.let { - holder.bind(it) + holder.bind(it,distanceAndTime) } } @@ -168,4 +170,9 @@ class StationAdapter : ListAdapter(MessageDif super.onViewRecycled(holder) holder.viewRecycled(holder) } + + fun notifyDistanceAndTime(distance: String, time: String) { + distanceAndTime = "${distance}·${time}" + notifyItemChanged(currentIndex) + } } diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/ui/line/lineinfo/item/StationViewHolder.kt b/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/ui/line/lineinfo/item/StationViewHolder.kt index 55b7d6f6f0..5c987951d6 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/ui/line/lineinfo/item/StationViewHolder.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/ui/line/lineinfo/item/StationViewHolder.kt @@ -12,7 +12,7 @@ import java.util.Locale abstract class StationViewHolder(view: View) : RecyclerView.ViewHolder(view) { - abstract fun bind(item: BusStationBean) + abstract fun bind(item: BusStationBean,distanceAndView:String) open fun viewRecycled(holder: StationViewHolder){} private val sampleDateFormat = SimpleDateFormat("HH:mm", Locale.CHINA) protected val TAG = javaClass.simpleName @@ -34,45 +34,51 @@ abstract class StationViewHolder(view: View) : RecyclerView.ViewHolder(view) { class NormalStationStartViewHolder(binding: View) : StationViewHolder(binding) { private var startStaionName: AppCompatTextView = binding.findViewById(R.id.actv_normal_station_start) - override fun bind(item: BusStationBean) { + override fun bind(item: BusStationBean,distanceAndView:String) { startStaionName.text = item.name } } class NormalStationEndViewHolder(binding: View) : StationViewHolder(binding) { private var endStaionName: AppCompatTextView = binding.findViewById(R.id.actv_normal_station_end) - override fun bind(item: BusStationBean) { + override fun bind(item: BusStationBean,distanceAndView:String) { endStaionName.text = item.name } } class NormalStationPassViewHolder(binding: View) : StationViewHolder(binding) { private var passStaionName: AppCompatTextView = binding.findViewById(R.id.actv_normal_station_pass) - override fun bind(item: BusStationBean) { + override fun bind(item: BusStationBean,distanceAndView:String) { passStaionName.text = item.name } } class NormalStationFutureViewHolder(binding: View) : StationViewHolder(binding) { private var futureStaionName: AppCompatTextView = binding.findViewById(R.id.actv_normal_station_future) - override fun bind(item: BusStationBean) { + override fun bind(item: BusStationBean,distanceAndView:String) { futureStaionName.text = item.name } } -class CurrentStationViewHolder(val binding: View) : StationViewHolder(binding) { +class CurrentStationViewHolder(binding: View) : StationViewHolder(binding) { private var currentStaionName: OCHGradientTextView = binding.findViewById(R.id.och_current_station_name) - override fun bind(item: BusStationBean) { - currentStaionName.text = item.name + private var actv_distance: AppCompatTextView = binding.findViewById(R.id.actv_distance) + override fun bind(item: BusStationBean,distanceAndView:String) { + var text = item.name + if(text.length>12){ + text = text.slice(0..10)+"…" + } + currentStaionName.text = text currentStaionName.setVertrial(true) val intArrayOf = intArrayOf( ResourcesUtils.getColor(R.color.shuttle_p_m2_color_43cefe), ResourcesUtils.getColor(R.color.shuttle_p_m2_color_1466fb), ) currentStaionName.setmColorList(intArrayOf) + actv_distance.text = distanceAndView } } class CurrentStationStartViewHolder(binding: View) : StationViewHolder(binding) { private var currentStaionStartName: OCHGradientTextView = binding.findViewById(R.id.och_current_station_start_name) - override fun bind(item: BusStationBean) { + override fun bind(item: BusStationBean,distanceAndView:String) { currentStaionStartName.text = item.name val intArrayOf = intArrayOf( ResourcesUtils.getColor(R.color.shuttle_p_m2_color_43cefe), @@ -83,19 +89,25 @@ class CurrentStationStartViewHolder(binding: View) : StationViewHolder(binding) } class CurrentStationEndViewHolder(binding: View) : StationViewHolder(binding) { private var currentStaionEndName: OCHGradientTextView = binding.findViewById(R.id.och_current_station_end_name) - override fun bind(item: BusStationBean) { - currentStaionEndName.text = item.name + private var actv_distance_end: AppCompatTextView = binding.findViewById(R.id.actv_distance_end) + override fun bind(item: BusStationBean,distanceAndView:String) { + var text = item.name + if(text.length>12){ + text = text.slice(0..10)+"…" + } + currentStaionEndName.text = text val intArrayOf = intArrayOf( ResourcesUtils.getColor(R.color.shuttle_p_m2_color_43cefe), ResourcesUtils.getColor(R.color.shuttle_p_m2_color_1466fb), ) currentStaionEndName.setmColorList(intArrayOf) + actv_distance_end.text = distanceAndView } } -class OmitPassViewHolder(val binding: View) : StationViewHolder(binding) { +class OmitPassViewHolder(binding: View) : StationViewHolder(binding) { private var omitCout: AppCompatTextView = binding.findViewById(R.id.actv_pass_omit_cout) - override fun bind(item: BusStationBean) { + override fun bind(item: BusStationBean,distanceAndView:String) { if(item is StationBeanOmit){ omitCout.text = "${item.coutOmit}站" } @@ -103,7 +115,7 @@ class OmitPassViewHolder(val binding: View) : StationViewHolder(binding) { } class OmitFutureViewHolder(binding: View) : StationViewHolder(binding) { private var omitCout: AppCompatTextView = binding.findViewById(R.id.actv_future_omit_count) - override fun bind(item: BusStationBean) { + override fun bind(item: BusStationBean,distanceAndView:String) { if(item is StationBeanOmit){ omitCout.text = "${item.coutOmit}站" } diff --git a/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_line_view.xml b/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_line_view.xml index b1a14204db..a9907a41c1 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_line_view.xml +++ b/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_line_view.xml @@ -12,11 +12,14 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" - android:layout_width="@dimen/dp_762" + app:layout_constraintEnd_toStartOf="@+id/autoplit_info" + android:layout_marginEnd="@dimen/dp_41" + android:layout_width="0dp" android:layout_height="wrap_content"/> @@ -42,14 +42,32 @@ + + \ No newline at end of file diff --git a/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_station_current_start_view.xml b/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_station_current_start_view.xml index 509027636f..8746348e8b 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_station_current_start_view.xml +++ b/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_station_current_start_view.xml @@ -3,7 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:background="@color/b2_95B1D6" - android:layout_width="@dimen/dp_764" + android:layout_width="match_parent" android:layout_height="@dimen/dp_68" tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"> @@ -37,7 +37,6 @@ android:layout_height="@dimen/dp_60"/> \ No newline at end of file diff --git a/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_station_current_view.xml b/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_station_current_view.xml index d57c2778c9..5cf12a4f24 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_station_current_view.xml +++ b/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_station_current_view.xml @@ -3,7 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:background="@color/b2_95B1D6" - android:layout_width="@dimen/dp_764" + android:layout_width="match_parent" android:layout_height="@dimen/dp_68" tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"> @@ -49,14 +49,30 @@ + + \ No newline at end of file diff --git a/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_station_normal_end_view.xml b/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_station_normal_end_view.xml index 8068a83515..e0b8e26ede 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_station_normal_end_view.xml +++ b/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_station_normal_end_view.xml @@ -3,7 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout" - android:layout_width="@dimen/dp_764" + android:layout_width="match_parent" android:layout_height="@dimen/dp_68"> diff --git a/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_station_omit_view_pass.xml b/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_station_omit_view_pass.xml index e5a972d76e..723b492859 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_station_omit_view_pass.xml +++ b/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_station_omit_view_pass.xml @@ -3,7 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout" - android:layout_width="@dimen/dp_764" + android:layout_width="match_parent" android:layout_height="@dimen/dp_68">