CoXier's Blog

Never Stop

一、背景 2021 年主要从事 SDK 相关的开发工作,其中一个需求是和一个业务方进行对接,他们的需求非常简单, 只需要拉流+消息轮训两个核心功能,其他的功能都可以删除缩减。 Google 一直推荐的 gradle 工具,是从 Module 的维度进行工程划分、构建的。理想情况下,将仅用到的几个 Module 进行打包,就能满足上面的需求。 但是理想很丰满,现实很骨感,工程架构一直都十分不...

AS Plugin 适配 Arctic Fox

程序员 = 工程师 我一直认为,程序员就是工程师。比起一般的工程师,程序员在日常的工作中遇到的问题可能会更多、更难,在解决问题过程中体现出来的就是工程师知识沉淀。 一个资深的程序员在遇到问题时,会不慌不乱,从容不迫,用合理的方式解决各种各样的问题。在最近的博客中,我会用工作中遇到的问题来记录我是如何一步一步解决那些看上去很难解决的问题的。 适配 Arctic Fox 之编译问题 最新版本...

2019年总结

2019 年总结 感情 生活是一半面包、一半是爱情,但是这两个都没办法强求。面包慢点来总会有的,爱情缘分来了也会有的。理想之中的爱情总会被现实生活碾压的粉碎,所以真实一点找一个合适自己的,她不需要有多优秀、也不需要有漂亮,只要我们两个处得来,相互关心对方,爱对方就足够了。余生那么长,这些应该都会有的。 上面这句话,是 2018 年总结的时候对自己说的,2019 年谈了一场很开心...

LeakCanary源码解析(一)

本次源码解析的 commit 是:660d6742fccda2f9f3f84a8c4acc437412a262a3 一、LeakCanary 初始化 LeakCanary 是通过 ContentProvider 初始化的,目前很多第三方库比如 picasso 都采用了这种方式进行初始化,这种初始化有个好处,可以避免入侵使用方的代码。具体方式如下: 自定义 ContentProvi...

将ViewPager改造成VerticalViewPager

网上已经有 VerticalViewPager,但是是基于 Android support library 19.0 修改的,代码比较老了。具体的思路是将 x -> y,y -> x,left -> top,right -> bottom,但是改动的地方会特别多,ViewPager源代码 3000+ 行,所以需要很仔细和专注。可以使用 compare 工具对比 Ver...

视频尺寸适配

一、问题背景 Android 设备的物理屏幕尺寸和播放的视频尺寸的比例关系不对等,例如下面这幅图,很明显是由于视频显示时被拉伸了,看上去十分别扭。不仅仅是 Android 设备,任何设备在播放视频时都存在尺寸拉伸等问题,本文从问题出发,提出在日常开发中经常用到的适配策略。 二、尺寸适配 上图的实验环境是: Nexus5 1080x1920 (adb shell wm siz...

TextView-Invalidate-Not-Working

一、Problem Background 最近遇到一个问题——TextView 的 Invalidate 没有起作用。问题背景是这样的,实现一个 Loading 动画,Loading 的样式是末尾三个点的数目在不断的变化,一个点、两个点、三个点、零个点。类似下图: 问题本身不难解决,通过 ValueAnimator 执行动画,然后动态的更新 text 就能实现,但是产品和设计同事希望...

Bye 2018, Hello 2019

2018 年总结 印象中之前一直有记录年度总结的博客文章的,但是翻了一下,居然没找到,可能是藏在某个小角落里面了吧,哈哈。 208年12月31日和同事们去北京南山滑雪场滑了一天的雪,回到家和老爸视频以后,就洗洗睡了,太累了,倒床不一会就睡着了,醒来已经是2019年了,翻着朋友圈,朋友圈的世界好热闹,挨个给朋友们都点了个赞,希望朋友们 2019 年都过得赞赞的。 毕业 毕业是件让人...

RxJava Basic

RxJava 入门分享 一、Reactive Stream in RxJava2 RxJava 遵循了 ReactiveStreams 的定义,一些重要的设计思想写在了 README,定义了四个关键概念: Publisher:发送数据 Subscriber:接收数据 Subscription:描述 publisher 和 subs...

Gradle解决依赖冲突

在项目中遇到了一个 Bug : No resource found that matches the given name ‘android:TextAppearance.Material.Widget.Button.Borderless.Colored’. 经过请教,发现问题来自 compileSdkVersion 和 依赖的第三方库的 support 版本不同,compile...