android
承香墨影
这个作者很懒,什么都没留下…
展开
-
图解算法:确定单链表有环,如何找到环的入口和长度?
一、序本文继续給大家带来一道和单链表相关的算法题。之前聊到,如何对单链表是否存在环进行检测(戳我了解),今天再来聊聊这个问题的进阶题: 一个单链表,如果有环,求环的入口。 一个单链表,如果有环,求环的长度。 链表这种结构,可以通过「指针」,将一组零散的内存块串联起来。那单链表,如果有环是一个什么情况?如上图所示,单链表中如果存在环,一定有且只有一个入口点,进...原创 2019-12-23 19:20:00 · 3581 阅读 · 3 评论 -
程序员也想改 Lottie 动画?是的!
一、前言Hi,大家好,我是承香墨影!Lottie 是 Airbnb 开源的一套跨平台的完整的动画效果解决方案,用过都说好。完全解耦开发人员和设计师,让设计师设计的动画,在程序中无缝还原,真是一旦拿起绝不放下。之前也写过两篇关于 Lottie 基础的文章,还不了解的可以先看看。站在 Android 开发的角度,聊聊 Lottie!Lottie 里的图片,如何处理?Lottie 虽然非常好用,但是原创 2018-04-10 12:50:59 · 2205 阅读 · 1 评论 -
官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
Kotlin KTX2月5号的时候,Google 发布了一款 Kotlin 的扩展库,叫 Android KTX,不过现在还处于预览版的状态。它能使 Android 上的 Kotlin 代码更简洁,从而提高开发者的效率和使用体验。Android KTX 其实就是一个 Kotlin 代码的扩展库,Google 把我们开发的时候,比较常用的一些代码块,进行封装,然后在这个基础上,提供更良好的原创 2018-02-07 13:43:58 · 788 阅读 · 0 评论 -
漫画:程序员,你能“管理”好你的产品经理吗?
一、第三选择在工作中,你面对产品经理的各种需求变动、项目经理对关键点的 Deadline,总会有一些冲突发生。而对于事情最终执行的开发人员来说,如果这些冲突处理的不好,可能就会变成你个人的问题。做为最终实现功能的程序员,你总不会想被贴上一个 “无法按时完成任务的开发” ,这样的标签吧?这些问题,其实都可以借鉴第三选择的思想来解决。《第三选择》是一本书,作者是 史蒂芬·柯维,我想说到该作者的另外一本书原创 2018-02-06 12:25:56 · 1730 阅读 · 0 评论 -
【译】彻底理解 Android 中的阴影
如果我们想创造更好的 Android App,我相信我们需要遵循 Material Design 的设计规范。一般而言,Material Design 是一个包含光线,材质和投影的三维环境。如果我们想要在 App 的开发过程中,跟随 Material Design 的设计原则,那么理解 光 与 阴影 就显得尤为重要了。我将尝试解释本文中的以下主题。Android 中的 3D深度(Depth)Z翻译 2018-02-26 13:16:55 · 344 阅读 · 0 评论 -
TextView 的新特性,Autosizing 到底是如何实现的? | 源码分析
一、前言Hi,大家好,我是承香墨影!前两天聊了一下 Autosizing 的使用,反映还不错。毕竟是这种能解决实际问题的新 Api,确实在需要的时候,用起来会很顺手。简单回顾一下,Autosizing 是在 Support v26 中新支持的功能,可以根据文本的内容和 TextView 的大小,自动适应齐内部文本的字体大小,来达到完全显示的效果。而这个功能,最低能兼容到 Api Level 14,可原创 2018-01-15 22:55:44 · 323 阅读 · 0 评论 -
听说 Android 9.0 要禁用 @Hide Api 的调用,你怎么看?
Android 9.0?Hi,大家好,我是承香墨影!距离 Android 8.0 发布,已经过了五个月,虽然现在占有率并不高,不过呢,Google 已经着手准备下一版本的 Android 系统。上周,据快科技爆出来的消息,在 XDA社区 有人发现最近的 AOSP(Android Open Source Project)提交记录中,怀疑是下一代 Android 系统版本的代码:PI,这可能是 Andr原创 2018-01-23 11:32:30 · 628 阅读 · 0 评论 -
Android 开发,你遇上 Emoji 头疼吗?
在 Android 中,如果需要使用的到 Emoji 表情,你会发现在某些设备上,有一些 Emoji 表情会被以豆腐块 “☐” 的形式显示,这是因为当前设备并不支持这个 Emoji 表情。而在 Android Support 中,新增加了一个 EmojiCompat 来专门解决这个问题,EmojiCompat 对 Android 4.4(Api Level 19)以及之后的系统,进行 Emoji 的原创 2017-12-29 11:18:39 · 1604 阅读 · 0 评论 -
文字太多?控件太小?试试 TextView 的新特性 Autosizeing 吧!
Hi,大家好,我是承香墨影!Android 8.0 已经发布了有一阵子了,如果你有在关注它,你应该会知道它新增了一个对于 TextView 字体大小变动的新特性:Autosizing。本身这个新特性,如果只是在 Android 8.0 才有效,对于开发者而言,就显得有点鸡肋了,可能还需要一段时间才能普及使用。不过呢,在 Android Support v26 之上,也对 Autosizei原创 2018-01-11 13:42:34 · 1145 阅读 · 0 评论 -
Kotlin 一个好用的新功能:Parcelize
在开发中,如果有需要用到序列化和反序列化的操作,就会用到 Serializable 或者 Parcelable,它们各有优缺点,会适用于不同的场景。Serializable 的优点是实现简单,你只需要实现一个 Serializable 接口,并不需要任何额外的代码,但是它的序列化和反序列化,实际上是使用反射做的,所以效率会略低,并且它会在序列化的过程中,会创建很多临时变量,所以更容易触发 GC。Pa原创 2017-12-15 13:58:35 · 3904 阅读 · 1 评论 -
站在 Android 开发的角度,聊聊 Airbnb 的 Lottie!!!
一、前言你有没有遇上一些设计师,对一些酷炫的动画着迷,喜欢根据场景设计出可爱而流畅的动画。但是在实际工作中,哪怕开发人员也觉得这些动画非常的棒,可我们知道,越是定制化的动画,实现起来将会越麻烦和耗时。这有时候就会引发设计师和工程师的矛盾。而自从 Airbnb 开发出 Lottie 之后,设计师只需要使用 After Effects 设计出完美的动画,然后通过 Bodymovin 插件进行简单的转换和原创 2017-12-14 11:10:40 · 435 阅读 · 0 评论 -
自我怀疑的开发者:你够好吗?
作者:Sihui Huang译者:承香墨影我想每个开发者在学习成长的过程中,在面临技术难题的时候,都有经历过自我怀疑的过程,但是有时候这并不是你的错,大家都经历过如此的过程。我们作为一个开发者,在成长的过程中,总有一些小的胜利和小的沮丧,学着为自己喝彩吧。以下任何一个,是不是听起来都很熟悉?你经常担心自己不够好。看看你周围的开发者们,他们似乎拥有一切。他们的代码比你的更简洁,他们 Debug 的速度原创 2017-12-22 13:04:12 · 306 阅读 · 0 评论 -
Android 软键盘的显示和隐藏,这样操作就对了
一、前言如果有需要用到输入的地方,通常会有需要自动弹出或者收起软键盘的需求。开篇明义,本文会讲讲弹出和收起软键盘的一些细节,最终还会从源码进行分析。想要操作软键盘,需要使用到 InputMethodManager ,它是一个系统服务,可以使用 Context.getSystemService() 获取到它。而很多关键的逻辑代码,都是在 InputMethodManagerService 中实现的。原创 2017-12-04 18:43:22 · 545 阅读 · 1 评论 -
借腾讯开源 VasDolly,谈谈 Android 签名和多渠道打包的原理!
一、前言Hi,大家好,我是承香墨影!当我们需要发布一款 App 到应用市场的时候,一般需要我们针对不同的市场生产不同的渠道包,它们使用的是同一套代码,只是会包含一些各自的渠道信息,用于我们做数据分析。前几天,企鹅电竞团队开源了自己的 Android Apk 多渠道打包工具:VasDolly,比美团的 Walle 更全面一些。正好借这个机会,来讲解一下 Android 的不同版本的签名机制的差异。二、原创 2018-02-28 12:44:01 · 933 阅读 · 0 评论 -
【译】Java、Kotlin、RN、Flutter 开发出来的 App 大小,你了解过吗?
现在开发 App 的方式非常多,原生、ReactNative、Flutter 都是不错的选择。那你有没有关注过,使用不同的方式,编译生成的 Apk ,大小是否会有什么影响呢?本文就以一个最简单的 Hello World App,来看看不同的框架,编译出来的 Apk 大小,有什么区别。当然,本文的环境下是一个最简单的 Apk,其实只能部分说明问题,你觉得呢?— 承香墨影移动开发发展至今,已经可以接受很翻译 2018-03-27 11:53:10 · 6354 阅读 · 2 评论 -
Android 本地化适配:RTL(right-to-left) 适配清单
本文首发自公众号:承香墨影(ID:cxmyDev),欢迎关注。一. 序越来越多的公司 App,都开始淘金海外,寻找更多的机会。然而海外市场千差万别,无论是市场还是用户的使用习惯,都有诸多的不同。当你接触一款出海 App 的时候,除了需要了解海外 Google Service 的整个生态圈,还要做好不同语言的适配。语言适配最通用的做法就是根据不同系统语言设定,配置不同的语言资源(string...原创 2019-09-23 16:47:43 · 1319 阅读 · 0 评论 -
EventBus 消息的线程切换模型与实现原理
一. 序EventBus 是一个基于观察者模式的事件订阅/发布框架,利用 EventBus 可以在不同模块之间,实现低耦合的消息通信。EventBus 因为其使用简单且稳定,被广泛应用在一些生产项目中。通常我们就是使用 EventBus 分发一些消息给消息的订阅者,除此之外我们还可以通过 EventBus 将消息传递到不同的线程中去执行,处理消息。这其中还涉及到一些线程切换问题、线程池的问题...原创 2019-09-18 14:15:39 · 936 阅读 · 0 评论 -
“崩溃了?不可能,我全 Catch 住了” | Java 异常处理
前言今天我们来讨论一下,程序中的错误处理。在任何一个稳定的程序中,都会有大量的代码在处理错误,有一些业务错误,我们可以通过主动检查判断来规避,可对于一些不能主动判断的错误,例如 RuntimeException,我们就需要使用 try-catch-finally 语句了。有人说,错误处理并不难啊,try-catch-finally 一把梭,try 放功能代码,在 catch 中捕获异常、...原创 2019-01-16 19:59:03 · 1759 阅读 · 0 评论 -
HTTP 内容编码,也就这 2 点需要知道 | 实用 HTTP
Hi,大家好,我是承香墨影!HTTP 协议在网络知识中占据了重要的地位,HTTP 协议最基础的就是请求和响应的报文,而报文又是由报文头(Header)和实体组成。大多数 Http 协议的使用方式,都是依赖设置不同的 HTTP 请求/响应 的 Header 来实现的。本系列《实用 HTTP》就抛开常规的 Header 讲解式的表述方式,从实际问题出发,来分析这些 HTTP 协议的使用方式,到...原创 2018-07-04 16:31:15 · 1781 阅读 · 0 评论 -
图解 HTTP 的缓存机制 | 实用 HTTP
题图:by @joewakeford一、序Hi,大家好,我是承香墨影!HTTP 协议在网络知识中占据了重要的地位,HTTP 协议最基础的就是请求和响应的报文头(Header),大多数 Http 协议的使用方式,都是依赖设置不同的 HTTP 请求/响应 的 Header 来实现的。本系列《实用 HTTP》就抛开常规的 Header 讲解式的表述方式,从实际问题出发,来分析这些...原创 2018-06-25 19:25:42 · 373 阅读 · 1 评论 -
写给 Android 开发的小程序布局指南,Flex 布局!
一、序Hi,大家好,我是承香墨影!最近在做小程序,验证一些方向,开发效率确实很快,就是各种微信的审核有点费劲,但是总归是有办法解决的。想要开发一款小程序,其实和我们正常写一款 App 类似,你需要有精美的前端布局,并且同时还需要处理和前端 UI 组件的交互以及它们背后的逻辑。最近会分享一些关于小程序的内容(不保证,想到哪里写到哪里),今天先说说接触小程序第一步:布局。如...原创 2018-06-14 11:13:51 · 674 阅读 · 0 评论 -
三种方法,刷新 Android 的 MediaStore!让你保存的图片立即出现在相册里!
公众号原标题:测试:“系统相册里怎么看不到我刚保存的图片,是我操作不对吗?”一、序Hi,大家好,我是承香墨影!App 内,创建一个文件并保存文件到本地的需求,是很常见的 I/O 操作。而如果这个文件变成了一张图片,那你涉及到的就不仅仅是一个 I/O 操作了,还需要考虑如何更新 MediaStore,这样才可以在系统相册中,看到它。这里说的 MediaStore,本质...原创 2018-04-25 18:16:11 · 5529 阅读 · 1 评论 -
一大波 Android 刘海屏来袭,全网最全适配技巧!
一、序Hi,大家好,我是承香墨影!Apple 一直在引领设计的潮流,自从 iPhone X 发布之后,”刘海屏” 就一直存在争议。不过不管你怎样,Android 也要跻入 “刘海屏” 的行列,尤其是 Android P 发布之后,也从系统级支持顶部凹槽屏幕设计。很多厂商也在逐渐推出 “刘海屏” 设计的手机,在国内比较常见的就是 OPPO R15 和 华为 P20。屏幕不...原创 2018-04-12 13:41:34 · 1205 阅读 · 0 评论 -
我花了 8 小时,"掌握"了一下 Flutter | Flutter 中文站上线
Hi,大家好,我是承香墨影!距离 Google 在 2018 世界移动大会上发布 Flutter 的 Beta 版本,Flutter 是 Google 用以帮助开发者在 Android 和 iOS 两个平台,同时开发高质量原生应用的全新移动 UI 框架。当时上线的官网资料,都是英文的。而经历了一个多月的整理、翻译、测试。现在 Flutter 中文站 正式上线了。Flutter 中文...原创 2018-04-17 12:53:11 · 538 阅读 · 0 评论 -
基于 IJKPlayer-concat 协议的视频无缝拼接技术实现
一、前言Hi,大家好,我是承香墨影!开门见山,开篇名义。今天来聊聊如何将多段视频,拼接成一个完整而连续的视频,然后无缝进行播放。这样的需求应该不算偏门吧?最简单的就是一些视频 App,会将大段的视频切割成小段的视频进行播放,还有一些在播放视频之前,会插播一段广告,这些需求都可以被本文的内容覆盖到。说到多个视频拼接来说,如果你了解过 Google 出的 ExoPlayer 的话,它其内正好有一个 Co原创 2018-03-28 18:52:52 · 1688 阅读 · 0 评论 -
【译】Gradle 的依赖关系处理不当,可能导致你编译异常
文章 | Ashesh Bharadwaj 翻译 | 承香墨影 授权 承香墨影 翻译、编辑并发布在 Android Studio 中,Gradle 构建过程对于开发者来说,很大程度上是抽象的。作为一个新的 Android 开发者,我们第一次遇到 Gradle 通常是在 build.gradle 文件中添加一个远程依赖项。让我们看看如何阅读 Gradle 依赖关系树,并解决与依赖翻译 2018-04-03 11:37:20 · 613 阅读 · 0 评论 -
Git 二分调试法,火速定位疑难Bug!
你一定遇到过,一个很久没修改过的功能,莫名其妙的出现了问题?肉眼查代码、屡逻辑完全找不到问题点?前两天还好好的功能,怎么这个今天就不行了?这两天改动了这么多代码,到底是那一次改动引发的 Bug?这样非崩溃的 Bug,有时候想要排查出问题,并不是一件容易的事情。我想,这个时候你会需要 git bisect !一、git bisect 基础使用git bisect 是 Git 提供的一种 二分法 的调试原创 2017-12-20 11:47:30 · 1311 阅读 · 0 评论 -
在 ReactNative 的 App 中,集成 Bugly 你会遇到的一些坑
一、前言最近开新项目,准备尝试一下 ReactNative,所以前期做了一些调研工作,ReactNative 的优点非常的明显,可以做到跨平台,除了少部分 UI 效果可能需要对不同的平台进行单独适配,其中的核心逻辑代码,都是可以重用的。所以如果最终用 ReactNative 的话,可以省出某一端的客户端开发人员。而我这里调研的主要方向,就是它对国内第三方 SDK 的支持。在国内,开发 App,一般都原创 2017-11-13 13:15:03 · 3835 阅读 · 1 评论 -
细说 Java 的深拷贝和浅拷贝
版权声明: 本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有。 未经允许,不得转载。一、前言任何变成语言中,其实都有浅拷贝和深拷贝的概念,Java 中也不例外。在对一个现有的对象进行拷贝操作的时候,是有浅拷贝和深拷贝之分的,他们在实际使用中,区别很大,如果对其进行混淆,可能会引发一些难以排查的问题。本文就在 Java 中的深拷贝和浅拷贝做一个详细的解说原创 2017-08-14 12:58:28 · 433 阅读 · 0 评论 -
RecyclerView 配合 DiffUtil,好用到飞起
版权声明: 本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有。 每周会统一更新到这里,如果喜欢,可关注公众号获取最新文章。 未经允许,不得转载。一、前言DIffUtils 是 Support-v7:24:2.0 中,更新的工具类。因为已经更新了一段时间了,也不好说是最新更新的。它主要是为了配合 RecyclerView 使用,通过比对新、旧两原创 2017-08-17 23:54:53 · 645 阅读 · 1 评论 -
Android 原生 Intent 分享支持的那些事
版权声明: 本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有。 每周会统一更新到这里,如果喜欢,可关注公众号获取最新文章。 未经允许,不得转载。一、前言对于一个 App 而言,分享是一个比较常见的功能。分享的主要功能,还是为了让 App 在用户之间形成一个自传播的效果,但是对于开发者而言,分享就是在不同的 App 之间,传递文本、文件等数据。原创 2017-08-09 13:14:39 · 2521 阅读 · 0 评论 -
使用 Router 实现的模块化,如何优雅的回到主页面
版权声明: 本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有。 未经允许,不得转载。一、前言现在越来越多的 App 以 Router 路由的形式,来实现模块化。一般而言,这种 Router 的方案,从外部直接调起的方式,是由一个 ProxyActivity 做一个代理,然后再由它去跳转到项目内的其他目标 TargetActivity 。这样的实现,理论原创 2017-08-09 13:13:21 · 1077 阅读 · 0 评论 -
聊聊高效的与第三方合作方沟通
版权声明: 本公众号发布的所有文章,均属于原创,版权归本公众号所有。 允许有条件转载,转载请附带底部二维码。一、前言当公司在高速发展的时候,经常会有一些第三方的合作蹦出来,一般来说都说互惠互利的,也不存在什么甲方乙方之说。在开发眼里,无非就说我需要在项目里嵌入你的SDK、或者是我需要编写一个SDK供你嵌入之类的。但是,这种合作通常实际去沟通细节的开发们,基本上是不会碰面的。在互原创 2017-02-20 00:20:47 · 3579 阅读 · 1 评论 -
那些好用到跳,但是记不住的ADB命令
版权声明: 本公众号发布的所有文章,均属于原创,版权归本公众号所有。 允许有条件转载,转载请附带底部二维码。开篇ADB是Android开发必备的工具,非常的好用。虽然常用的命令就那么几个,基本上能满足日常工作80%的需求,但是又有一些比较冷门,却又非常好用的命令。现在能搜到的文章,基本上和文档差不多,但是实际中,却又会碰到一些文档中不存在的坑。这里分享一些非常好用,但是又比较冷原创 2017-02-20 00:20:13 · 489 阅读 · 0 评论 -
序列化一个Intent
版权声明: 本公众号发布的所有文章,均属于原创,版权归本公众号所有。 允许有条件转载,转载请附带底部二维码。真的需要new一个Intent吗?在Android中,打开一个Activity,有多少种方式?不过不管是使用什么方式,最终都没办法逃避创建一个Intent,然后startActivity。那么,如果想根据数据来确定跳转的页面呢?需要怎么做比较好一点。DeepLink好像是原创 2017-02-20 00:19:38 · 297 阅读 · 0 评论 -
一个没有Notification的前台服务
版权声明: 本公众号发布的所有文章,均属于原创,版权归本公众号所有。 允许有条件转载,转载请附带底部二维码。1、什么是Foreground ServiceForeground Service被称为前台服务,一般用于提高Service的优先级,这样在正常系统回收的时候,不会被系统杀死。前台服务通常用于那些,比较需要有稳定性,并且持续在后台运行的操作。例如:音乐播放器、下载服务等。原创 2017-02-20 00:19:06 · 466 阅读 · 0 评论 -
AS和Git配合更好哦
AS和Git配合更好哦 版权声明: 本公众号发布的所有文章,均属于原创,版权归本公众号所有。 允许有条件转载,转载请附带底部二维码。一、前言对于大多数开发而言,使用Git只需要在Terminal中,通过命令就可以完成所有的操作。但是实际上Android Studio中,同样提供了非常方便的图形化接口。本文就在Android Studio(下文简称AS)中,如何快捷的使用Gi原创 2017-02-20 00:16:57 · 1017 阅读 · 0 评论 -
Gradle多渠道打包实例
版权声明: 本公众号发布的所有文章,均属于原创,版权归本公众号所有。 允许有条件转载,转载请附带底部二维码。一、前言在实际的工作中,当接手的App项目逐渐做大的时候,总有一些原因需要根据需求对项目做一些定制化的维护,例如:三方合作定制、海外版本之类的。但是通常这种方式定制,其大体的框架都是一样的,只是根据不同的需求点,做部分定制,本文就这种定制的需求,利用Gradle做一个解决原创 2017-02-20 00:14:32 · 367 阅读 · 0 评论 -
Android开发需要知道的ADB
Android开发需要知道的ADB 版权声明: 本公众号发布的所有文章,均属于原创,版权归本公众号所有。 允许有条件转载,转载请附带底部二维码。ADB是什么?ADB的全称是Android Debug Bridge,翻译过来就是Android调试桥。顾名思义,主要用于PC端和Android设备调试连接的作用。从最早的Eclipse到现在的Android Studio,其实底层原创 2017-02-20 00:13:11 · 443 阅读 · 0 评论 -
使用 Palette 让你的 UI 色彩与内容更贴合
版权声明: 本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有。 每周会统一更新到这里,如果喜欢,可关注公众号获取最新文章。 未经允许,不得转载。一、前言今天介绍一个 Android 下比较有意思的 Support v7 库,Palette,它翻译过来就是调色板。Palette 可以从一张 Bitmap 中提取出它突出的颜色,这样我们就可以将提原创 2017-09-08 09:05:46 · 307 阅读 · 0 评论