腾讯竟然又偷偷开源了一套Android原生UI框架!不吃透都对不起自己
起因
事情是这样的。
4年前毕业那会,呆在公司的短视频项目,做 视频。那会做得比抖音还早,但是由于短视频太烧钱了,项目被公司关掉了。当时需要开发横竖屏直播/异步视频的场景,就研究下了市场上的 app,发现输入弹幕的交互并不友好。最直接的体验就是,微信比绝大部分IM软件在聊天场景下输入法与表情面板频繁切换时表现得更为平滑,不会给用户很突兀的闪烁感。但我们除了适配竖屏,们还需要兼容横屏/满屏/沉浸等场景。
摸索了一段时间之后,做出来的效果挺不错,比市面上的直播/异步视频播放场景下的输入交互体验都要好。于是写了个记录的 Blog Android -SystemUI的那点事 。主要是将如何设计横竖屏直/点播场景下良好的输入交互。但是文章并没有写完… 留了横屏模式下使用 PopupWindow 来实现的悬念… 本打算继续接着写第二篇。结果一拖,就是三年。
而在这三年里,前后参与开发了十多个项目(我们是流水线生产,老工具人),而涉及到输入交互的模块已经有IM聊天,直播间,异步视频播放页面,信息流评论等等。这些页面从最初使用 Activity 实现到演化成可用 Fragment,Dialog,PopupWindow 代替。所以原来那套技术实现已经不能满足。在寻找外部开源项目/技术博文无果的前提下,慢慢积累了一个库
听过很多人说Android学习很简单,做个App就上手了,工作机会多,毕业后也比较容易找工作。这种观点可能是很多Android开发者最开始入行的原因之一。
在工作初期,工作主要是按照业务需求实现App页面的功能,按照设计师的设计稿实现页面的效果。
在实现的过程中,总是会被提如下的需求:
这个字能不能大点或者醒目点儿?
感觉颜色和设计稿有差别,能不能再调调?
怎么老是崩溃啊,行不行啊?
…
所以,工作过一年后你会发现,自己的工作重点就是**将找各种各样的组件、框架,拖拖拽拽,改改样式。**在极端情况下出现了问题后(比如部分机型上崩溃,加载图片慢),也不知道该如何解决!都不好意思说自己是搞技术的。
造成这种局面的有两种原因:
**1.**所开发的App功能要求并不复杂,在性能上呢,也不需要极致的追求;
2.自己的意识不够,不知道如何从平凡的工作中提炼可优化的点,在向上提升方面也没有完整的规划。
从自身规划的角度讲,技术上的进阶分如下几个阶段:
**1.做好业务需求的功能。这个是初级程序员就应该有的能力。
**2.**解决极端情况下的技术问题,比如性能优化,OOM等。**稍有点规模的公司,肯定都会遇到这种问题,比如上文中说的App在部分机型上崩溃、页面加载不出来等。只是大部分程序员会觉得难以复现,或者是因为小概率事件而忽略了。**在忽略这些问题的过程中,也放弃了进一步提升的可能性。**还有一部分程序员是看到了这些问题,但一直不知道怎么解决,因为这些问题的产生基本都是要往底层框架去找原因,而平时只关注上层的业务逻辑代码,因而没有深入研究底层的原理,导致心有余而力不足。
**3.**在开发框架和效率上做文章。**举个例子,很多程序员说自己的精力都在和产品的撕逼中浪费了,但有没有想过,能够通过技术手段将自己从繁杂的无技术含量的工作中解救出来?比如是否能够做到只编写一次代码,或者改个配置参数就能够做到在不同平台上运行。更高的要求是,能否将这些方案做成通用框架或产品。
上面列举的几个阶段,首先要从思考方式上去逼迫自己不断地逼迫自己,不要偷懒。其次,要想按照上述阶段发展,还需要落在实处,在具体的技术体系中不断的学习。
举个例子:
对于OOM,需要知道有哪些优化工具可以使用(Lint、MAT等),如何检测OOM,以及垃圾回收机制等深层次的原理。对于性能优化来说,如何减少apk体积、资源动态加载等都是必会的。以下是性能优化相关思维导图**(文末还有更多Android架构进阶的学习资料免费分享)**
在体系化的学习过程中,博客、书籍、视频课程都是较好的学习手段。
鉴于Android也是基于java语言的,因此很多与java相关的基础也是必须掌握的,比如《深入理解Java虚拟机》、《Effective Java》等相关书籍也是必读的。
Android相关的书籍包括《Android权威编程指南》、《Android开发艺术探索》等,进一步的还可以去阅读Android相关源码,配合《Android源码设计模式解析与实战》等书籍,对阅读源码大有裨益。
最后
考虑到文章的篇幅问题,我把这些问题和答案以及我多年面试所遇到的问题和一些面试资料做成了PDF文档,如果有需要的朋友可以免费领取
点击这里领取Android面试资料汇总
-1621435215464)]
[外链图片转存中…(img-aLgj2A6t-1621435215468)]
喜欢的朋友可以关注、转发、点赞 感谢!
腾讯竟然又偷偷开源了一套Android原生UI框架!不吃透都对不起自己相关推荐
- 腾讯Android原生UI框架---QMUI
QMUI Android 的设计目的是用于辅助快速搭建一个具备基本设计还原效果的 Android 项目,同时利用自身提供的丰富控件及兼容处理,让开发者能专注于业务需求而无需耗费精力在基础代码的设计上. ...
- 前端绘图开源组件_5 个优秀前端 UI 框架
随着 Web 技术的不断发展,前端开发框架层出不穷,各有千秋,今天小编为大家奉上前端 UI 框架的开源项目,希望大家能够喜欢!如果大家有 UI 框架相关的开源项目,也可以托管到码云上,我们会及时给予推 ...
- 分享两个超实用的Android开源UI框架——QMUI和XUI
目录 QMUI_Android 功能特性 全局 UI 配置 丰富的 UI 控件 高效的工具方法 功能列表 支持 Android 版本 使用方法 QMUI Demo APP 安装包下载 XUI 特征 演 ...
- 腾讯第100个开源项目:微信开源推理加速工具TurboTransformers
出品 | AI科技大本营(ID:rgznai100) 4月24日,腾讯正式宣布开源Transformer推理加速工具TurboTransformers.该工具面向自然语言处理领域中Transforme ...
- 首次!腾讯全面公开整体开源路线图
6月25日,由Cloud Native Computing Foundation (CNCF) 主办的云原生技术大会在上海举办,腾讯开源联盟主席.腾讯开源管理办公室委员.Apache Member堵俊 ...
- 腾讯首个AI开源项目完成3.0版本迭代,从顶级开源基金会毕业
乾明 编辑整理 量子位 报道 | 公众号 QbitAI 最新消息,腾讯开源项目Angel从LF AI基金会毕业,也是中国首个从LF AI基金会毕业的开源项目. 伴随着这次毕业,Angel也正式完成了3 ...
- 腾讯汤道生:开源已成为许多技术驱动型产业重要的创新推动力
1月17日,在腾讯与Linux基金会一年一度的联合开放日上,腾讯高级执行副总裁.云与智慧产业事业群总裁汤道生,首次公开阐述开源对腾讯的重要意义,他表示:"开源不再是开发者的个人热情,它已成为 ...
- 腾讯AI Lab正式开源业内最大规模多标签图像数据集
感谢阅读腾讯AI Lab第44篇文章.本文将介绍"Tencent ML-Images"项目正式开源情况. 今日,腾讯AI Lab宣布正式开源"Tencent ML-Ima ...
- 腾讯荣获OSCAR尖峰开源企业奖 参与国内首个开源治理白皮书编写
3月21日至22日,中国云计算开源领域最专业.最高端.最具规模的行业盛会"OSCAR云计算开源产业大会"在国家会议中心召开,该会议由工业和信息化部指导.中国信息通信研究院主办.腾讯 ...
最新文章
- 如何看linux是32位还是64位--转
- win cmd rmdir /s递归删除目录
- java servlet上传centos服务器
- mysql从库故障恢复步骤(删除数据重新同步)
- JDK 10:FutureTask获取一个toString()
- 全球知名大学课件下载地址汇总
- Java try catch finally语句
- 微服务升级_SpringCloud Alibaba工作笔记0004---认识spring gateway理解新一代网关
- 记一次mongdb搭建复制集的小故障
- Codeforces Round #511 (Div. 1) 题解
- HashMap的实现原理看这篇就够了,图文源码详解,深入浅出简单易懂
- 为什么编译个开源就觉得自己功劳巨大(对前研发总监李某功劳的分析)
- 查看局域网内的所有IP地址
- matlab如何根据历年gdp找增长规律,中国历年gdp数据图解 中国历年gdp增长率及人均GDP(1978年-2016年)...
- 项目管理和软件开发的边界
- acegis连接使用方法_arcgis使用教程.doc
- DDSM数据库使用说明
- 步步为营Hibernate全攻略(二)剪不断理还乱之:一对多关联映射
- Windows 10超级简单的重置方法
- w7系统出现无法更新服务器,win7系统自动更新选项不能用了的解决方法
热门文章
- 20212323 CSDN Python技能树和Markdown编辑器测评
- 自己实现一个Spring 框架
- 一、Chrome浏览器调试工具/文档
- 【速览】2021年全球及中国培育钻石行业发展现状及未来发展趋势分析[图]
- Flask项目实战——10—(前台板块页面搭建、文本编辑页面搭建、发布帖子信息前验证权限、帖子模型搭建、发布帖子功能、帖子信息渲染到前后台页面)
- 【实时渲染】RTR4 简要问答版
- html把键显示在中间,ipad平板键盘显示在屏幕中间怎么办?
- 有什么好用的苹果群控软件?
- ES6系列1--基础入门
- 程序人生(创)一个新手程序员的两三事(未完待续...)