咕咚

Tech

日拱一卒

String、StringBuffer 和 StringBuilder 的区别

目前使用 String 直接进行加操作,已经被自动优化为 StringBuilder 形式了。

more...

MVC 与 MVP 并无两样

关于 MVC 的定义介绍,摘一段百度百科介绍: MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式: ...

more...

由 HashMap 引申出的技术深度讨论

在面试中,HashMap 是一个被问到概率很大的一个知识点,因为它本身是一种非常好的数据结构,而且从 HashMap 中可以引申出数组、链表、红黑树、扩容、优化、线程同步等诸多考点,所以很多的面试官都会从 HashMap 开始考察一个人的 Java 水平。

more...

网络编程 / Flask / LeanCloud

该文主要分享 Python 网络编程的一些介绍,自己开始学 Python 是从廖雪峰老师的在线教程开始,非常感谢老师的教程。文章后面分享到了 LeanCloud,这是一个对前端开发者特别友好的服务,非常值得一试。

more...

Android so 文件概要

So 文件学习笔记

more...

枚举介绍以及枚举的本质

枚举是 JDK 1.5 推出的 API,以前经常用静态常量用作类型区分,枚举则是对类型的一种强化,且有更好的语义性,恰当的使用它可以写出非常优雅的代码。

more...

Android 开发中是否应该使用枚举?

在 Android 开发过程中,这个问题被很多次的提起,不少文章分析枚举的内存占用情况,后来在 Android 官方的内存优化文档中提出,不建议使用枚举,但是现在的官方文档却已将次建议删除,这背后都有哪些值得关心的东西呢?一起看看...

more...

Sun 公司的 Java 跟 Android 使用的 Java 库有什么关系?

研究 Java 的发展历史,以及后来被 Oracle 收购后与 Google 的一些纠纷。

more...

什么是运行时(Runtime)

运行时是一个通用概念,不同的语言可能都需要一个运行时才能让程序在硬件平台运行,这篇文章介绍了什么是运行时。

more...

用 Xml 写 Shape Drawable 还是挺让人烦的...

在项目开发过程中,经常用 xml 文件写 drawable,但是写多了实在麻烦,对于一些简单的 drawable 样式,完全可以用 Drawable 提供的 API 进行创建,这里对 API 进行简单包装,以便更好的使用。

more...

Android Drawable 简析

Drawable 用的很多,值得好好学习一下,之前看过很多次,但是都没有记录,这次记录之。Drawable 有很多应用场景,多多挖掘。

more...

Flutter 概览

Flutter 是谷歌今年初推出并开源的一套移动跨平台开发框架,相比其他跨平台方案,Flutter 使用自己的渲染引擎做到了真正的跨平台,这篇文章简单介绍一下 Flutter,算是自己最近学习的一个简单总结。话说现在文章写得越来越少了...

more...

应用开发过程中的一些 Kotlin 语法点记录

应用开发过程中的一些 Kotlin 语法点记录

more...

开发 Intellij 插件(如AndroidStudio 插件)时如何在本地保存状态值

开发 Intellij 插件时,比如自己最近开发的一个 AndroidStudio 插件,需要存储一些状态值,方便做一些 UI 上的偏好设置。 比如这次选中了一个选项,希望下次打开插件时继续选...

more...

日常收集的精品技术文章

GreatArticles 收集最好的技术文章 具体原则: 1、只收集高质量有深度带有自己思考性的技术文章。 2、经典有深度的系列在线文章。 ...

more...

ImageView 中不同 scaleType 的对比介绍

在使用 ImageView 的时候,经常需要设置它的 scaleType,但是一些时候对他们的区别总是很难把握,这次通过示例完整的了解一下不同的 scaleType 对一个 ImageView 的展示到底会有什么样的区别。

more...

LeakCanary 工作原理浅析

LeakCanary 是 Square 公司为 Android 开发者提供的用于在开发期检测内存泄漏的神器,本文简单分析一下LeakCanary 具体的检测原理。

more...

Activity 与 Window、PhoneWindow、DecorView 之间的关系简述

该篇文章主要探究 Android 中 Activity 与 Window、PhoneWindow、DecorView 之间的关系。Activity 的概念都比较熟悉,但是 Window、PhoneWindow、DecorView 这几个类并不常用,所以很多时候就忽略了它们的具体作用。其实在 Activity 的背后,它们都发挥着非常重要的作用,比如下文即将要说到的 setContentView() 原理、事件分发源头都可以看到这几个概念。

more...

关于线程池的执行原则及配置参数详解

