自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小一的专栏

坚持、努力、谦逊

  • 博客(607)
  • 资源 (8)
  • 收藏
  • 关注

原创 Android Studio断点调试

Android Studio断点调试Android Studio包含一个debugger程序,可以帮助你在模拟器和真机上调试你的android应用.通过Android Studio的debugger,你可以:选择你想调试的设备.在代码上设置断点.在运行时去检查变量和表达式的值.可能平时大家调试代码都是通过打印log的形式,今天带大家走进断点调试的世界.断点调试-基础篇设置断点设置断点的方法:

2016-07-01 17:35:29 16383

原创 SparseArray源码解析

SparseArray源码解析Android官方推荐:当使用HashMap(K, V),如果K为整数类型时,使用SparseArray的效率更高.我们通过分析SparseArray的源码,来看一下为什么当K为整数类型时,使用SparseArray的效率更高.之前写过一篇Android SparseArray源码分析, 今天review时候,感觉只是大量的罗列了代码却没有具体分析,而且不是基于Mark

2016-06-01 21:01:43 3080

原创 Volley HTTP 缓存机制

Volley HTTP 缓存规则在介绍Volley的HTTP缓存机制之前,我们首先来看一下HTTP HEADER中和缓存有关的字段有: 规则 字段 示例值 类型 作用 新鲜度 Expires Sat, 23 Jul 2016 03:34:17 GMT 响应 告诉客户端在过期时间之前可以使用副本 Cache-Control no-cache 响应

2016-05-30 20:05:46 6435

翻译 Context详解

原文为了更好的使用Context,翻译了一篇介绍Context的文章,原文链接:Context, What Context?什么是ContextContext可能是Android应用中最经常使用的对象成员,但是也可能是最被错误使用的对象成员.Context对象在Android应用中太常见了,而且在应用中经常作为参数传来传去,甚至是不经验间就创造出一个调用者并不想创造的上下文环境出来.Context的

2016-05-30 17:15:52 2935

原创 LruCache源码解析

