新闻
教程
- 理解Android存储系统架构
本文主要介绍跟存储相关的模块MountService和Vold的整体流程与架构设计.MountService:Android Binder服务,运行在system_server进程,用于跟Vold进行消息通信,比如MountService向Vold发送挂载SD卡的命令,或者接收到来自Vold的外设热插拔事件。Vold:全称为Volume Daemon,用于管理外部存储设备的Native守护进程,这是一个非常重要的守护进程,由NetlinkManager,VolumeManager,CommandListener这3部分组成。
- Android 着色器 Tint 研究
Tint 这个东西 主要用来减少apk体积的,比如说我现在有一个textview,他的背景图 有两种,一种是当获得焦点时显示的a图,另一种是 失去焦点时显示的b图。相信大家开发的时候 这种需求做过很多次了,我们一般都会发现 这种a图和b图 除了颜色不一样,其他都是一样的,但是我们做的时候呢,通常是找ui要了两张图。如果要适配分辨率的话 很有可能图片会更多,而且在切换的时候 因为是重新加载一次bitmap 效率也会下降很多。所以谷歌就给了一套解决方案 这个就是tint了。他的目的就是当你发现有这种需求的时候,只需要 放一张图 在apk里即可,当你需要改变背景图的颜色的时候 就用Tint即可!
- PathMeasure之迷径追踪
Path,不论是在自定义View还是动画,都占有举足轻重的地位。绘制Path,可以通过Android提供的API,或者是贝塞尔曲线、数学函数、图形组合等等方式,而要获取Path上每一个构成点的坐标,一般需要知道Path的函数方法,例如求解贝塞尔曲线上的点的De Casteljau算法,但对于一般的Path来说,是很难通过简单的函数方法来进行计算的,那么,如何来定位任意一个给定Path的任意一个点的坐标呢?
- 图片之旅
在开始图片之旅之前,先来聊聊图形学的一些基础,这些在图片处理的过程中或多或少都要接触。1.像素点:计算机显示的图像是由像素点组成的,每个像素点有RGB三种颜色,这三种颜色按一定比例混合就可以得到实际的色值。图片尺寸为640 x 480,代表图片水平有640个像素点,垂直有480像素点。2.color depth、bit depth: 每个像素RGB若各用8位表示,bit depth就是8bit,那么这个像素就用24位表示,color depth就是24bit。一个像素color depth越深,像素表达的颜色和亮度的位数越多,文件就越大。
- React 移动 web 极致优化
学习React的好处就是,学了一遍之后,能够写 web, node 直出,以及 native,能够适应各种纷繁复杂的业务。需要轻量快捷的,直接可以用 Reactjs;需要提升首屏时间的,可以结合 React Server Render;需要更好的性能的,可以上React Native。但是,这其实暗示学习的曲线非常陡峭。单单是 Webpack+ React + Redux 就已够一个入门者够呛,更何况还要兼顾直出和手机客户端。不是一般人能 hold住所有端。
- Android 7.0对受信任的证书颁发机构做出变更
在 Android Nougat (7.0) 中,我们更改了 Android 处理受信任证书颁发机构 (CA) 的方式,从而提供了更安全的系统默认设置,保障了应用流量安全。大多数应用和用户不受这些变更的影响,也不需要采取任何行动。这些变更包括:1.安全而简单的 API,用于信任自定义 CA。2.默认情况下,针对 API 级别 24 及以上版本而开发的应用不再信任用户或管理员为安全连接添加的 CA。3.所有运行 Android Nougat 的设备均提供同一套标准化的系统 CA,而没有任何设备特定的自定义 CA。
- 贝塞尔曲线开发的艺术
在Android中,一般来说,开发者只考虑二阶贝塞尔曲线和三阶贝塞尔曲线,SDK也只提供了二阶和三阶的API调用。对于再高阶的贝塞尔曲线,通常可以将曲线拆分成多个低阶的贝塞尔曲线,也就是所谓的降阶操作。下面将通过代码来模拟二阶和三阶的贝塞尔曲线是如何绘制和控制的。
- Android打包提速实践
AS的代码结构和eclipse完全不同,它为开发者提供了单工程多module的形式。但多建立一个module就需要多维护一个module。所以如果仅仅是为了方便写代码而建立一个module是不可取的,我强烈建议先做好项目结构的梳理再考虑是否需要建立module。
开源库&项目
- jadb
ADB Client in pure Java.
- ixjava
Interactive Extensions for Java
- create-react-app
Create React apps with no build configuration.
- LogReport
一个崩溃日志上传框架,当App崩溃的时,把崩溃信息保存到本地的同时,自动给GitHub提交崩溃issue,你只需要几句,就能完成所有配置
- CircularAnim
Android水波动画帮助类,一行代码实现View显示/隐藏/startActivity特效。(对Android ViewAnimationUtils.createCircularReveal() 方法的封装)
- PaperShredder
碎纸机动画效果
- Tinker_imitator
微信热更新方案实践
- ScrollNumber
一个 简单、优雅、易用 的滚动数字控件!
- SubmitButton
A cool and elegant Submit Button
- GiftCard
A beautiful gift Cards for android
- Console
Android console implementation
- RingProgressBar
一个简单实现的自定义圆环进度条,可使用于文件的上传下载图片加载等地方
- StereoView
3D立体无限旋转滚动容器
- StatusBarCompat
一个实现透明状态栏的兼容库,支持 Api 19 及其以上
- WaveSideBar
一个快速跳跃分组的侧边栏控件
- MDAvatars
The main goal is working with svg to make profile pictures.
- BottomNavigation
Android Material Design "BottomNavigation" design pattern implementation
工具
- FontZip
字体压缩神器
- Marp
一个 可以将 Markdown 格式直接生成PPT,编辑方便,兼容性好,还可以进行版本管理的工具
- Githug
一个命令行工具被设计来练习你的 Git 技能,它把平常可能遇到的一些场景都实例化,变成一个一个的关卡,一共有 55 个关卡,所以将他形象的形容为 Git 游戏
技术之外
- 如何给一个App起名字?
选择一个App的名字是一个排它性的决策,因为它只能有一个。而无论你最后用了哪一个,都意味着要放弃所有其他的选择。也就是说,一个最终被选择的好名字,它应该是有战略的。