如图:
首先分析一下页面结构,红色区域是Activity
,绿色区域是一个TitleBar
,黄色区域是Viewpage+Fragment
,其中背景图和天气特效是在Activity
中的。
天气页
天气页在Fragment中,包含了某个城市的相关天气信息,主要内容如下:
1,实时天气
实时天气实现了Titanic效果,主要是重写TextView
,通过给画笔设置BitmapShader
实现波浪效果,然后通过属性动画改变shader的偏移量实现动态效果。
2,预警信息
预警信息是通过ViewFlipper
实现向上翻页效果,主要是为了应对同时多个预警信息的情况。
3,固定底部
在Fragment页面没有滚动的情况下主要分为四个区域如下图:
其中区域1在顶部,区域2和区域3是固定在底部的,因此就需要动态改变空置区域的高度,以适应各种屏幕尺寸。此处通过重写Linearlayout
,测量出区域1,2,3的高度后再根据屏幕高度以及状态栏、标题栏的高度算出空置区域的高度,在摆放区域2时顶部加上空置区域的高度,来达到区域2、3固定底部的效果。
4,逐小时
逐小时天气是一个自定义view,绘制折线图、图标、文字等,然后配合HorizontalScrollView
实现滚动效果,当然也可以直接使用Scroller
来实现滚动效果。
5,15天预报
如上图,由于存在横向滚动,且除了中间的折线其他都是文字图标,所以,考虑使用RecyclerView+自定义View实现,相比直接自定义View,及不用处理滚动问题,也无需绘制那么多文字和图标。
自定义中间View时需要给每个item传入当前及前后两条数据,绘制折线分两部分,当前中间位置跟前一条数据的连线,以及跟后一条的连线。也就是分别计算当前位置跟前后两条数据的平均值,绘制直线即可。
需要注意的是绘制折线时需要设置线段画笔的线帽为:Cap.SQUARE,可防止折线陡峭时中间出现一丢丢断裂的问题。
6,太阳和月亮
太阳和月亮主要是通过自定义View实现,使用属性动画实现太阳和月亮的移动效果,(线条颜色比淡,图片压缩后效果不好)。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
总结
笔者之前工作是在金融公司可能并不是特别追求技术,而笔者又是喜欢追求技术的人,所以格格不入,只能把目标放在互联网大厂了。也希望大家都去敢于尝试和追逐自己的梦想!
BATJ大厂Android高频面试题
觉得有收获的记得点赞,关注+收藏哦!你们的点赞就是我的动力!
]
[外链图片转存中…(img-0SWBLxNd-1711822940541)]
[外链图片转存中…(img-Kozk9tOZ-1711822940541)]
觉得有收获的记得点赞,关注+收藏哦!你们的点赞就是我的动力!