LruCache之前分析过Lru算法的实现方式:HashMap+双向链表,参考链接:LRU算法&&LeetCode解题报告这里主要介绍Android SDK中LruCache缓存算法的实现, 基于Android5.1版本源码.构造函数LruCache只有一个构造函数,并且有一个必传参数:public LruCache(int maxSize) { if (maxSize <= 0) {

2016-05-27 15:28:31 1975 2

原创 Scroller源码详解

View弹性滑动详解之前写了一个滚动选择控件 ,在这个控件中我设计了弹性滚动的实现机制,再了解View弹性滚动之前,我们先来学习一下View滚动机制的实现.View的scrollTo/scrollBy这里基于Android5.0版本的源码介绍View类中这两个函数的具体实现.scrollTo源码如下:/** * 对View设置滚动的x和y轴坐标. * @param x x轴滚动的终点坐标 *

2016-05-26 21:03:53 6610

原创 Android View measure流程详解

Android View measure流程详解Android中View绘制的流程包括:measure(测量)->layout(布局)->draw(绘制).因为Android中每个View都占据了一块矩形的空间,当我们要在屏幕上显示这个矩形的View的时候首先我们需要知道这个矩形的大小(宽和高)这就对应了View的measure流程.有了View的宽和高,我们还需要知道View左上角的起点在哪里

2016-05-18 15:47:04 8970

原创 关于ConcurrentModificationException的个人观点

为什么要研究这个异常起因是最近再刷一本《App研发录》的书,其中作者针对这个异常说了一句话”但凡有点编程常识的程序员都应该知道在遍历一个集合时不能删除该集合中的元素”,而我对这句话很不赞同.作为一个有点编程常识的程序员,我觉得在遍历集合时是肯定可以删除元素的,只是删除的方式需要考究.接下来,就针对这个异常进行深入分析,看一下到底应该用神马样子的姿势在集合中删除元素.需要申明一点: 我看书从来都是带着

2016-05-16 12:53:22 2244

原创 Android SQLiteOpenHelper使用和源码详解

SQLiteOpenHelper在讲解闹钟数据库之前,需要先来分析一下SQLiteOpenHelper的源码,从而了解SQLite数据库的使用.使用方法大家在使用SQLiteOpenHelper的时候,一般习惯使用如下代码构建一个自定义的SQLiteOpenHelper:public class TestDBHelper extends SQLiteOpenHelper { public s

2016-05-11 15:34:20 9468

原创 Android HTTPS详解

最近更新之前写过一篇使用HttpClient来实现Android平台HTTPS通信的文章,收到很多读者的私信。悲催的是,私信内容我今天才看见。由于之前是使用HttpClient来实现Android平台的HTTPS通信,但是HttpClient在Android2.2之后就不推荐使用了,所以这里重写这篇博客,将所有HTTPS通信代码改用HttpUrlConnection实现。同时,讲解完成后,还会写一篇

2016-04-13 17:06:36 14499 6

原创 EventBus框架源码分析

开源项目上周又手动撸了一遍EventBus实现,同时上传EventBus的中文注释源码到Github上,欢迎大家fork&star.EventBusAnalysisEventBus基础概念EventBus是一个Android事件发布/订阅框架,通过解耦发布者和订阅者简化Android事件传递.事件传递既可以用于Android四大组件间的通讯,也可以用于用户异步线程和主线程间通讯等. 传统的事件传递

2016-04-12 16:41:22 10058

原创 Volley图片加载功能

Gituhb项目Volley源码中文注释项目我已经上传到github,欢迎大家fork和start.为什么写这篇博客本来文章是维护在github上的,但是我在分析ImageLoader源码过程中与到了一个问题,希望大家能帮助解答.Volley获取网络图片本来想分析Universal Image Loader的源码,但是发现Volley已经实现了网络图片的加载功能.其实,网络图片的加载也是分几个步骤:

2016-03-29 13:57:49 1657

原创 Volley框架源码分析

Volley框架分析Github链接Volley框架分析Volley源码解析为了学习Volley的网络框架,我在AS中将Volley代码重新撸了一遍,感觉这种照抄代码也是一种挺好的学习方式.再分析Volley源码之前,我们先考虑一下,如果我们自己要设计一个网络请求框架,需要实现哪些事情,有哪些注意事项?我的总结如下:需要抽象出request请求类(包括url, params, method等),抽

2016-03-27 15:43:27 3278

原创 Android 透明度数值

透明度为了便于查找,记录一下Android透明度对应的数值。 透明度 数值 100% FF 95% F2 90% E6 85% D9 80% CC 75% BF 70% B3 65% A6 60% 99 55% 8C 50% 80 45% 73 40% 66 35% 59 30%

2016-03-03 16:36:09 42446 11

原创 日本之行(京都、大阪、奈良)

和老婆去日本度过了开心的7天时间,3天在京都,剩下的时候住在大阪,但是也跑遍了神户和奈良。对日本的第一印象就是干净,空气好。洗肺之旅异常开心。对日本的第二印象就是人民很热情,很有礼貌 。处于那种有礼貌的环境中,每天的心情都会很开心。第三印象就是物价还是偏高,说明我需要长工资了。

2016-02-29 18:08:38 1490

原创 Java HashMap的工作原理和实现

目录目录概述定义构造函数数据结构存储实现putkey value读取实现getkeyJAVA实现HashMap面试常考问题什么时候会使用HashMap他有什么特点HashMap的工作原理equals和hashCode都有什么作用如果HashMap的大小超过了负载因子load factor定义的容量怎么办 HashMap和HashTable的区别概述HashMap的基本操作如下

2016-02-29 18:05:46 3391

原创 2015年终总结

前言2014年的年终总结因为2014年太过于平淡,所以也没啥可写的,本来2015年也准备跳票的,但是我还是一个比较负责任加坚持的人,本着为以后回顾有点看点的心态,总结一下自己的2015吧。虽然2015事业上依旧非常平淡,但是人生中还是发生了几件大事,记录并和朋友们分享一下。按照时间排序即可。事业回顾事业上算是非常平稳的一年,感觉就是太平稳,给人感觉就是没啥特别的冲动和激情。 虽然和朋友例如耗子一年

2016-02-15 15:08:19 1506 7

原创 Android使用DialogFragment创建对话框

目录目录概述DialogFragment重写onCreateView来创建Dialog重写onCreateDialog创建Dialog与Activity进行通信参考链接概述DialogFragment是在Android 3.0时引入的,是一种特殊的Fragment,用于在Activity的内容之上展示一个模拟的对话框。例如,用于展示一个警示框、密码框等。在DialogFragment之前

2016-02-02 12:47:17 5773

原创 Android Settings 声音设置

AudioManager进行声音设置之前,我们必须先了解AudioManager这个类。这个类封装了大部分的声音操作。在Android中,一般通过如下代码获取AudioManager的实例:AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);在介绍如何使用AudioManager调节音量之前,我们需要先知道

2016-01-27 16:47:08 5155

原创 Android中属性动画和补间动画的区别

目录目录前言为什么引入属性动画属性动画ObjectAnimatorValueAnimatorAnimatorSetAnimator监听器前言Android属性动画和补间动画,既是日常工作中经常接触到的技术,也是面试常考的问题。 这篇博客主要是为了介绍Android的属性动画使用,同时带着大家总结一下关于面试过程中常被面试到的动画问题。关于补间动画,可以参考之前的博客:Android动

2016-01-26 17:52:56 14785

原创 Android面试——Activity的四种启动模式

前言今天开始,会逐步总结Android面试可能遇到的各种问题及其知识点总结。为的就是今天4月份的晋升面试或者更好机会的面试能够拿出100%的状态。有兴趣的同学,也可以关注我的Android面试文件夹。Activity四种启动模式Activity一共有四种启动模式,分别是:standardsingleTopsingleTasksingleInstance在具体介绍这四种启动模式之前,我们先来

2016-01-25 16:34:19 1905

原创 Android5.0 Settings各个子模块跳转和布局实现

前言今天要很任性的研究一下Android5.0中Settings子模块的跳转实现。Settings应用的Launcher类我们首先看一下Settings应用的Launcher类。查看package/app/Settings/AndroidManifest.xml文件: <activity-alias android:name="Settings" and

2016-01-21 17:43:58 13363 7

原创 《算法4》——补全左括号的问题

题目在完成《算法》课后题目的过程中,遇到一道题目内容如下:编写一道程序,从标准输入得到一个缺少左括号的表达式并打印出补全括号之后的中序表达式。例如,给定输入:1 + 2 ) * 3 - 4 ) * 5 - 6 ) ) )你的程序应该输出:((1 + 2) * ((3 - 4) * (5 - 6)))思路开始感觉这个题目就有点类似求四则表达式的题目,也就是所谓的双栈法。 双栈法的原理如下:1.

2016-01-17 17:28:57 5897 6

原创 ViewPager中呈现前一页和后一页的内容

目录目录前言思路关键函数自定义PagerContainer前言今天需要实现如下图所示的布局效果:第一反应是利用ViewDragHelper写一个自定义布局,然后实现拖拽效果。但是如果这样做,会有很多实现上的问题,例如:三个Page的布局内容需要在一个类里完成,耦合性太高了。自定义布局中需要大量处理MotionEvent,解决Touch事件分配和冲突等各种问题。因此,我考虑一种折中的方法

2016-01-05 18:02:51 4181 2

原创 Java并发之串行线程池

目录目录前言思路示例代码前言2016新年和两个小伙伴聊天的时候,提到了多线程排队的问题。也就是说,当服务器一个应用需要同时处理大量线程时,最好有个排队的机制,防止出现大并发失败的情况。研究生阶段我也是服务器开发,所以对这块也很感兴趣。同时,做Android的这两年时间,通过研究Android源码,也会Java并发处理多线程有了自己的一些理解。那么问题来了,如何实现一个串行的线程池呢?思路何为串

2016-01-05 11:22:10 6712 6

原创 三角函数

目录目录前言单位圆定义前言在Android自定义控件中,一定会遇到与数学三角函数打交道的地方。例如今天我需要写一个环形的Layout自定义布局,就需要了解单位圆中的三角函数的具体实现。单位圆定义三角函数也可以依据直角坐标系xOy中半径为1,圆心为原点O的单位圆来定义。给定一个角度a,设A(1, 0)为起始点,如果a>0,则将OA逆时针转动,如果a<0,则讲OA顺时针移动,直到转过的角度等于a为止

2015-12-31 14:56:39 1498

原创 源码角度深入理解Activity

目录目录前言Activity相关类介绍ActivityThread前言这篇博客的名字起的很大,我自己也很担心是否有能力来从源码的角度深入分析Activity。 写这篇博客的起因是因为最近一直利用空闲时间在学习《Android开发艺术探索》,今天总算读完一遍,但是其中第九章节“四大组件的工作过程”一直让我介怀,感觉自己并没有真正的搞懂。 所以这里也是花时

2015-12-30 17:14:07 3310 1

原创 Vim中复制粘贴缩进错乱问题的解决方案

前言这是一则记录贴,防止小技巧遗忘。不知道大家是否会有这种困扰,例如在Android Studio有一段缩进优美的代码实现,例如:public void sayHello() { String msg = "Hello Vim Paste Mode"; System.out.println(msg);}当你把这段缩进优美的代码直接ctrl+c,ctrl+v到Vim的时候,就会出现如

2015-12-11 15:25:29 36233 2

原创 Android监听ScrollView控件的滑动起始和结束事件

目录目录前言实现方案实现思路关键代码前言最近还是有点忙的,所以博客写的少了,更主要的原因可能是最近在追《Android开发艺术探索》,估计看完还需要再几周的时间,所以……记录工作中遇到的一个问题以及我的解决方案。最近需要在一个圆形的屏幕上为滚动控件增加一个弧形滑动侧边栏,其实就是ScrollBar。ScrollBar的实现比较简单,自定义一个控件,确定好圆心,画圆弧即可。但是,在整合Scro

2015-12-09 16:02:32 7393 4

原创 Android ProGuard技术详解

目录目录ProGuard概述ProGuard规则语法常用规则ProGuard概述ProGuard工具通过移除无用的代码以及使用语义隐晦的名称来重命名类、字段和方法,从而达到压缩、优化和混淆代码的目的。由于ProGuard会使应用更难于进行反向工程,因此当应用使用对安全性要求极高的功能时,必须使用此工具。ProGuard规则ProGuard之所

2015-11-27 15:16:27 3829 1

原创 Android应用数字签名详解

目录目录概述数字签名证书生成方法命令行工具keytooljarsingerAndroid Studio 小结查看应用签名信息查看自签名证书的信息查看第三方应用或Android系统应用签名证书信息概述Android系统要求所有的应用必须被证书进行数字签名之后才能进行安装。Android系统通过该证书来确认应用的作者,该证书是不需要权威机构认证的,一般情况下应用都是用开发者的自签名证书,

2015-11-26 15:23:26 19584 2

原创 AndroidL 开机展示Keyguard锁屏机制初探

目录目录锁屏时序图锁屏加载流程PhoneWindowManagerKeyguardServiceDelegateKeyguardServiceWrapperKeyguardServiceKeyguardViewMediatoronKeyguardLockedshowLockedhandleShowStatusBarKeyguardViewManagershow

2015-11-07 17:15:16 8464

原创 Android自定义View构造函数详解

目录目录初始Custom View的构造函数生成Custom View的自定义属性在Custom View的构造函数中获取自定义属性设置自定义属性值在布局xml文件中为属性赋值在style中为属性赋值通过RstyledefStyle为属性赋值在Custom View所在的Activity的Theme中指定后记初始Custom View的构造函数之前写过一篇实现圆形进度条的博客(自定

2015-11-04 21:19:30 21033 13

原创 Android触发器组件BroadcastReceiver详解

目录目录概述BroadcastReceiver的使用创建BroadcastReceiver的子类注册BroadcastReceiver静态注册动态注册广播的发送概述BroadcastReceiver是Android四大组件之一,用于监听系统的广播消息。BroadcastReceiver使用非常简单,它在工作方式上更接近于函数,当BroadcastReceiver对象被构造出来后,通常只

2015-11-03 12:28:07 2487

原创 Android使用Canvas绘图

目录目录前言画布Canvas画笔Paint自定义圆形进度条前言Android自定义控件经常会用到Canvas绘制2D图形,在优化自己自定义控件技能之前,必须熟练掌握Canvas绘图机制。本文从以下三个方面对Canvas绘图机制进行讲解:画布Canvas画笔Paint示例圆形进度条画布Canvas首先,来看一下Android官网对Canvas类的定义:The Canvas class

2015-11-01 22:43:45 11881

原创 Android中自定义SeekBar背景颜色,进度条颜色,滑块图片

目录目录Android SeekBar常见问题进度条颜色设置进度条高度设置滑块样式Android SeekBar常见问题在使用Android Seekbar大家可能经常遇到下面这几个问题:如何设置Seekbar进度条的高度?如何设置滑块的样式?如何设置进度条的颜色和背景颜色?接下来,针对这三个问题我会逐一作出解答。解答前,我们需要配置一个默认的Seekbar,样式代码如下:<Line

2015-10-28 20:54:41 48981 2

原创 Android设置屏幕亮度

使用场景最近在研究AndroidL Settings的代码,写了一个简单的控件来操控屏幕亮度。 其实,调节屏幕亮度的场景应用很广,例如很多视频应用都响应touch事件来进行亮度调节。屏幕亮度调节模式首先,需要明确屏幕亮度有两种调节模式:Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC:值为1,自动调节亮度。Settings.System.SCRE

2015-10-28 18:46:29 14996 1

原创 Android L Settings实现

概述Android L的settings界面实现和Android4.4版本有很大的不同,在Android L中,setting是使用dashboard等控件进行了重新实现。具体流程如下。初始化流程Android L Settings模块首界面为Settings,继承自SettingsActivity,而SettingsActivity继承自Activity。首先看一下Settings.java代码,

2015-10-28 17:47:49 3126

原创 诚心推荐一个视频学习网站

最近好久没有写博客了,并不是因为懒惰,除了10月1假期完成了婚姻大事,其他大部分时间都用来在慕课网上学习Android和Java的知识了。这里也是给大家推荐一下慕课网,里面很多csdn的牛人在讲课。晒一下我最近的学习经验,求约战。

2015-10-16 10:31:45 1345 1

转载 Android LayoutInflater原理分析,深入理解View(一)

转载本文转自郭霖的专栏。在公司各种拥抱变化,可能又要转回Android应用开发了。趁着空档的机会学习一下View的实现机制。LayoutInfalter首先,来看一下LayoutInflater的用法。LayoutInflater有两种写法,分别为:工厂模式。LayoutInflater mLayoutInflater = LayoutInflater.from(context);Server

2015-09-24 00:30:32 1989

ActiveAndroid-3.0-JAR包

ActiveAndroid 3.0版本的jar包.

2016-12-02

Android打包boot.img工具mkbootfs

用于Android打包boot.img文件,主要是针对ramdisk

2014-07-08

ExpandableListView小项目展示

博客里讲解了自己利用ExpandableListView实现的一个Demo,大家可以下载参考。

2014-06-21

windows scoket编程

windows socket编程,两个程序,一个客户端,一个服务器端,实现了服务器端监听客户端的请求,客户端发送数据包,服务器段接收并返回。说白了,就是中国传媒大学研究生计算机网络的第7次实验

2011-11-28

LAMP基础学习

这是我四个月来总结的lamp的经验,非常适合初学者阅读,请大家尽情下载,支持开源

2011-10-10

apt-mirror搭建ubuntu本地仓库源

我自己总结的如何搭建ubuntu本地仓库源,非常具有参考价值,和大家共享一下

2011-08-22

关于ntp服务器搭建

我自己总结的如何搭建ntp服务器,希望大家也能从中学到知识.

2011-08-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除