在软件开发中,池一直都是一种非常优秀的设计思想,通过建立池可以有效的利用系统资源,节约系统性能。Java 中的线程池就是一种非常好的实现,从 JDK 1.5 开始 Java 提供了一个线程工厂 Executors 用来生成线程池,通过 Executors 可以方便的生成不同类型的线程池。但是要更好的理解使用线程池,就需要了解线程池的配置参数意义以及线程池的具体工作机制。

more...

自定义复杂 View 以及相关绘制优化实践

墨迹天气是一款免费的天气信息查询软件,由于要展示各种各样的数据信息,所以项目中有大量的涉及到图表相关的自定义 View,如展示 24 小时的温度曲线图、潮汐图等等。这里就简单分享一些自己在开发空...

more...

Android 多状态加载布局的开发 Tips

本文将结合自己的项目开发实践,简单分享一下关于多状态 Layout 的开发实践 Tips。

more...

JVM 内存分代、垃圾回收漫谈

关于 JVM 内存模型以及垃圾回收的文章网上很多,自己以前也看过很多,但是却从来也没有系统的去了解学习过,这次正巧再看周志明老师的《深入理解 Java 虚拟机》,内容非常棒,所以自己就花了点时间,认真系统的学习了一遍。

more...

JVM 内存区域介绍

作者博客地址: http://gudong.name 本文博客地址: http://gudong.name/2017/04/18/jvm_memery_area.html Jav...

more...

JVM、Dalvik、ART 介绍

该篇文章主要分享记录一下自己对 Java 虚拟机这个概念以及 Dalvik 虚拟机的理解,同时也会对他们做一个简单的对比。对于 Java 虚拟机自己也在不断学习认识中,如果有什么描述有误的地方,...

more...

仅使用一张资源图片为 View 设置具有按下效果的背景 - OneDrawable

该篇文章主要分享介绍,如何使用一张资源图片为 View 设置具有按下效果的 Background Drawable. 开源地址 OneDrawable 缘起 前段时间在开发项目新版本的...

more...

Android 项目开发清单

良好的开始是成功的一半,对于一个 Android 项目更是,一个好的项目基础架构可以对项目的后续发展有至关重要的作用。所以我们在项目开发之初,应该花费一些时间去调研、设计符合自己项目的基础架构。...

more...

Android 6.0 设备上自定义文本操作栏

该篇文章主要讲解 Android 6.0 设备上自定义文本操作栏。 通过以下文章你会学习到以下几点。 什么是 Android 设备上的文本操作栏 如何在 Android 6.0 设...

more...

使用 Android 原生 API 开发设置界面

算是 17 年第一篇文章,初衷就是简单介绍下用 xml 配置设置界面,为自定义设置界面 UI 做一个铺垫。 场景介绍 为了更好的用户体验,现在的大多数的应用都会提供一个设置界面,供用户去设置...

more...

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

ReView 是一个用于帮助程序员、设计师方便查看字体大小以及颜色等属性的 View 组件集合, 这篇文章简单介绍一下 ReView 的开发初衷及用途。 问题 在日常开发过程,程序员一般都需...

more...

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

本人博客地址 http://gudong.name 本文简书地址:http://www.jianshu.com/p/e70c1478...

more...

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

本人博客地址 http://gudong.name 本文简书地址:http://www.jianshu.com/p/e3f86d5a...

more...

ButterKnife 使用介绍

首先说点关于这篇文章的题外话。 公司项目重构,我建议老大使用 ButterKnife,因为自己使用了很久,而且自己跟周边的同事演示了一下 ButterKnife 的功能,都觉得很赞,所以就想自...

more...

使用 RxJava 重构一段判断逻辑

这么晚了我还在给咕咚翻译加在线发音功能!!还好有音乐作陪… 其实实现发音很简单,金山的 API 支持单词发音。访问 http://dict-co.iciba.com/api/dictionar...

more...

使用 CheckStyle 检查代码

本文最后修改于:2019/12/05 调整、删减部分语句 前言 最近在看廖祜秋的下拉刷新项目 android-Ultra-Pull-To-Refresh,就在今天做了一些精简操作后,...

more...

Handler 之 ThreadLocal 相关

在上一篇文章Handler 之 源码解析中介绍 Handler 与 Looper 的关系时,半路出现了 ThreadLocal 这个类,他是什么呢,本想在 Handler 源码解析一文一起阐述了...

more...

Handler 之 源码解析

上一篇博客Handler 之 初识及简单应用中介绍了 Handler 的作用,以及 Handler 的基本用法,同时也详细介绍了为什么子线程不能更新 UI 的原因,但是因为篇幅原因,所以对 Ha...

more...

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

最近在开发咕咚翻译时,在偏好设置的过程中,出现了一个莫名其妙的 bug,在 A 进程中设置偏好设置后,B 进程不能及时访问到 A 进程中设置的数据,今晚终于得到解决,随即做一次简单的记录。 咕...

