guide 点击事件处理

This commit is contained in:
renhaoting 2025-12-16 16:46:43 +08:00
parent 109b01d9c6
commit 21ace7f399
5 changed files with 41 additions and 6 deletions

View File

@ -438,7 +438,9 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
HighlightPro.with(this@TasksFragment)
.setHighlightParameter {
HighlightParameter.Builder()
.setHighlightView(binding!!.goldContainer)
.setHighlightView(binding!!.goldContainer, {
val temp = 111
})
.setTipsViewId(R.layout.guide_step_gold)
.setHighlightShape(RectShape(10.dp, 10.dp, 10.dp))
.setHighlightHorizontalPadding(0.dp)
@ -448,7 +450,9 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
}
.setHighlightParameter {
HighlightParameter.Builder()
.setHighlightView(binding!!.cashContainer)
.setHighlightView(binding!!.cashContainer, {
val temp = 111
})
.setTipsViewId(R.layout.guide_step_cash)
.setHighlightShape(RectShape(10.dp, 10.dp, 10.dp))
.setHighlightHorizontalPadding(0.dp)

View File

@ -1,7 +1,10 @@
package com.ama.core.architecture.highlightpro
import android.annotation.SuppressLint
import android.app.Activity
import android.graphics.RectF
import android.view.LayoutInflater
import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
import androidx.core.view.doOnPreDraw
@ -64,14 +67,37 @@ internal class HighlightProImpl : HighlightViewInteractiveAction {
}
@SuppressLint("ClickableViewAccessibility")
override fun show() {
if (released) return
println("$TAG show")
//todo give user access to intercept click event
// if (!intercept) {
maskContainer.setOnClickListener(onClickListener)
//maskContainer.setOnClickListener(onClickListener)
// }
maskContainer.setOnTouchListener { v, event ->
when (event?.action) {
MotionEvent.ACTION_DOWN -> {
val highlightRect: RectF? = maskContainer.highLightViewParameters[0].rect
highlightRect?.let {
if (it.contains(event.x, event.y)) {
showNextHighLightView()
}
}
}
MotionEvent.ACTION_DOWN -> {
}
MotionEvent.ACTION_UP -> {
}
}
true
}
//if constructor's param is activity or view we care about rootView's attachedToWindow
//if constructor's param is fragment we care about [fragmentRootView]'s width is not 0
if ((isFragmentRoot.not() && rootView.isAttachToWindow()) ||

View File

@ -62,8 +62,11 @@ class HighlightParameter {
* [highLightView] is the view which you want to make it highLight
* And it will make [setHighlightViewId] useless.
*/
fun setHighlightView(highLightView: View): Builder {
fun setHighlightView(highLightView: View, onHighViewClicked: ()->Unit): Builder {
highlightParameter.highLightView = highLightView
highlightParameter.highLightView?.setOnClickListener {
onHighViewClicked.invoke()
}
return this
}

View File

@ -24,7 +24,7 @@ open class HighlightShape(val blurRadius: Float = 0.0f) {
}
}
protected var rect: RectF? = null
var rect: RectF? = null
/**
* init rect child should override initRect and init path
@ -33,6 +33,8 @@ open class HighlightShape(val blurRadius: Float = 0.0f) {
this.rect = rectF
}
/**
* draw our path
*/

View File

@ -24,7 +24,7 @@ internal class MaskContainer constructor(context: Context, attributeSet: Attribu
private var rootWidth: Int = 0
private var rootHeight: Int = 0
private var bgColor: Int = -1
private val highLightViewParameters = mutableListOf<HighlightParameter>()
val highLightViewParameters = mutableListOf<HighlightParameter>()
private val defaultHighlightBgColor: Int
get() = "#80000000".toColorInt()