Android实现搜索框文字轮播控件
龙旋
共 2008字,需浏览 5分钟
· 2022-02-20
先看效果图:
实现思路
添加依赖:
implementation 'com.haowen:textbanner:1.0.4'
1、想要达到轮播效果,两个View交替出现即可,既然是两个View那么就需要一个父容器(TextBanner继承FrameLayout):
public class TextBanner extends FrameLayout {
/**
* 两个View交替出现
*/
private View viewFirst, viewSecond;
}
2、间隔性就用Handler的postDelayed来实现就行了,为了防止内存泄漏,这里采用WeakHandler
mHandler.postDelayed(task, mDelayTime);
/**
* 轮播的定时任务:当页数大于1时轮播
*/
private Runnable task = new Runnable() {
@Override
public void run() {
updateTipAndPlayAnimation();
mHandler.postDelayed(this, mDelayTime);
}
};
3、交替出现的动画(TextBanner只用了一个简单的Y方向平移动画,并不支持动画设置,因为我觉得没必要花里胡哨的,如果后期有需要,可以考虑提示自定义)
/**
* 生成动画
*
* @param fromYValue 起始值
* @param toYValue 结束值
* @return 动画
*/
private Animation newAnimation(float fromYValue, float toYValue) {
Animation anim = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 0,
Animation.RELATIVE_TO_SELF, fromYValue, Animation.RELATIVE_TO_SELF, toYValue);
anim.setDuration(mDuration);
anim.setInterpolator(new DecelerateInterpolator());
return anim;
}
5、数据设置适配器,这里采用Adapter的形式(看方法名应该很好理解,似曾相识):
onCreateView设置显示View
getCount数据个数
onBindViewData给View设置数据显示
notifyDataChange数据更新通知
/**
* 数据适配器
*/
public abstract static class Adapter {
/**
* 数据更新观察这
*/
private Observable mObservable;
/**
* 注册数据更新观察
*
* @param observable 数据更新观察
*/
private void registerObservable(Observable observable) {
this.mObservable = observable;
}
/**
* 通知数据更新
*/
public void notifyDataChange() {
if (mObservable != null) {
mObservable.onChange();
}
}
/**
* Item个数
*
* @return Item个数
*/
public abstract int getCount();
/**
* View生成
*
* @param parent 父容器
* @return Item的View
*/
public abstract View onCreateView(@NonNull ViewGroup parent);
/**
* 数据绑定View
*
* @param convertView 内容View
* @param position 位置
*/
public abstract void onBindViewData(@NonNull View convertView, int position);
}
源码地址:
https://github.com/HaowenLee/TextBanner
到这里就结束啦。
评论
15种时间序列预测方法总结(包含多种方法代码实现)
向AI转型的程序员都关注了这个号👇👇👇在这篇文章中,我们将深入探讨时间序列预测的基本概念和方法。我们将首先介绍单元预测和多元预测的概念,然后详细介绍各种深度学习和传统机器学习方法如何应用于时间序列预测,包括循环神经网络(RNN)、一维卷积神经网络(1D-CNN)、Transformer、自回归模型(
机器学习AI算法工程
0
SpringBoot 实现图片防盗链功能
程序员的成长之路互联网/程序员/技术/资料共享 关注阅读本文大概需要 4 分钟。来自:blog.csdn.net/weixin_46157208/article/details/138051737前言出于安全考虑,我们需要后端返回的图片只允许在某个网站内展示,不想被爬虫拿到图片地
程序员的成长之路
0
文本嵌入、文本分类和语义搜索
在实践中使用大型语言模型(LLM)中,RAG 的一个关键部分是使用文本嵌入从知识库中自动检索相关信息。在这里,我将更深入地讨论文本嵌入,并分享两个简单(但功能强大)的应用:文本分类和语义搜索。ChatGPT 吸引了全世界对人工智能及其潜力的想象。ChatGPT 的聊天界面是这一影响的关键因素,它使人
大邓和他的Python
0
一站式解决方案:基于 Arthas 实现服务发现和权限控制
来源:juejin.cn/post/7281849496983994383👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接
小哈学Java
0
用 Shader 实现旗帜飘扬动画效果
我觉得对于刚入门 3D 编程的朋友来说,如果能够完成代码创建模型数据->创建材质->编写Shader动画这一系列,想必会有满满的成就感。今天就用 Cocos Creator 的 utils.MeshUtils.createMesh 接口,带大家感受一下这个流程。这个流程不仅可以用于新手学
COCOS
2
OpenUI:输入一段文字就能生成网!页!!
今天给大家介绍一个开源的 AI 网页生成工具:OpenUI!!!前言 在软件开发领域,用户界面(UI)的设计和构建确实是一个至关重要的环节。传统的 UI 开发需要设计师和开发人员紧密合作,通过反复的设计、修改和测试来达到理想的效果,这个过程往往耗时且成本较高。随着 AI 技术的发展,现在有越来越多的
前端技术江湖
0
SpringBoot+Minio实现上传凭证、分片上传、秒传和断点续传
关注我们,设为星标,每天7:40不见不散,架构路上与您共享回复架构师获取资源大家好,我是你们的朋友架构君,一个会写代码吟诗的架构师。Spring Boot整合Minio后,前端的文件上传有两种方式:1、文件上传到后端,由后端保存到Minio这种方式好处是完全由后端集中管理,可以很好的做到、身份验证、
Java架构师社区
0
超越原生,散点图实现华夫饼图
之前我们介绍过了如何使用新卡片图实现华夫饼图。参考:超越原生,PowerBI 华夫饼图实现但是利用卡片图实现的华夫饼图有一些缺点,形状之间的大小跟间距不太好把握,而且有时形状大一点的话显示就会不正常,需要做出二次调整。今天给大家介绍一种原生视觉对象生成华夫饼图的更佳方案,既简单又美观。上图是利用散点
PowerBI战友联盟
2