怎么用“最”簡(jiǎn)單的方法實(shí)現(xiàn)一個(gè)跑馬燈廣告

S81018-19212752.gif

我是用recycleView實(shí)現(xiàn)的,每隔30毫秒調(diào)用一次smoothScrollBy(x,y)方法就可以了。

private fun startScroll() {
        Observable.interval(30, TimeUnit.MILLISECONDS)
                .takeUntil { stopScoll }
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe {
                    rvMarquee.smoothScrollBy(15, 0)
                }
    }

因?yàn)槲疫@個(gè)頁(yè)面每次onResume的時(shí)候都要刷新數(shù)據(jù),所以在請(qǐng)求數(shù)據(jù)成功后調(diào)用startScroll(),并將stopScroll置為false。然后在onPause()里將stopScroll置為true就可以了。因?yàn)榕荞R燈是無(wú)限跑的,但數(shù)據(jù)是不是很多,所以我直接將數(shù)據(jù)復(fù)制了1000份,這樣跑馬燈在短時(shí)間內(nèi)就不會(huì)停止了。

override fun onGetTaskCenterSuccess(taskcenter: TaskCenter) {
        val marqueeRecords = taskcenter.marqueeRecords
        val mutableList = mutableListOf<Marquee>()
        if (!marqueeRecords!!.isEmpty()) {
            (0..1000).forEach {
                mutableList.addAll(marqueeList)
            }
        }
        if (marqueeAdapter.data == null)
            marqueeAdapter.setNewData(mutableList)
        else
            marqueeAdapter.replaceData(mutableList)
        stopScoll = false
        startScroll()
    }
override fun onPause() {
        super.onPause()
        stopScoll = true
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容