diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/WrapContentLinearLayoutManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/WrapContentLinearLayoutManager.kt index bd9557b5ce..9838e935fb 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/WrapContentLinearLayoutManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/WrapContentLinearLayoutManager.kt @@ -3,6 +3,7 @@ package com.mogo.och.common.module.wigets import android.content.Context import android.util.AttributeSet import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.LinearSmoothScroller import androidx.recyclerview.widget.RecyclerView @@ -29,4 +30,27 @@ class WrapContentLinearLayoutManager : LinearLayoutManager { e.printStackTrace() } } + + override fun smoothScrollToPosition( + recyclerView: RecyclerView, + state: RecyclerView.State?, + position: Int + ) { + val smoothScroller: RecyclerView.SmoothScroller = CenterSmoothScroller(recyclerView.context) + smoothScroller.targetPosition = position + startSmoothScroll(smoothScroller) + } + + class CenterSmoothScroller internal constructor(context: Context?) : + LinearSmoothScroller(context) { + override fun calculateDtToFit( + viewStart: Int, + viewEnd: Int, + boxStart: Int, + boxEnd: Int, + snapPreference: Int + ): Int { + return (boxStart + (boxEnd - boxStart) / 2) - (viewStart + (viewEnd - viewStart) / 2) + } + } } \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt index 45568e3ce0..045740f8aa 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt @@ -95,7 +95,7 @@ object RepositoryManager { } fun supportDb():Boolean{ - if(ProjectUtils.isSaas()&&AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) { + if(ProjectUtils.isSaas()||(ProjectUtils.isDali()&&AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode))) { return true } return false diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/fragment/ShuttleFragment.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/fragment/ShuttleFragment.kt index fd22881c54..57ff884c7e 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/fragment/ShuttleFragment.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/fragment/ShuttleFragment.kt @@ -16,6 +16,7 @@ import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.och.common.module.wigets.map.drawline.LineView import com.mogo.och.shuttle.weaknet.R +import com.mogo.och.weaknet.repository.RepositoryManager import com.mogo.och.weaknet.ui.taskrunned.RunningTaskManager import kotlinx.android.synthetic.main.shuttle_weak_base_fragment.mapContainerLayout import org.greenrobot.eventbus.EventBus @@ -48,7 +49,7 @@ class ShuttleFragment : MvpFragment() { override fun initViews() { context?.let { - if(ProjectUtils.isSaas()||(ProjectUtils.isDali()&&AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode))){ + if(RepositoryManager.supportDb()){ CallerEagleBaseFunctionCall4OchManager.addSingleToolKitDefaultItem(runningTaskGateWay,"本地缓存任务", R.drawable.bus_running_task_history,4) } CallerEagleBaseFunctionCall4OchManager.addToolKitDefaultItemClickListener(runningTaskGateWay,object : diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/TaskRunningModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/TaskRunningModel.kt index ae05e450a8..69f39a4da3 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/TaskRunningModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/TaskRunningModel.kt @@ -33,15 +33,25 @@ class TaskRunningModel : ViewModel(), IBusLinesCallback { interface SwtichLineViewCallback{ fun showRunningTaskInfo() fun hideLoadingAndshowRunningTaskInfo() + fun smoothScrollToPosition(position:Int) } override fun onLeaveStaionSuccess() { BizLoopManager.runInMainThread{ viewCallback?.hideLoadingAndshowRunningTaskInfo() + smoothScrollToPosition() } } + fun smoothScrollToPosition(){ + BizLoopManager.runInMainThread(object :Runnable{ + override fun run() { + viewCallback?.smoothScrollToPosition(LineModel.startStationIndex) + } + }) + } + override fun onLeaveStaionFail() { BizLoopManager.runInMainThread{ viewCallback?.showRunningTaskInfo() @@ -55,6 +65,7 @@ class TaskRunningModel : ViewModel(), IBusLinesCallback { override fun onArriveStationSuccess() { BizLoopManager.runInMainThread{ + smoothScrollToPosition() viewCallback?.showRunningTaskInfo() } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/TaskRunningView.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/TaskRunningView.kt index ed002b7c05..bdbbcfe117 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/TaskRunningView.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/TaskRunningView.kt @@ -10,6 +10,7 @@ import com.mogo.commons.AbsMogoApplication import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.och.common.module.manager.autopilot.line.LineManager +import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.utils.ResourcesUtils import com.mogo.och.common.module.wigets.dialog.CommonDialogStatus import com.mogo.och.common.module.wigets.CommonSlideView @@ -131,6 +132,15 @@ class TaskRunningView: ConstraintLayout, TaskRunningModel.SwtichLineViewCallback showRunningTaskInfo() } + override fun smoothScrollToPosition(position: Int) { + try { + rl_running_task_station_list.smoothScrollToPosition(position) + }catch (e:Exception){ + OchChainLogManager.writeChainLog("错误","e:${e.message}") + } + + } + fun showLeaveStationView(){ aciv_task_leave_station_slide_bg.visibility = VISIBLE actv_arriver_station.visibility = GONE