fix: 下拉手势改为在状态栏区域检测(避免ViewPager2拦截)
状态栏区域扩大为40dp触摸区,在此区域检测下拉手势进入考勤页 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -273,7 +273,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
|
|||||||
findNavController().navigate(R.id.action_home_to_taskList, bundle)
|
findNavController().navigate(R.id.action_home_to_taskList, bundle)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 设置下拉手势 → 进入考勤打卡页 */
|
/** 设置下拉手势 → 进入考勤打卡页(在状态栏区域检测) */
|
||||||
@android.annotation.SuppressLint("ClickableViewAccessibility")
|
@android.annotation.SuppressLint("ClickableViewAccessibility")
|
||||||
private fun setupPullDownGesture() {
|
private fun setupPullDownGesture() {
|
||||||
val gestureDetector = android.view.GestureDetector(
|
val gestureDetector = android.view.GestureDetector(
|
||||||
@@ -287,21 +287,22 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
|
|||||||
): Boolean {
|
): Boolean {
|
||||||
if (e1 == null) return false
|
if (e1 == null) return false
|
||||||
val dy = e2.y - e1.y
|
val dy = e2.y - e1.y
|
||||||
val dx = e2.x - e1.x
|
// 下拉手势(dy > 0 且速度 > 0)
|
||||||
// 下拉(dy > 0)且垂直幅度 > 水平
|
if (dy > 30 && velocityY > 100) {
|
||||||
if (dy > 80 && kotlin.math.abs(dy) > kotlin.math.abs(dx)) {
|
|
||||||
navigateToPunch()
|
navigateToPunch()
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onDown(e: android.view.MotionEvent): Boolean = true
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
// 给 ViewPager2 内部的 RecyclerView 添加触摸监听
|
// 在状态栏上方的触摸区域检测下拉(不被 ViewPager2 拦截)
|
||||||
binding.viewPager.getChildAt(0)?.setOnTouchListener { _, event ->
|
binding.pullDownArea.setOnTouchListener { _, event ->
|
||||||
gestureDetector.onTouchEvent(event)
|
gestureDetector.onTouchEvent(event)
|
||||||
false
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,12 +9,20 @@
|
|||||||
android:paddingTop="27dp"
|
android:paddingTop="27dp"
|
||||||
android:paddingEnd="21dp">
|
android:paddingEnd="21dp">
|
||||||
|
|
||||||
<!-- 固定状态栏(不随 ViewPager2 滑动) -->
|
<!-- 固定状态栏(不随 ViewPager2 滑动)+ 下拉触摸区域 -->
|
||||||
<com.xiaoqu.watch.ui.widget.StatusBarView
|
<FrameLayout
|
||||||
android:id="@+id/statusBar"
|
android:id="@+id/pullDownArea"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="24dp"
|
android:layout_height="40dp"
|
||||||
android:layout_marginBottom="3dp" />
|
android:layout_marginBottom="3dp">
|
||||||
|
|
||||||
|
<com.xiaoqu.watch.ui.widget.StatusBarView
|
||||||
|
android:id="@+id/statusBar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="24dp"
|
||||||
|
android:layout_gravity="center_vertical" />
|
||||||
|
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
<!-- ViewPager2 在状态栏下方滑动 -->
|
<!-- ViewPager2 在状态栏下方滑动 -->
|
||||||
<androidx.viewpager2.widget.ViewPager2
|
<androidx.viewpager2.widget.ViewPager2
|
||||||
|
|||||||
Reference in New Issue
Block a user