You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hey guys,
when I try to use Spotlight inside a NestedScrollView in the first target everything is fine. and after I scroll to the component that I need spotlight will light that component, then I need to scroll to the next component and use the spotlight. next() on that, somewhere else will light, I think the previous place for the second component, I just pass layout inflater to spotlight function one time, and I think maybe view after the second scroll won't update. may please guide me I must fix this issue?
here is my function for handle spotlight:
fun startFundSpotlight(
layoutInflater: LayoutInflater,
activity: Activity,
viewModel: FundOverviewViewModel
) {
val targets = ArrayList<Target>()
var spot: Spotlight? = null
val fundDetailsRoot = FrameLayout(activity.applicationContext)
val fundDetails =
layoutInflater.inflate(R.layout.layout_fund_otp_user_walkthrough, fundDetailsRoot)
val fundTarget = activity.findViewById<Button>(R.id.btn_fund_start)?.let {
Target.Builder()
.setAnchor(it)
.setShape(RoundedRectangle(it.height.toFloat(), it.width.toFloat(), 65f, 200))
.setOverlay(fundDetails)
.setOnTargetListener(object : OnTargetListener {
override fun onStarted() {
val viewPager = activity.findViewById<ViewPager>(R.id.pagerFundWalkthrough)
val indicator = activity.findViewById<PagerIndicator>(R.id.pagerFundIndicator)
viewPager.adapter =
OtpUserFundOverviewWalkthroughPagerAdapter(
activity.applicationContext
)
var current = 0
viewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
override fun onPageScrolled(
position: Int,
positionOffset: Float,
positionOffsetPixels: Int
) {
}
override fun onPageSelected(position: Int) {
indicator.current = position
if (position in (current + 1)..1) {
viewModel.isFundSpotlightPresented.postValue(true)
fundDetails.refreshDrawableState()
fundDetails.invalidate()
spot?.next()
} else if (current > position && position <= 1) {
spot?.previous()
viewModel.isFundSpotlightViewPagerMovePrevious.postValue(true)
}
current = position
}
override fun onPageScrollStateChanged(state: Int) {}
})
}
override fun onEnded() {
}
})
.build()
}
if (fundTarget != null) {
targets.add(fundTarget)
}
val fundChartTarget = activity.findViewById<FrameLayout>(R.id.fundChart)?.let {
Target.Builder()
.setAnchor(it)
.setShape(RoundedRectangle(it.height.toFloat(), it.width.toFloat(), 5f, 200))
.setOverlay(fundDetails)
.build()
}
if (fundChartTarget != null) {
targets.add(fundChartTarget)
}
spot = Spotlight.Builder(activity)
.setTargets(targets)
.setBackgroundColorRes(R.color.spotlightBackground)
.setDuration(200L)
.setAnimation(DecelerateInterpolator(2f))
.build()
spot.start()
val closeWalkthrough = View.OnClickListener {
spot.finish()
}
fundDetails.findViewById<View>(R.id.txt_fund_walkthrough_quick_help_stop)
.setOnClickListener(closeWalkthrough)
}
The text was updated successfully, but these errors were encountered:
Hey guys,
when I try to use Spotlight inside a NestedScrollView in the first target everything is fine. and after I scroll to the component that I need spotlight will light that component, then I need to scroll to the next component and use the spotlight. next() on that, somewhere else will light, I think the previous place for the second component, I just pass layout inflater to spotlight function one time, and I think maybe view after the second scroll won't update. may please guide me I must fix this issue?
here is my function for handle spotlight:
The text was updated successfully, but these errors were encountered: