Skip to content

Commit

Permalink
bugfix:当布局中的子View设置点击事件后,点击子View再拖动会导致位置错乱而跳动的问题
Browse files Browse the repository at this point in the history
  • Loading branch information
greyfreedom committed Jan 11, 2024
1 parent 00660d4 commit aa5ca64
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 7 deletions.
10 changes: 9 additions & 1 deletion app/src/main/java/com/petterp/floatingx/app/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import android.view.Gravity
import android.view.ViewGroup
import android.widget.FrameLayout
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.cardview.widget.CardView
import com.petterp.floatingx.FloatingX
Expand Down Expand Up @@ -38,7 +39,14 @@ class MainActivity : AppCompatActivity() {
addNestedScrollView {
addLinearLayout {
addItemView("显示全局悬浮窗") {
FloatingX.control(MultipleFxActivity.TAG_1).show(this@MainActivity)
FloatingX.control(MultipleFxActivity.TAG_1).apply {
updateViewContent { holder ->
val tv = holder.getViewOrNull<TextView>(R.id.tvItemFx)
tv?.setOnClickListener {
Toast.makeText(this@MainActivity, "文字被点击", Toast.LENGTH_SHORT).show()
}
}
}.show(this@MainActivity)
}
addItemView("隐藏全局悬浮窗") {
FloatingX.control(MultipleFxActivity.TAG_1).hide()
Expand Down
5 changes: 3 additions & 2 deletions app/src/main/res/layout/item_floating.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@

<TextView
android:id="@+id/tvItemFx"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:padding="5dp"
android:text="浮窗1"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,10 @@ class FxManagerView @JvmOverloads constructor(
intercepted = configHelper.checkInterceptedEvent(ev)
helper.fxLog?.d("fxView---onInterceptTouchEvent-[move], interceptedTouch-$intercepted")
}
MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
touchToPointerUp(ev, performClick = false)
helper.fxLog?.d("fxView---onInterceptTouchEvent-[up]")
}
}
return intercepted
}
Expand Down Expand Up @@ -262,9 +266,9 @@ class FxManagerView @JvmOverloads constructor(
}
}

private fun touchToPointerUp(event: MotionEvent) {
private fun touchToPointerUp(event: MotionEvent, performClick: Boolean = true) {
if (configHelper.isCurrentPointerId(event)) {
touchToCancel()
touchToCancel(performClick)
} else {
helper.fxLog?.d("fxView---onTouchEvent--ACTION_POINTER_UP---id:${event.pointerId}->")
}
Expand All @@ -279,11 +283,13 @@ class FxManagerView @JvmOverloads constructor(
}
}

private fun touchToCancel() {
private fun touchToCancel(performClick: Boolean = true) {
moveToEdge()
helper.iFxScrollListener?.up()
configHelper.touchDownId = INVALID_TOUCH_ID
clickHelper.performClick(this)
if (performClick) {
clickHelper.performClick(this)
}
helper.fxLog?.d("fxView---onTouchEvent---MainTouchCancel->")
}

Expand Down

0 comments on commit aa5ca64

Please sign in to comment.