Android炫酷的3D球型标签云开源库 3dTagCloudAndroid 的使用
Android炫酷的3D球形标签云开源库 3dTagCloudAndroid 的使用
文章目录
- Android炫酷的3D球形标签云开源库 3dTagCloudAndroid 的使用
- 学习过程
- 使用体会
- 实战
- 总结
本文主要记录一下使用开源库 3dTagCloudAndroid 的一些心得体会。
开源库地址:
https://github.com/misakuo/3dTagCloudAndroid
简介:
TagCloudView是一个基于ViewGroup实现的控件,支持将一组View展示为一个3D球形集合,并支持全方向滚动。
UI效果:
学习过程
原作者在Github项目中已对此开源库的使用方法有部分说明,这里不再重复。
这里主要记录自己是如何学习使用这个开源库的。
首先,使用 git clone
下载 3dTagCloudAndroid 的Demo项目,用Android Studio打开(可能会提示需要下载缺少的对应版本的SDK和Gradle,按提示点击下载,自动完成即可),从MainActivity.java(主界面)开始阅读示例代码,看看究竟该如何使用TagCloudView。
MainActivity.java里面只有一个onCreate方法,其中比较关键的代码如下:
tagCloudView = (TagCloudView) findViewById(R.id.tag_cloud);textTagsAdapter = new TextTagsAdapter(new String[20]);viewTagsAdapter = new ViewTagsAdapter();vectorTagsAdapter = new VectorTagsAdapter();tagCloudView.setAdapter(textTagsAdapter);
这里分别创建了三种TagsAdapter。可见,这里的Tag有三种类型:simple text tag、custom view tag、vectordrawable tag(从三个按钮的名字就可以看出来)。
所以,看到这里,可以发现:这里需要使用哪种类型的tag,就使用对应类型adapter,然后调用TagCloudView的setAdapter
方法即可。
接下来,研究一下如何定义这些Adapter。
依次查看TextTagsAdapter.java、ViewTagsAdapter.java、VectorTagsAdapter.java,可以发现他们均是继承了TagsAdapter类。
这里可以从最简单的TextTagsAdapter入手,阅读其代码,可以发现这个自定义的TextTagsAdapter类,重写很多TagsAdapter的方法。主要的如下:
public int getCount();
//返回Tag数量public View getView(Context context, int position, ViewGroup parent);
//返回每个Tag实例public Object getItem(int position);
//返回Tag数据public int getPopularity(int position);
//针对每个Tag返回一个权重值,该值与ThemeColor和Tag初始大小有关;一个简单的权重值生成方式是对一个数N取余或使用随机数public void onThemeColorChanged(View view,int themeColor);
//Tag主题色发生变化时会回调该方法
其中,最为重要是 getView
方法。
TextTagsAdapter成员中有一个List<String>
容器用来保存所有的标签文本,getView
就是根据传入的position参数,从容器中取出对应位置的String文本,然后根据这个String文本生成一个TextView,然后可以对TextView额外设置一些属性(比如这里使用了setGravity
和setOnClickListener
),最后返回这个设定完成后的TextView。
其他重写的方法则较为简单,含义也比较明确,看看示例代码就可以明白,这里不再叙述。
其余的两个ViewTagsAdapter、VectorTagsAdapter,与TextTagsAdapter非常类似,只是getView
中返回的View类型不同,在getView中也对返回的View处理稍有不同。
使用体会
在原项目的说明中,作者只说了怎么开始使用,但是没有提到数据变化时该怎么操作(比如 增加、删除、清空标签View了之后,该如何更新UI界面呢?)。
一般来说,Adapter都会有提供更新展示View的一个方法,所以在一开始我就是猜想作者应该也是设计了一个方法,用来在Adapter对应的数据变化时,通知UI界面做出改变。
通过阅读TagsAdapter的实现源码,可以发现,其中有一个方法名为notifyDataSetChanged
,显然,这就是我们需要的那个功能。
简单来说,可以这么理解:调用notifyDataSetChanged
函数,TagCloudView 将会重新生成(即其中绑定的TagsAdapter的getView
等方法重新会被TagCloudView 调用一次)。
实战
有的时候,我们经常面临“吃什么”这样类似的选择难题…
Android炫酷的3D球型标签云开源库 3dTagCloudAndroid 的使用相关推荐
- 几个炫酷的3D旋转动态效果(附代码)
之前,我们发布了极客编程挑战赛,竞赛题目是"制作炫酷的3D旋转动态显示效果",想知道更多信息,请前往以下地址进行了解:http://www.gbtags.com/gb/share/ ...
- 520情人节送女朋友的3D相册礼物~html+css+js实现抖音炫酷樱花3D相册(含音乐)
520情人节送女朋友的3D相册礼物~html+css+js实现抖音炫酷樱花3D相册(含音乐) 一年一度的/520情人节/七夕情人节/生日礼物/告白师妹/程序员表白,是不是要给女朋友或者正在追求的妹子一 ...
- ❤520情人节送女朋友的生日礼物~html+css+js实现抖音炫酷樱花3D相册(含音乐)
❉ 520情人节送女朋友的3D相册礼物~html+css+js实现抖音炫酷樱花3D相册(含音乐) 一年一度的/520情人节/七夕情人节/生日礼物/告白师妹/程序员表白,是不是要给女朋友或者正在追求的妹 ...
- 纯CSS3制作炫酷的3D相册
纯CSS3制作炫酷的3D相册 整体效果如下所示: 整体代码如下所示: html中的代码 <!DOCTYPE html> <html lang="en"> & ...
- 【每日一练】36—CSS实现一款炫酷的3D 文本旋转效果
写在前面 关于CSS 3D的效果,我之前也分享过一些,在视频号上也有,当然,视频号上没有源码,有兴趣的小伙伴,可以跟着视频自己敲代码,当然,这些代码,我后面也会分享到我们的网站上,大家可以直接到网站上 ...
- android 炫酷进度条,Android打造炫酷进度条效果
本文实例为大家分享了Android炫酷进度条效果的具体代码,供大家参考,具体内容如下 HorizontalProgressbarWithProgress的代码 import android.conte ...
- [开源项目]Android_炫酷的3D音乐播放器_各种特效OpenGL
这是 我见过最炫的一个音乐播放器了.里面包含各种特效OpenGL,先上图片...看看大家的反应. 3Dmusic3.png(48.63 KB, 下载次数: 34) 炫酷的3D音乐播放器_各种特效Ope ...
- [jQuery]3D效果的标签云
刚才看了篇园友关于如何自定义标签云的文章,心痒痒自己也想弄一个,其实原理非常简单,就是动态load标签页里的标签,按需要的格式重新动态生成DOM结构,再通过第三方的js插件(他们用的是Google V ...
- ❤女朋友生日❤ HTML+css3+js 实现抖音炫酷樱花3D相册 (含背景音乐)程序员表白必备
一年一度的/520/七夕情人节/女朋友生日/程序员表白,是不是要给女朋友或者正在追求的妹子一点小惊喜呢,今天这篇博客就分享下前端代码如何实现3D立体动态相册.赶紧学会了,来制作属于我们程序员的浪漫吧! ...
最新文章
- 生信分析必须了解的4种文件格式
- 中国人寿保险研发中心2021校招开始啦!
- “挨踢民工”的奇葩生活录
- adb链接手机调试android应用
- 检测网络耗时_无人机替代桥梁检测车检测桥梁的可行性分析
- Programming WCF Services翻译笔记(四)
- 架构师是大忽悠吗?阿里技术大牛告诉你真相!
- spring mvc学习(10):eclipse的环境前maven配置
- 如何用Pygame写游戏(八)
- 低代码的兴起:花更少的钱,赚更多的钱
- TURBOMAIL邮件服务器—挽救错误邮件
- Java设计模式介绍
- JAVA代码规范(二)
- icesat2:strong beam and weak beam
- 利用QGIS提取天地图矢量底图中的建筑模型边界线
- CRM客户关系管理系统助力企业处理客户投诉问题
- 如何优化一个网站的完整方案-SEO
- Unity基本物体和临时对象
- Mobile net系列总结(V1、V2、V3)
- 一文看懂膨胀(空洞)卷积(含代码)