Есть ли какая-нибудь библиотека, из которой мы можем получить эффект выделения в представлении реселлера (например, прокрутка изображений с помощью hotstar vip-страницы)? - PullRequest
0 голосов
/ 22 мая 2019

Blockquote

Я пытаюсь добиться автоматической прокрутки бесконечного просмотра, как у hotstar, на странице VIP-подписки hotstar.

Я попробовал указать код.

Для автоматической прокрутки с прокруткой: -

binding.rvPartyOfWeek.addOnScrollListener (CustomScrollListener ())

private val SCROLLING_RUNNABLE = object : Runnable {
    override fun run() {
        val duration = 10
        val pixelsToMove = 22

        if (!isPartyOfWeekScrolling) {
            binding.rvPartyOfWeek.smoothScrollBy(pixelsToMove, 0)
        }
        mHandler.postDelayed(this, duration.toLong())
    }
}

Для бесконечной прокрутки: -

binding.rvPartyOfWeek.addOnScrollListener(object : RecyclerView.OnScrollListener() {
            override fun onScrolled(recyclerView2: RecyclerView, dx: Int, dy: Int) {
                super.onScrolled(recyclerView2, dx, dy)
                val totalItemCount = layoutManagerparty.itemCount
                val lastVisibleItem = layoutManagerparty.findLastVisibleItemPosition()
                if (totalItemCount <= (lastVisibleItem + 3)) {
                    if (totalItemCount > 22) {
                        for (i in 0..10) {
                            listParty.removeAt(0)
                        }
                    }
                    listParty.addAll(listPartySingle)
                    adapterpartyofweek.notifyDataSetChanged()
                    Log.i("Helllo listParty", listParty.size.toString())
                }
            }
        })

Этона некоторых устройствах не происходит плавная прокрутка, а на некоторых старых устройствах происходит сбой.

1 Ответ

0 голосов
/ 26 мая 2019

Я сделал следующее:

  1. Создание автоматической прокрутки для RecyclerView

`

private fun autoScroll() {
        scrollCount = 0;
        var speedScroll: Long = 1200;
        val runnable = object : Runnable {
            override fun run() {
                if (layoutManager.findFirstVisibleItemPosition() >= imageArrayList.size / 2) {
                    adapter.load()
                }
                recyclerView.smoothScrollToPosition(scrollCount++)
                Log.e(TAG, "run: $scrollCount")
                handler.postDelayed(this, speedScroll)
            }
        }
        handler.postDelayed(runnable, speedScroll)
    }

`

  1. Автоматическое создание плавной прокрутки

`

layoutManager = object : LinearLayoutManager(this@MainActivity) {
            override fun smoothScrollToPosition(recyclerView: RecyclerView, state: RecyclerView.State?, position: Int) {
                val smoothScroller = object : LinearSmoothScroller(this@MainActivity) {
                    override fun calculateSpeedPerPixel(displayMetrics: DisplayMetrics?): Float {
                        return 5.0f;
                    }
                }
                smoothScroller.targetPosition = position
                startSmoothScroll(smoothScroller)
            }
        }

`

Для получения исходного кода, посмотрите ссылку на проект GitHub https://github.com/Mahesh2318/AutoScrollRecyclerView

...