diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java index 3d14392c01..ffa4d7ad1b 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java @@ -24,6 +24,7 @@ import com.mogo.och.bus.passenger.bean.BusPassengerStation; import com.mogo.och.bus.passenger.callback.IBusPassengerMapViewCallback; import com.mogo.och.bus.passenger.constant.BusPassengerConst; import com.mogo.och.bus.passenger.presenter.BaseBusPassengerPresenter; +import com.mogo.och.bus.passenger.ui.layoutmanager.CenterLayoutManager; import com.mogo.och.bus.passenger.utils.BPRouteDataTestUtils; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; @@ -88,7 +89,7 @@ public class BusPassengerRouteFragment extends mRouteInfoView = findViewById(R.id.bus_p_line_cl); mStationsListRv = findViewById(R.id.bus_p_line_stations_rl); - LinearLayoutManager manager = new LinearLayoutManager(getContext()); + CenterLayoutManager manager = new CenterLayoutManager(getContext()); mStationsListRv.setLayoutManager(manager); mAdapter = new BusPassengerLineStationsAdapter(getContext(), mStationsList); mStationsListRv.setAdapter(mAdapter); diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/layoutmanager/CenterLayoutManager.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/layoutmanager/CenterLayoutManager.java new file mode 100644 index 0000000000..42210cbcaf --- /dev/null +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/layoutmanager/CenterLayoutManager.java @@ -0,0 +1,42 @@ +package com.mogo.och.bus.passenger.ui.layoutmanager; + +import android.content.Context; +import android.util.AttributeSet; + +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.LinearSmoothScroller; +import androidx.recyclerview.widget.RecyclerView; + +public class CenterLayoutManager extends LinearLayoutManager { + public CenterLayoutManager(Context context) { + super(context); + } + + public CenterLayoutManager(Context context, int orientation, boolean reverseLayout) { + super(context, orientation, reverseLayout); + } + + public CenterLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + + @Override + public void smoothScrollToPosition(RecyclerView recyclerView, RecyclerView.State state, int position) { + RecyclerView.SmoothScroller smoothScroller = new CenterSmoothScroller(recyclerView.getContext()); + smoothScroller.setTargetPosition(position); + startSmoothScroll(smoothScroller); + } + + private static class CenterSmoothScroller extends LinearSmoothScroller { + + CenterSmoothScroller(Context context) { + super(context); + } + + @Override + public int calculateDtToFit(int viewStart, int viewEnd, int boxStart, int boxEnd, int snapPreference) { + return (boxStart + (boxEnd - boxStart) / 2) - (viewStart + (viewEnd - viewStart) / 2); + } + } + +} \ No newline at end of file diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/BusSwitchLineActivity.kt b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/BusSwitchLineActivity.kt index 581690e7e4..7251642f32 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/BusSwitchLineActivity.kt +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/BusSwitchLineActivity.kt @@ -10,6 +10,7 @@ import android.widget.ImageView import android.widget.TextView import androidx.constraintlayout.widget.ConstraintLayout import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.PagerSnapHelper import androidx.recyclerview.widget.RecyclerView import com.mogo.commons.mvp.MvpActivity import com.mogo.eagle.core.utilcode.util.SharedPrefs @@ -70,6 +71,7 @@ class BusSwitchLineActivity : MvpActivity mLineCommitBtn.setOnClickListener(this) mLinesListView = findViewById(R.id.switch_line_rv) linearLayoutManager = LinearLayoutManager(this) + PagerSnapHelper().attachToRecyclerView(mLinesListView) mLinesListView.setLayoutManager(linearLayoutManager) mLinesListView.setItemAnimator(OpenItemAnimator()) mAdapter = SwitchLineAdapter(applicationContext, mData)