more...

RxJava 在 AppPlus 中的应用

RxJava 已经出来很长一段时间了,国内也已经有很多公司在使用,与此同时,有不少优秀的开发者也不断的在开源社区分享自己对 RxJava 的使用理解,而且这个过程中也产出了不少优秀的 RxJav...

more...

Android 过度绘制介绍

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

more...

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

这篇文章主要分享一个主题,如何在 AndroidStudio 中利用 gradle 查看自己项目中引入的三方依赖库的本地缓存路径。相信一些同学会对这个 话题感兴趣的。 问题 自从使用 And...

more...

MVP 模式在 GankDaily 中的应用

最近完成了一个干货客户端 GankDaily , 一个基于干货集中营的手机客户端,整个客户端借鉴 drakeet 的妹纸应用。但是在原项目的基础上, 自己使用 MVP 模式对项目进行重构,让代码...

more...

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

从Android5.0开始,系统提供一个很好看的Activity间的转场动画,具体就是共享两个界面中一些共有的View,让前后两个界面的跳转变得很流畅 好看。 具体效果 一图胜千语,下面就是...

more...

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

众所周知,Android 6.0 相比之前的Android版本有一个很大的不同点,就是动态获取权限。今天自己在做拨号功能时,正巧遇到这个问题, 顺手记录下在Android 6.0 上如何动态获取...

more...

Bitmap相关的知识点整理

图片是Android应用常见的资源,在Android中,图片数据用Bitmap这个类封装。这篇文章整理跟他相关的一些知识点。 1、Bitmap.Config 这是Bitmap的一个内部类(枚...

more...

Java 类加载机制

作为一个 Java 程序员,我们写过很多 Java 类,那他们具体是怎么运行起来的呢? 一开始,我也没有去关心过这个问题,或者说是自己没有在这方面思考过,但是后来觉得,既然每天都在做这些事,为什...

more...

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

AndroidStudio中使用build.gradle的最佳实践

more...

build.gradle 最佳实践集合

AndroidStudio中使用build.gradle的最佳实践

more...

用 Support 包显示 MaterialDialog

如果自己做个人App项目,很可能在一些情况下用到Dialog,Android自己也提供了系统Dialog,但是在MaterialDesigner出现之前,样子确实很丑,这篇博客讲解如何使用Sup...

more...

Java关键字之 volatile

Java有众多关键字,volatile作为一个和同步相关的关键字,很少在自己的项目中使用,今天在看Handler源码时无意看到,顺便便了解了下。 记录以备后用。 volatile关键字 可以被...

more...

Unsafe 类介绍

这个类是用于执行低级别、不安全操作的方法集合。尽管这个类和所有的方法都是公开的(public),但是这个类的使用仍然受限,你无法在自己的java程序中直接使用该类,因为只有授信的代码才能获得该类...

more...

AtomicInteger 一个和高并发有关的工具类

AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而Atomi...

more...

Android使用WebView加载中文时,乱码问题解决

在做App+这个项目时,使用了WebView来展示更新日志,但是在加载本地Html文件的时候,出现了乱码问题。这篇博客记录自己错误出现的原因 、以及解决方法。 由于本地Html文件日志文件中包...

more...

App中主题Theme使用以及Theme切换

在众多Android应用中,尤其是阅读类App,为了给用户提供更好的使用体验,App设计者一般都会提供两套主题,最常见的就是Light Theme和Dark Theme,分别对应了日间模式和夜间...

more...

在流式布局中使用PopupMenu,以及遇到的问题

在做 AppPlus 项目的过程中,因为每个 Item 上面都有一个 PopupMenu,但是当时在xml文件中设置icon后,却发现icon不生效,下面是这个问题的解决方案。#Android ...

more...

MAC 系统如何使用 Sublime Text 3 直接编译运行java代码

在Mac下使用Sublime时,如果要编译java文件,直接使用command+B命令就可以达到编译的效果,此时会在java源文件的目录下生成对应的.class文件,但这显然不能够满足我们的需求...

more...

Android通过颜色设置背景透明度

Android通过颜色设置背景透明度

more...

Android设备上实现锁屏

在Android设备上实现锁屏功能。 最终结果 点击主界面的锁屏按钮,实现立即锁屏 准备阶段 新建一个空的Android项目,并在主界面上拖放一个按钮。并在Button的布局文件中声明o...

more...

自定义view之饼状图的实现

一个圆形饼状View的实现过程。 CakeView是一个通过自定义做的饼状图,如下图所示,会根据比例显示不同的占比。 这个view会根据传入的两个数字参数 生成不同的占比大小。 实现原...

more...
rss facebook jianshu juejin weibo twitter github gitlab youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora