android短视频开发,不设置滑动限制,可一直往下滑

android短视频开发,不设置滑动限制,可一直往下滑实现的相关代码

1
 companion object {<br>        val TAG = "Main"<br>    }<br> <br> <br>    private val adapter by lazy {<br>        object : BaseQuickAdapter<Int, BaseViewHolder>(R.layout.item_layout) {<br>            override fun convert(helper: BaseViewHolder?, item: Int?) {<br>                helper?.itemView?.apply {<br>                    textView.text = "hello world$item"<br>                }<br>            }<br> <br>            override fun getItemCount(): Int {<br>                return Int.MAX_VALUE<br>            }<br> <br>            override fun getItem(position: Int): Int? {<br>                return data[position % data.size]<br>            }<br> <br>            override fun getItemViewType(position: Int): Int {<br>                var count = headerLayoutCount + data.size<br>                if (count <= 0) {<br>                    count = 1<br>                }<br>                return super.getItemViewType(position % count)<br>            }<br>        }<br>    }<br> <br>    var handler = Handler()<br>    var currentInt = 0<br> <br>    override fun onCreate(savedInstanceState: Bundle?) {<br>        super.onCreate(savedInstanceState)<br>        setContentView(R.layout.activity_camrea)<br> <br>        recyclerView.layoutManager = linearLayoutManager<br>        recyclerView.setHasFixedSize(true)<br> <br>        recyclerView.adapter = adapter<br>        adapter.setNewData(<br>            listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)<br>        )<br> <br>        //PagerSnapHelper().attachToRecyclerView(recyclerView)<br> <br>        play()<br> <br>        recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {<br>            override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {<br>                super.onScrolled(recyclerView, dx, dy)<br>                play()<br>            }<br> <br>            override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {<br>                super.onScrollStateChanged(recyclerView, newState)<br>                <br>                /*if (newState == RecyclerView.SCROLL_STATE_IDLE) {<br>                    play()<br>                }*/<br>                <br>            }<br>        })<br>        <br>        /*var animator=ValueAnimator.ofInt(0,recyclerView.height)<br>        animator.duration=2000<br>        animator.addUpdateListener { <br>            var a=it.animatedValue as Int<br>            recyclerView.translationY=-a.toFloat()<br>            recyclerView.requestLayout()<br>        }<br>        animator.repeatMode=ValueAnimator.REVERSE<br>        animator.repeatCount=ValueAnimator.INFINITE<br>        animator.start()*/<br> <br>    }<br> <br>    private fun play() {<br>        currentInt++<br>        recyclerView.smoothScrollToPosition(currentInt)<br>        /*handler.postDelayed({<br>            currentInt++<br>            //recyclerView.scrollToPosition(currentInt)<br>            recyclerView.smoothScrollToPosition(currentInt)<br>//            val layoutManager = recyclerView.layoutManager as LinearLayoutManager<br>//            layoutManager.scrollToPositionWithOffset(currentInt, 0)<br>        }, 2000)*/<br>    }<br>    var linearLayoutManager: LinearLayoutManager = object : LinearLayoutManager(this) {<br>        override fun smoothScrollToPosition(<br>            recyclerView: RecyclerView,<br>            state: RecyclerView.State,<br>            position: Int<br>        ) {<br>            val smoothScroller: LinearSmoothScroller =<br>                object : LinearSmoothScroller(recyclerView.context) {<br>                    override fun calculateSpeedPerPixel(displayMetrics: DisplayMetrics): Float {<br>                        // 返回:滑过1px时经历的时间(ms)。                                                                              <br>                        return 20000f / displayMetrics.densityDpi<br>                    }<br> <br>                    override fun calculateDtToFit(<br>                        viewStart: Int,<br>                        viewEnd: Int,<br>                        boxStart: Int,<br>                        boxEnd: Int,<br>                        snapPreference: Int<br>                    ): Int {<br>                        return boxStart - viewStart<br>                    }<br>                }<br>            smoothScroller.targetPosition = position<br>            startSmoothScroll(smoothScroller)<br>            <br>        }<br>    }

​  以上就是android短视频开发,不设置滑动限制,可一直往下滑实现的相关代码, 更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(64)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示