From ea94b27bd4e1ceb1f203b8006cdd61af9e95973b Mon Sep 17 00:00:00 2001 From: wushaocheng <15876365887@163.com> Date: Fri, 3 Feb 2023 18:09:21 +0800 Subject: [PATCH] =?UTF-8?q?[Modify]=E4=BC=98=E5=8C=96Viewpager2=E6=BB=91?= =?UTF-8?q?=E5=8A=A8=E5=A4=AA=E7=81=B5=E6=95=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/res/layout/fragment_recommend.xml | 6 +- .../main/res/layout/fragment_room_common.xml | 2 +- .../main/res/layout/fragment_room_game.xml | 4 +- .../main/res/layout/fragment_room_like.xml | 8 +-- .../common/widget/VpRecyclerView.kt | 70 +++++++++++++++++++ 5 files changed, 80 insertions(+), 10 deletions(-) create mode 100644 library/src/module_common/java/com/yizhuan/xchat_android_library/common/widget/VpRecyclerView.kt diff --git a/app/src/main/res/layout/fragment_recommend.xml b/app/src/main/res/layout/fragment_recommend.xml index 1851f50c6..c1432a2db 100644 --- a/app/src/main/res/layout/fragment_recommend.xml +++ b/app/src/main/res/layout/fragment_recommend.xml @@ -92,7 +92,7 @@ android:gravity="center_vertical" android:orientation="horizontal"> - - - - - + android:textSize="@dimen/sp_16" /> diff --git a/app/src/main/res/layout/fragment_room_like.xml b/app/src/main/res/layout/fragment_room_like.xml index fee32ddb6..5b27f759c 100644 --- a/app/src/main/res/layout/fragment_room_like.xml +++ b/app/src/main/res/layout/fragment_room_like.xml @@ -26,7 +26,7 @@ android:textColor="#b3333333" android:textSize="14sp" /> - + app:layout_constraintTop_toTopOf="@id/tv_like" + app:drawableRightCompat="@drawable/arrow_right" /> - { + //当手指按下时,得到了X,Y, + startX = ev.x.toInt() + startY = ev.y.toInt() + // + parent.requestDisallowInterceptTouchEvent(true) + } + MotionEvent.ACTION_MOVE -> { + //抬起手后得到的坐标, + val endX = ev.x.toInt() + val endY = ev.y.toInt() + //得到绝对值 。 + val disX = abs(endX - startX) + val disY = abs(endY - startY) + //如果X轴 大于Y 轴,说明实在左右移动 为什么? + // 屏幕坐标,X,Y从左上角开始。0,0 + if (disX > disY) { + Log.e("ACTIONdisX > disY:", "$disX") + //这个地方,判断了左右滑动的灵敏度,只有当左右滑动距离110 此时父布局才有作用,不拦截。 + if (disX > 110) { //结束的时候大于 + //当滑动的距离大于100的时候,才不拦截parent的事件 父控件才会有用。 + parent.requestDisallowInterceptTouchEvent(false) + } + } else { + // 说明是上下滑动 //canScrollVertically 检查此视图是否可以按某个方向垂直滚动。 负数表示上下滚动。正数表示左右滚动 + //return true如果视图可以按指定的方向滚动,否则为false。 + //既然是上下滑动,此时,父控件就不能有 事件 true停止 + parent.requestDisallowInterceptTouchEvent(true) + + + } + } + MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> parent.requestDisallowInterceptTouchEvent(false) + } + + + return super.dispatchTouchEvent(ev) + + } +} + +