首页 > 解决方案 > 如何实现recyclerview的轮播效果

问题描述

我正在尝试像这样在 recyclerView 中实现类似轮播的效果。我找不到用于缩放和移动视图的正确功能。此外,到达 recyclerview 顶部的视图不能滚动出 recyclerview 的边缘,而是坚持它们

override fun scrollVerticallyBy(dy: Int, recycler: RecyclerView.Recycler?, state: RecyclerView.State?): Int {
        for (i in 0 until childCount) {
            val item = getChildAt(i)
            val recyclerCenter = height / 2f
            val distance = max(abs(recyclerCenter - getDecoratedTop(item!!) / 2f), recyclerCenter - getDecoratedTop(item) / 2f)
            val ratio = (recyclerCenter - item.height / 2f - distance) / (recyclerCenter - item.height / 2f) + 1
            item.translationZ = (ratio * 1000f)
            item.alpha = ratio
            item.translationY = -(ratio.pow(2)*10)
            item.scaleX = ratio
            item.scaleY = ratio
        }
        return super.scrollVerticallyBy(dy, recycler, state)
    }

我已经尝试了一些解决方案,比如 carousellalayoutmanager,但是它们都缩放了所有视图,而不是在 recyclerview 的中心

标签: androidandroid-recyclerviewcarousellinearlayoutmanager

解决方案


推荐阅读