一站式开发一个安卓APP-开发篇(4、日期天气组件开发)

上一篇把自定义电池组件搞定了。

这篇看一下怎么搞一个复杂一点的自定义组件:日期天气组件。

效果图:

日期天气
上一篇的电池组件是通过重写View的onDraw来实现,这种方法对比较简单的组件来说是实用的。而如果对于日期天气组件来说,就没必要了。

可以通过自定义View继承一个容器组件(比如RelativeLayout)加上提前布局好的xml文件来实现。这样会简单很多。

当然,这种视图组件,其实不用自定义组件也能实现,只是通过组件封装,可以方便多出调用,减少代码重复。

具体的实现方式很简单,不再赘述,需要的可以直接在github看源码

实现很简单,但是要优化到好用,还是要仔细琢磨一下的,这里有几个小细节有必要分享一下:

  • 仔细看一下这个组件,有好几个部分组成:1、日期时间(公历和农历,时间,需要实时刷新)2、GPS定位城市,3、当前城市的天气。
  • 在实际使用过程中,天气信息的获取依赖城市定位,也就是需要定位到城市后才能去拿当前城市的天气。如果不做缓存处理,就会比较慢,体验很不好,所以需要把城市和天气数据缓存起来,这样就只有第一次会稍微慢一点。后面基本感受不到变化。

做产品只有把细节处理好,才能把可用变成好用。

说到这里,常用应用APP组件也是有一个细节需要注意的(顺便提一下)。

常用应用组件截图:
在这里插入图片描述
组件是个RecyclerView,应用图标是从系统安装应用列表中读取,在持久化保存配置信息时是不保存图标的,只保存名字,这样会造成显示时需要临时读取应用图标,如果直接在Adapter里读取,会阻塞UI显示,有卡顿的现象,因为系统应用可能上百个,比较耗时。所以这里做了两个处理:

  • 第一是线程读取图标;
  • 第二是缓存系统应用列表,避免重复检索;

源码地址:https://github.com/luoxizhong/LockScreen-ElderlyScreen

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值