[fea]
[滚动触发]
This commit is contained in:
yangyakun
2024-10-22 18:57:41 +08:00
parent 32cf2592bb
commit c826004550
5 changed files with 48 additions and 2 deletions

View File

@@ -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)
}
}
}

View File

@@ -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

View File

@@ -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<ShuttleFragment?, BusPresenter?>() {
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 :

View File

@@ -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()
}
}

View File

@@ -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