Android ViewPager2,上一项和下一项变暗处理

发布于 2025-01-09 12:07:40 字数 549 浏览 1 评论 0原文

输入图片这里的描述

如上图所示,我想把之前的& ViewPager2 中的下一个项目。

setPageTransformer(object : ViewPager2.PageTransformer {
            override fun transformPage(page: View, position: Float) {
                page.translationX = -pageTranslationX * position
                page.scaleY = 1 - (0.15f * abs(position))
            }
        })

我使用上面的代码片段显示预览,但我找不到将其变暗的方法。

有好的解决办法吗?

enter image description here

As shown in the picture above, I want to darken the previous & next items in the ViewPager2.

setPageTransformer(object : ViewPager2.PageTransformer {
            override fun transformPage(page: View, position: Float) {
                page.translationX = -pageTranslationX * position
                page.scaleY = 1 - (0.15f * abs(position))
            }
        })

I'm showing the preview with the above snippet, but I couldn't find a way to darken it.

Is there a good solution?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

本王不退位尔等都是臣 2025-01-16 12:07:40

您可以利用映射到页面当前位置的 position 参数来获取基于页面位置的颜色阴影;这也将有利于对最暗和最暗之间的颜色进行分级。大多数颜色变亮,以便颜色逐渐变化:

  • 为变亮颜色和变暗颜色创建两个颜色资源
  • 使用ColorUtils.blendARGB()根据位置的百分比获取颜色。
  • 将新背景颜色设置为页面的根视图
setPageTransformer(object : ViewPager2.PageTransformer {
        override fun transformPage(page: View, position: Float) {
            page.translationX = -pageTranslationX * position
            page.scaleY = 1 - (0.15f * abs(position))
            
            val startColor = ContextCompat.getColor(this, R.color.light_blue)
            val endColor = ContextCompat.getColor(this, R.color.dark_blue)
            val color = ColorUtils.blendARGB(startColor, endColor, abs(position))
            val view = page.findViewById<LinearLayout>(R.id.page_root) //  this is the page fragment root view (make sure to set its id)
            view?.setBackgroundColor(color)
            
        }
    })

结果:

You can utilize the position parameter, that maps to the current position of the page, to get a color shade based on the page position; this also will benefit in grading the colors between the most darken & most lighten colors so that the color changes gradually:

  • Create two color resource for the lighten color and darken colors
  • Use ColorUtils.blendARGB() to get a color based on percentage of the position.
  • Set the new background color to the root view of the page
setPageTransformer(object : ViewPager2.PageTransformer {
        override fun transformPage(page: View, position: Float) {
            page.translationX = -pageTranslationX * position
            page.scaleY = 1 - (0.15f * abs(position))
            
            val startColor = ContextCompat.getColor(this, R.color.light_blue)
            val endColor = ContextCompat.getColor(this, R.color.dark_blue)
            val color = ColorUtils.blendARGB(startColor, endColor, abs(position))
            val view = page.findViewById<LinearLayout>(R.id.page_root) //  this is the page fragment root view (make sure to set its id)
            view?.setBackgroundColor(color)
            
        }
    })

Result:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文