我正在一个Android库上将 图像显示为固定的背景图像。为此,我基于locationOnScreen每10ms动态调整一次图像的位置。我知道这是一个很棒的解决方案,但是我在这里要改善这个问题:)
这样做的问题是,有一个小故障时,父滚动视图滚动速度过快,而另一种观点是移动图像跳转。(点击gif查看完整的演示)
因为它是一个库,所以我不想在集成lib时增加复杂性,这意味着没有滚动侦听器,主题或没有窗口覆盖等。
尝试的解决方案:
-更改循环延迟
-库无法使用窗口背景
-无法访问活动主题或类似内容
处理程序
override fun run() {
fixedBackgroundImageLayout.getLocationOnScreen(locationOnScreen)
fixedBackgroundImagePlugin.update(locationOnScreen)
handler.postDelayed(this, 10)
}
FixedBackgroundImagePlugin#update
override fun update(locationOnScreen: IntArray) {
if (backgroundImageFrameLayout == null) {
return
}
yPosition = parentLocationOnScreen[1] - locationOnScreen[1]
backgroundImageFrameLayout.top = 2 * yPosition - lastYPosition - 10
lastYPosition = yPosition
}
backgroundImageFrameLayout将该图像作为背景图像。
我还设置了一个示例存储库,以帮助您在需要时进行挖掘。
我愿意接受任何建议/线索