咕咚

因为热爱

关于咕咚翻译

咕咚翻译是自己最近开发的一个实现『划词翻译』功能的 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 时代,需要我们手动下载对应的 ...

开源协议小风波

今天无意间在做项目的过程中,因为没有遵守开源协议,导致了一个小误会,尽管已经跟drakeet同学致歉,但后来还是觉得有必要把事情再梳理一遍,让更多的开发者注重一下开源协议。 一开始在微博看到了@drakeet 同学开源了一个项目,叫 MeiZhi,一个干货集中营的 unofficial 客户端,客户端用于在手机端更好的显示技术干货信息,因为自己平时也比较关注技术干货,自己也就开始使用。 ...

MVP 模式在 GankDaily 中的应用

最近完成了一个干货客户端 GankDaily , 一个基于干货集中营的手机客户端,整个客户端借鉴 drakeet 的妹纸应用。但是在原项目的基础上, 自己使用 MVP 模式对项目进行重构,让代码结构进一步解耦,使业务逻辑和视图表现层相分离,从而让代码逻辑变得更简单, 以下就整理了自己在重构项目过程中对 MVP 这种模式的理解以及项目中如何实施 MVP 的模式。 关于MVP MVP 是 M...

在Android5.0以上设备实现过渡动画

从Android5.0开始,系统提供一个很好看的Activity间的转场动画,具体就是共享两个界面中一些共有的View,让前后两个界面的跳转变得很流畅 好看。 具体效果 一图胜千语,下面就是 Android 5.0 设备上使用转场动画后示意图,这样的交互在 Google 自家的 App 里已经司空见惯。比如 Google Play 中,从应用列表界面跳转到应用详情页,就使用了类似的转场动...

在Android 6.0 设备上动态获取权限

众所周知,Android 6.0 相比之前的Android版本有一个很大的不同点,就是动态获取权限。今天自己在做拨号功能时,正巧遇到这个问题, 顺手记录下在Android 6.0 上如何动态获取权限。 下面从自己一开始的问题入手 实现拨号功能 说到拨号,一个 Intent 就搞定,代码如下, private void callDirectly(String mobile){ ...

Bitmap相关的知识点整理

图片是Android应用常见的资源,在Android中,图片数据用Bitmap这个类封装。这篇文章整理跟他相关的一些知识点。 1、Bitmap.Config 这是Bitmap的一个内部类(枚举),是Bitmap关于色彩显示的配置,不同的配置对应不同的加载效果,下面是相应的文档介绍 Possible bitmap configurations. A bitmap configuratio...

我的 1024

“生活不止眼前的苟且,还有诗和远方” 今天是10月24,也就是所谓的程序员节,很多程序员朋友今天都是关上电脑,挂着免战牌,或游戏、或聚会玩耍…恩,我是个例外。以下纯粹以流水账的形式记录了我的一天。 如有雷同,纯属巧合。 早晨 9点起床,在洗漱的同时给自己做了个荷包蛋,因为上周买的老北京糖火烧还有三个没吃,所以2个荷包蛋+1个糖火烧就做了我的早餐,这配置还不错,哦,不对,应该是搭配...

Java类加载机制

作为一个Java程序员,我们写过很多Java类,那他们具体是怎么运行起来的呢? 一开始,我也没有去关心过这个问题,或者说是自己没有在这方面思考过,但是后来觉得,既然每天都在做这些事,为什么不深入了解下具体的原理逻辑呢。知其然还应该知其所以然,作为一个有追求程序员,我们应该对自己有更高的要求。博文是自己对Java类加载的一些认识,如有错误欠缺,欢迎指正补充。 这里,我们在开始主题之前,先梳理...

我的Android项目开发规范(不断更新)

代码永远写不完,但是写的时间久了,就应该形成自己的代码规范或者自己团队的规范,尽管一些规范已经形成于脑海,但是还是有必要记录下来。从现在开始,一点点积累开发规范。这里积累开发过程中所有的规范细节,尽可能详细。 类文件 项目目录结构 接口文件 命名规范 id命名采用右侧格式 {view缩写}{module_name}{view的逻辑名称} 空间 ...

build.gradle最佳实践之buildConfigField

使用AndroidStudio进行开发,其中很重要的一个文件就是build.gradle,他是整个项目的控制中心,这里收集一些日常会用到的语法或者使用技巧,以备后用。这篇博客主要说明 buildTypes节点下使用buildConfigField。 下面是默认的buildTypes形式 buildTypes { release { proguardFiles ge...

用Support包显示MaterialDialog

如果自己做个人App项目,很可能在一些情况下用到Dialog,Android自己也提供了系统Dialog,但是在MaterialDesigner出现之前,样子确实很丑,这篇博客讲解如何使用Support包中 的API来实现MD风格的Dialog。 Support V7包在22.1.0之前的任何一个版本,AlertDialog一直都是Android4.0风格,直到Support-V7:22....