优化route页交互体验,修复有无数据切换布局错位bug
This commit is contained in:
@@ -30,7 +30,7 @@ android {
|
||||
targetSdkVersion 35
|
||||
versionCode 2202
|
||||
// versionName "2.2.2"
|
||||
versionName "2.2.2-Beta3"
|
||||
versionName "2.2.2-Beta4"
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
||||
|
||||
@@ -75,28 +75,36 @@ class RouteV3Fragment : BaseFragment<FragmentRouteV3Binding>(FragmentRouteV3Bind
|
||||
// private var isFirst = true
|
||||
private var mProgress = 0
|
||||
|
||||
//原来有列表一个元素的高度
|
||||
private var mLastScrollViewHeight = 0
|
||||
|
||||
private var mTotalHeight = 0
|
||||
|
||||
private lateinit var mHistoryFenceAdapter: HistoryFenceAdapter
|
||||
private val mAllHistoryFenceList = mutableListOf<MessageBean>()
|
||||
|
||||
//充值续费或升级返回类型
|
||||
private var mRechargeBackType = ConstantInt.SpecialType
|
||||
|
||||
//列表是否展开
|
||||
//列表是否滑到顶部展开
|
||||
private var isListExpand = false
|
||||
|
||||
//判断是否滑过
|
||||
private var isHaveSlide = false
|
||||
|
||||
//手指滑动的y坐标点
|
||||
private var mLastY = 0f
|
||||
|
||||
//手指滑动时布局移动高度
|
||||
private var mDiffHeight = 0
|
||||
|
||||
//是否上滑
|
||||
private var isSlideUp = false
|
||||
|
||||
//布局可以滑的总高度
|
||||
private var mTotalHeight = 0
|
||||
|
||||
//底部列表有一个元素的高度+日历的高度
|
||||
private var mLastScrollViewHeight = 0
|
||||
|
||||
//选择日期布局的高度(包括有SeekBar的高度)
|
||||
private var mCalendarLayoutHaveSeekBarHeight = 0
|
||||
|
||||
// private lateinit var mTopSlideLayoutManager: TopSlideLayoutManager
|
||||
|
||||
companion object {
|
||||
@@ -148,6 +156,7 @@ class RouteV3Fragment : BaseFragment<FragmentRouteV3Binding>(FragmentRouteV3Bind
|
||||
if (rlMapRouteLineV3TimeLayout.isVisible) {
|
||||
if (mTotalHeight == 0) {
|
||||
mTotalHeight = cvHomeRouteV3Card.height + svHomeRouteMapScroll.height
|
||||
mCalendarLayoutHaveSeekBarHeight = rlHomeRouteCalendarV3Layout.height
|
||||
mLastScrollViewHeight = svHomeRouteMapScroll.height
|
||||
}
|
||||
|
||||
@@ -178,13 +187,20 @@ class RouteV3Fragment : BaseFragment<FragmentRouteV3Binding>(FragmentRouteV3Bind
|
||||
|
||||
MotionEvent.ACTION_UP -> {
|
||||
LogUtil.e("ACTION_UP")
|
||||
// val layoutParams = svHomeRouteMapScroll.layoutParams
|
||||
if (mDiffHeight > mTotalHeight / 2) {
|
||||
setSeekBarShowHide(false)
|
||||
// layoutParams.height = mTotalHeight
|
||||
// svHomeRouteMapScroll.layoutParams = layoutParams
|
||||
animateViewHeight(svHomeRouteMapScroll, mTotalHeight)
|
||||
isListExpand = true
|
||||
if (isSlideUp) {
|
||||
animateViewHeight(svHomeRouteMapScroll, mTotalHeight)
|
||||
} else {
|
||||
animateViewHeight(svHomeRouteMapScroll, mTotalHeight / 2)
|
||||
svHomeRouteMapScroll.postDelayed(
|
||||
{
|
||||
//重新设置地图缩放级别
|
||||
mHistoryDataMapCommon.setLatLngData(mHistoryDataList)
|
||||
}, 500
|
||||
)
|
||||
}
|
||||
} else {
|
||||
if (mDiffHeight > mLastScrollViewHeight) {
|
||||
val height = if (isSlideUp) {
|
||||
@@ -203,11 +219,13 @@ class RouteV3Fragment : BaseFragment<FragmentRouteV3Binding>(FragmentRouteV3Bind
|
||||
}
|
||||
mLastScrollViewHeight
|
||||
}
|
||||
animateViewHeight(svHomeRouteMapScroll, height, 300)
|
||||
animateViewHeight(svHomeRouteMapScroll, height)
|
||||
}
|
||||
// svHomeRouteMapScroll.layoutParams = layoutParams
|
||||
svHomeRouteMapScroll.postDelayed(
|
||||
{ mHistoryDataMapCommon.setLatLngData(mHistoryDataList) }, 500
|
||||
{
|
||||
//重新设置地图缩放级别
|
||||
mHistoryDataMapCommon.setLatLngData(mHistoryDataList)
|
||||
}, 500
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -235,7 +253,7 @@ class RouteV3Fragment : BaseFragment<FragmentRouteV3Binding>(FragmentRouteV3Bind
|
||||
initState()
|
||||
}
|
||||
|
||||
private fun animateViewHeight(view: View, targetHeight: Int, duration: Long = 500) {
|
||||
private fun animateViewHeight(view: View, targetHeight: Int, duration: Long = 300) {
|
||||
val animator = ValueAnimator.ofInt(view.height, targetHeight)
|
||||
animator.duration = duration // 设置动画持续时间
|
||||
animator.interpolator = LinearInterpolator() // 设置插值器
|
||||
@@ -387,18 +405,23 @@ class RouteV3Fragment : BaseFragment<FragmentRouteV3Binding>(FragmentRouteV3Bind
|
||||
}
|
||||
} else {
|
||||
mViewBinding.rlMapRouteLineV3TimeLayout.visibility = View.GONE
|
||||
if (isHaveSlide) {
|
||||
val lastScrollViewNoListHeight =
|
||||
mViewBinding.rlHomeRouteCalendarV3Layout.height
|
||||
if (isHaveSlide) {
|
||||
val layoutParams =
|
||||
mViewBinding.svHomeRouteMapScroll.layoutParams
|
||||
layoutParams.height = lastScrollViewNoListHeight
|
||||
layoutParams.height =
|
||||
if (mViewBinding.vsbMapRouteLineV3.isVisible) mCalendarLayoutHaveSeekBarHeight
|
||||
else lastScrollViewNoListHeight
|
||||
mViewBinding.svHomeRouteMapScroll.layoutParams = layoutParams
|
||||
}
|
||||
isListExpand = false
|
||||
}
|
||||
if (mViewBinding.cvHomeRouteV3Card.height > 0) mViewBinding.svHomeRouteMapScroll.postDelayed(
|
||||
{ mHistoryDataMapCommon.setLatLngData(mHistoryDataList) }, 200
|
||||
{
|
||||
//重新设置地图缩放级别
|
||||
mHistoryDataMapCommon.setLatLngData(mHistoryDataList)
|
||||
}, 200
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -508,7 +531,9 @@ class RouteV3Fragment : BaseFragment<FragmentRouteV3Binding>(FragmentRouteV3Bind
|
||||
vsbMapRouteLineV3.visibility = View.VISIBLE
|
||||
ivMapRouteLineV3LastBtn.visibility = View.VISIBLE
|
||||
ivMapRouteLineV3NextBtn.visibility = View.VISIBLE
|
||||
LogUtil.e("显示")
|
||||
} else {
|
||||
LogUtil.e("隐藏")
|
||||
vsbMapRouteLineV3.visibility = View.GONE
|
||||
ivMapRouteLineV3LastBtn.visibility = View.GONE
|
||||
ivMapRouteLineV3NextBtn.visibility = View.GONE
|
||||
|
||||
@@ -859,7 +859,7 @@ class MapV3Fragment : BaseFragment<FragmentMapV3Binding>(FragmentMapV3Binding::i
|
||||
if (SRBleUtil.instance.isMacConnect(pet.macID)) {
|
||||
showToast(R.string.txt_pet_close, gravity = Gravity.CENTER)
|
||||
} else if (null != mMapDeviceBean && mMapDeviceBean!!.powerSwitch == ConstantInt.Type2) {
|
||||
val string = String.format(getString(R.string.txt_move_wake), pet.petName)
|
||||
val string = String.format(getString(R.string.txt_move_wake_up), pet.petName)
|
||||
showToast(string, gravity = Gravity.CENTER)
|
||||
} else if (!isCanLive) {
|
||||
showToast(R.string.txt_locate_works, gravity = Gravity.CENTER)
|
||||
@@ -956,7 +956,7 @@ class MapV3Fragment : BaseFragment<FragmentMapV3Binding>(FragmentMapV3Binding::i
|
||||
)
|
||||
ViewUtil.instance.addMenuBean(
|
||||
mapList,
|
||||
getString(R.string.map_navigate_map_baidu),
|
||||
getString(R.string.map_baidu_map),
|
||||
mMapBaiduPackageName,
|
||||
R.drawable.ico_map_gaode
|
||||
)
|
||||
|
||||
@@ -454,7 +454,7 @@ class MapViewModel : ViewModel() {
|
||||
R.drawable.icon_device_sleep_image, 0, 0, 0
|
||||
)
|
||||
it.text = String.format(
|
||||
context.getString(R.string.txt_fully_asleep),
|
||||
context.getString(R.string.txt_fell_asleep),
|
||||
getTimeDifference(updateTime * 1000, System.currentTimeMillis())
|
||||
)
|
||||
ViewUtil.instance.viewShow(closeBtn)
|
||||
|
||||
@@ -53,7 +53,6 @@
|
||||
android:id="@+id/rl_home_route_calendar_v3_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
android:layout_marginHorizontal="@dimen/dp_8"
|
||||
android:background="@drawable/shape_home_route_calendar_bg"
|
||||
android:padding="@dimen/dp_12">
|
||||
|
||||
@@ -1073,9 +1073,9 @@
|
||||
<string name="txt_load_more_pull_text">Pull to load more</string>
|
||||
<string name="txt_load_more_release_text">Release to load</string>
|
||||
<string name="txt_fully_charged">Fully charged</string>
|
||||
<string name="txt_fully_asleep">Fell asleep %s ago</string>
|
||||
<string name="txt_move_wake">Move %s to wake up</string>
|
||||
<string name="map_navigate_map_baidu">Baidu Map</string>
|
||||
<string name="txt_fell_asleep">Fell asleep %s ago</string>
|
||||
<string name="txt_move_wake_up">Move %s to wake up</string>
|
||||
<string name="map_baidu_map">Baidu Map</string>
|
||||
<string name="txt_time_line">Timeline</string>
|
||||
<string name="txt_phone_close_device">Keep phone close to device</string>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user