直播平台源代码,循环滚动RecyclerView的实现
直播平台源代码,循环滚动RecyclerView的实现
由于RecyclerView不支持自动滚动,那么首先我们需要进行一些自定义操作。
让RecyclerView自动滚动有两种思路。
方法1:添加属性动画,每次动画回调监听滚动1PX
方法2:使用postDelayed每隔一段时间发送一条消息,滚动RecyclerView。
1 | public class AutoRecyclerView extends RecyclerView {<br> private static final long TIME_AUTO_POLL = 16;<br> private final AutoPollTask autoPollTask;<br> private boolean running; //表示是否正在自动轮询<br> private boolean canRun;//表示是否可以自动轮询<br> public AutoRecyclerView(@NonNull Context context) {<br> super(context);<br> autoPollTask = new AutoPollTask(this);<br> }<br> public AutoRecyclerView(@NonNull Context context, @Nullable AttributeSet attrs) {<br> super(context, attrs);<br> autoPollTask = new AutoPollTask(this);<br> }<br> public AutoRecyclerView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {<br> super(context, attrs, defStyleAttr);<br> autoPollTask = new AutoPollTask(this);<br> }<br> private static class AutoPollTask implements Runnable {<br> private final WeakReference<AutoRecyclerView> mReference;<br> //使用弱引用持有外部类引用->防止内存泄漏<br> public AutoPollTask(AutoRecyclerView reference) {<br> this.mReference = new WeakReference<>(reference);<br> }<br> @Override<br> public void run() {<br> AutoRecyclerView recyclerView = mReference.get();<br> if (recyclerView != null && recyclerView.running && recyclerView.canRun) {<br> recyclerView.scrollBy(2, 0);<br> recyclerView.postOnAnimationDelayed(recyclerView.autoPollTask, TIME_AUTO_POLL);<br> }<br> }<br> }<br> //开启:如果正在运行,先停止->再开启<br> private void start() {<br> if (running)<br> stop();<br> canRun = true;<br> running = true;<br> postDelayed(autoPollTask, TIME_AUTO_POLL);<br> }<br> private void stop() {<br> running = false;<br> removeCallbacks(autoPollTask);<br> }<br> @Override<br> public boolean dispatchTouchEvent(MotionEvent ev) {<br> return true;<br> }<br> public void startAutoScrolling(){<br> if (running){<br> return;<br> }<br> start();<br> }<br> public void stopAutoScrolling(){<br> stop();<br> }<br> public boolean isAutoScrolling(){<br> return running;<br> }<br>} |
以上就是直播平台源代码,循环滚动RecyclerView的实现, 更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2021-11-01 直播系统平台搭建,DataBinding自定义双向绑定
2021-11-01 在线直播系统源码,横向无限循环滚动的单行弹幕效果
2021-11-01 聊天平台源码,登录时拼图验证