本文将研究如何制作一个更复杂的定制组件:日期和天气组件。
渲染:
上一篇文章中的电池组件是通过重写视图的onDraw来实现的,这对于更简单的组件来说是实用的。但是对于日期和天气成分,就没有必要了。
它可以通过从自定义视图中继承一个容器组件(比如RelativeLayout)并添加预先布局好的xml文件来实现。这会容易得多。
当然,这种视图组件不需要定制组件就可以实现,只需要通过组件封装就可以更方便地调用,减少代码重复。
具体实现很简单,就不赘述了。如果需要,可以直接在github中阅读源代码
实现很简单,但要优化到好用,还是要仔细考虑。以下是一些需要分享的小细节:
仔细看这个组件,它由几个部分组成:1。日期和时间(阳历和阴历、时间,需要实时刷新);2.城市的全球定位系统定位;3.当前城市天气。
在实际使用中,天气信息的获取依赖于城市位置,即在获取当前城市的天气之前,需要对城市进行定位。如果不缓存,会很慢,体验会很差,所以需要缓存城市和天气数据,所以为数不多次只会慢一点。后面没什么变化。
只有细节处理得当,产品才能变得有用。
话虽如此,在常见的应用APP组件中还有一个细节需要注意(顺便说一下)。
常见应用程序组件的屏幕截图:
组件是一个回收视图,应用程序图标是从系统安装的应用程序列表中读取的。持久保存配置信息时,仅保存名称而不是图标,这将导致应用程序图标在显示过程中被临时读取。如果是在Adapter中直接读取,UI显示会被屏蔽,会被卡住,因为可能会有上百个系统应用,很费时间。这里有两种治疗方法:
为数不多个是线程读取图标;
二是缓存系统应用列表,避免重复检索;