咕咚

2016 - Here I Am

ReView 一个辅助设计师方便 review UI 的 view 组件集合

ReView 是一个用于帮助程序员、设计师方便查看字体大小以及颜色等属性的 View 组件集合, 这篇文章简单介绍一下 ReView 的开发初衷及用途。 问题 在日常开发过程,程序员一般都需要根据设计师的设计图以及标注图来进行 UI 开发,一般来说,设计师往往会在标注图上标注清楚每个 View 的大小以及字体颜色等等属性,我们开发者需要严格按照设计师的标注进行界面开发。 开发完成后,设...

Android 复杂界面开发实践之 ViewController: 介绍

本人博客地址 http://gudong.name 本文简书地址:http://www.jianshu.com/p/e70c1478cd9e ViewController 是一种界面开发组件化的实现方式,利用它可以将一些复杂的 UI 界面开发组件化, 从而更好的组织代码结构,从而提高开发效率,降低维护成本。 ...

Android 复杂界面开发实践之 ViewController: 前言

本人博客地址 http://gudong.name 本文简书地址:http://www.jianshu.com/p/e3f86d5a4474 首先说明的是 ViewControler 并不是 Android 中存在的一个组件,而是在技术实践中总结创造出的一个开发理念,这是一种业务开发过程中的 UI 模块化思想的...

博客更新日志随想

今天终于有时间可以更新一下博客了。 之前,一次偶然的机会,在网上看到黄玄的博客,也就是现在自己博客的风格,第一眼便喜欢上了这种风格,不论是大背景的 Header 还是侧边栏的设计,都是自己非常喜欢的设计,但是苦于自己前端能力薄弱,自从去年选择了一个 Jekyll 的主题后,能做的也只是一些简单的修建,如果要按照自己的想法去设计一些个性化的 feature 还是太难了。直到遇到这个博客风格,...

ButterKnife 使用介绍

首先说点关于这篇文章的题外话。 公司项目重构,我建议老大使用 ButterKnife,因为自己使用了很久,而且自己跟周边的同事演示了一下 ButterKnife 的功能,都觉得很赞,所以就想自己要不彻底调研一次 ButterKnife,包括用法以及源码。 最终我给组长的结果是 这东西可用,也没有什么太大的性能问题,但是最终还是被老大给 kill 掉了,后来也没有理论过老大,好吧,那就继续...

使用 RxJava 重构一段判断逻辑

这么晚了我还在给咕咚翻译加在线发音功能!!还好有音乐作陪… 其实实现发音很简单,金山的 API 支持单词发音。访问 http://dict-co.iciba.com/api/dictionary.php?type=json&w=nice&key=3BE8E8ACA43FDA088E52EC05FA8FA203 即可在返回单词解释的同时,返回单词的发音 URL,如下所示,自...

使用 CheckStyle 检查代码

前言 最近在看廖祜秋的下拉刷新项目 android-Ultra-Pull-To-Refresh,就在今天做了一些精简操作后,准备加入项目准备使用时,发现 lib 根目录下有一个 checkstyle.xml 文件,很好奇它是干什么的,后来 Google 后,原来这东西可以用来检查代码,随即查询了一些资料,把它用了起来,下面简单记录下。 用途 先不说如何配置,先说它有什么用。 Andr...

Handler 之 ThreadLocal 相关

在上一篇文章Handler 之 源码解析中介绍 Handler 与 Looper 的关系时,半路出现了 ThreadLocal 这个类,他是什么呢,本想在 Handler 源码解析一文一起阐述了, 但是觉得这样篇幅太长,不好,况且他又是一个相对独立的概念,这里就把它单独拿出来,结合任玉刚的Android的消息机制之ThreadLocal的工作原理博文,为自己总结归纳下 ThreadLocal...

Handler 之 源码解析

上一篇博客Handler 之 初识及简单应用中介绍了 Handler 的作用,以及 Handler 的基本用法,同时也详细介绍了为什么子线程不能更新 UI 的原因,但是因为篇幅原因,所以对 Handler 的内部机制并没有展开叙述。这篇文章就从 Handler 开始解析与之相关的源码,从而更好的理解 Handler 以及 Looper MessageQueue。 Handler 机制 写...

Handler 之 初识及简单应用

这篇文章主要讲解和记录自己对 Handler 的理解。因为一开始接触 Android 就接触到了 Handler,所以对 handler 的了解应该比较多,加上项目中在消息传递以及异步控制方面都要用到 Handler。自己也不止一遍的看过 Handler 源码,不过每次看的时候都能明白,但是时间久了,就很容易忘记。所以这次就有了这个 Handler 系列。从 Handler 的使用场景,到具...

关于咕咚翻译

咕咚翻译是自己最近开发的一个实现『划词翻译』功能的 Android 应用 ,可能是目前 Android 市场上翻译效率最高的一款应用。 示意图 项目地址 目前咕咚翻译已经开源到了 Github ,咕咚翻译,欢迎 star ,如果有 bug 或者更好的意见可以提 issue. 下载 如果想第一时间体验,可点击下载链接 缘起 自己经常在手机上会阅读一些英文的技术 blog 或者文档,...

跨进程数据共享问题及解决方案

最近在开发咕咚翻译时,在偏好设置的过程中,出现了一个莫名其妙的 bug,在 A 进程中设置偏好设置后,B 进程不能及时访问到 A 进程中设置的数据,今晚终于得到解决,随即做一次简单的记录。 咕咚翻译 这里先简单介绍下咕咚翻译这个 App,如名字所言,它主要的功能是翻译,不过相比其他的翻译软件,他的翻译效率更高。 因为它实现了手机端的”划词翻译”,只要你在手机上复制了任何英文内容,他都会监...

关于个人项目

作品展示画廊,有图有真相。链接 关于个人项目 从一开始工作,自己就是个比较爱动手的开发者,喜欢将自己的想法变(编)成(程)具体可以看见的东西,做东西的过程也是一个学习的过程。 因为自己的作品可以随意加入各种最新的知识点,所以这也是一个很好的体验新技术的方法. 并且自己做的东西,还可能帮助到别人,给别人带来便利,何乐而不为。 尽管我知道,做一个好用的东西,其实还是挺不容易的,因为好...

RxJava 在 AppPlus 中的应用

RxJava 已经出来很长一段时间了,国内也已经有很多公司在使用,与此同时,有不少优秀的开发者也不断的在开源社区分享自己对 RxJava 的使用理解,而且这个过程中也产出了不少优秀的 RxJava 资料。自己通过这些资料以及一些开源项目也在不断的学习 RxJava, 从一开始的 GankDaily 项目中蹒跚学步,到 AppPlus 中的大量实战,自己对 RxJava 的应用也变得熟练了起来...

Android 过度绘制介绍及优化 Tip

Android 中的过度绘制是指同一个像素被绘制多次,从绘制性能角度讲,同一像素点被绘制的次数当然越少越好,这样有利于减轻 GPU 的工作压力,事实上,在具体开发过程中 ,不可避免的可能会出现过度绘制,这里,Android 系统本身在开发者选项里已经提供了一个选项开关 Debug GPU overdraw(调试 GPU 过度绘制),用于检测 App 的过度绘制, 只要打开这个开关,App 界...

Android性能优化典范 - 第1季 阅读笔记

该文章是自己在阅读 Android性能优化典范-第一季 时的读书笔记,Android性能优化典范主要讲了Android的渲染机制、内存和GC以及电量优化方面相关的内容,因为内容比较庞杂,加上一些知识点需要花心思去理解,所以在阅读的时候,顺便记录一下自己的阅读理解。 原文 Android性能优化典范-第一季 笔记条目 1、Android 系统每隔 16ms 发出 VSYNC 信号,触发硬...

《火星救援》有感

忙里偷闲,在 Acfun 这个网站看了一部电影 - 火星救援,看之前,对这个电影没什么特别大的期待, 不过因为主演是马特达蒙,所以今天就选择了这部电影。 第一次看他的电影是 谍影重重,自己也是从这部电影开始,喜欢上他。 依旧记得大学时,连续三个周末,看完了谍影重重系列,每周一部,不敢贪多,当时只觉得两个小时太短了! 当时因为太喜欢,特意还裁剪下其中的剧照(恩,当时应该用的是QQ影音自带...

再见 2015 ,你好 2016 ~

这篇文章是我的2015年终总结。去年就曾想过写一篇自己的2014年终总结,后来想过几天再写,然后一晃已经是2015年末了, 时间就是这么快。我觉得今年一定要抽时间总结下,在梳理得与失的同时,也是对自己一年里,做的所有事的一个回忆和反思。 这一年 这一年发生了很多事,不论生活方面,还是工作方面,都经历了比去年更多的事。 生活方面 其实,这一年应该从媳妇跟我一起坐上来北京的列车开始。到北...

为什么开发了 AppPlus

AppPlus 是自己今年七月份开始做的一个小产品,它是一个主要用Android用户间传送Apk文件、管理手机应用的工具软件。 目前已开源,开源地址 为什么要做这个软件 一、我想用最少的步骤打开最近运行的应用详情界面 因为是开发者的缘故,我经常需要清理应用缓存数据,一般的做法时,找到系统设置->应用管理->找到对应的应用->打开应用详情界面,然后清理数据, 而且手...

利用 Gradle Task 查看远程依赖库的本地存储路径

这篇文章主要分享一个主题,如何在 AndroidStudio 中利用 gradle 查看自己项目中引入的三方依赖库的本地缓存路径。相信一些同学会对这个 话题感兴趣的。 问题 自从使用 AndroidStudio + Gradle 开始项目开发,我们已经用到了很多 gradle 带来的特性,比如要在项目中使用三方 Lib , 我们再也不需要像 eclipse 时代,需要我们手动下载对应的 ...