自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zjmdp的专栏

Android研究

  • 博客(18)
  • 收藏
  • 关注

原创 基于Proxy思想的Android插件框架

本文所有代码托管在Github:PluginDemo意义研究插件框架的意义在于以下几点:减小安装包的体积,通过网络选择性地进行插件下发模块化升级,减小网络流量静默升级,用户无感知情况下进行升级解决低版本机型方法数超限导致无法安装的问题代码解耦现状Android中关于插件框架的技术已经有过不少讨论和实现,插件通常打包成apk或者dex的形式。dex形式

2014-10-20 15:08:13 4116 4

原创 拥抱Mac之码农篇

拥抱Mac之码农篇使用Mac大概两年时间,之前用着公司配的一台27寸的iMac,无奈机械硬盘严重拖慢速度,影响工作心情,于是入手Macbook Retina 13,这两年的开发工作全部在Mac上完成,也积累了一点心得,遂总结此文,文章主要介绍一些我认为可以提高程序员工作效率的工具软件,希望对使用Mac的码农有点帮助。包管理Mac系统上主要的包管理有Macport和Homebrew,

2014-09-17 11:42:00 19343 6

原创 Android 4.1 (Jelly Bean) 源码编译过程总结

昨天google官方发布了Android 4.1 Jelly Bean的源码,本人第一时间将源码托了下来(托了一个通宵),今天又花了一早上时间编译ROM并刷到自己的Galaxy Nexus中,虽说Android 4.1已经用了一个多星期了,但是作为Android开发者和爱好者,体验源码下载、编译、刷机的整个过程还是很有意义的,然而在编译和刷机过程中也遇到了一些问题,晚上抽了点时间将整个过程总结一下

2012-07-11 23:10:52 23159 18

原创 Android浏览器地址栏中历史访问记录的自动提示实现(AutoCompleteTextView)

此文旨在能帮助有需要的Android新手实现一个小小的功能,代码质量不具有任何参考意义,文章最下面的格式也有点小问题,搞了一会没搞定,放弃了。      目前无论是PC上还是手机上,浏览器的地址栏都带有历史访问记录自动提示功能,例如之前访问过http://www.qq.com,那么当下次再次输入qq,或者www.q的时候(具体出发规则可定制),http://www.qq.com就会在地址栏下面

2012-08-26 22:49:55 4887

原创 Android中draw过程分析 (结合Android 4.0.4 最新源码)

经过对View树的measure和layout过程后,接下来将结合前两步得到的结果对View树进行绘制,之前以为measure过程是measure、layout和draw三部曲中最复杂的一步,在仔细分析draw过程后才发现自己之前的论断有失准确性。不过从整体来看,draw过程的逻辑是比较清晰的,和measure和layout过程十分相似,而本文将从整体来介绍draw的整个流程,至于其中的细节可能会

2012-07-28 11:07:30 20311 7

原创 Android中layout过程详解 (结合Android 4.0.4 最新源码)

上一篇文章Android中mesure过程详解 (结合Android 4.0.4 最新源码)介绍了View树的measure过程,相对与measure过程,本文介绍的layout过程要简单多了,正如layout的中文意思“布局”中表达的一样,layout的过程就是确定View在屏幕上显示的具体位置,在代码中就是设置其成员变量mLeft,mTop,mRight,mBottom的值,这几个值构成的矩形

2012-07-11 09:19:34 11694 2

原创 Android中mesure过程详解 (结合Android 4.0.4 最新源码)

如何遍历并绘制View树?之前的文章Android中invalidate() 函数详解(结合Android 4.0.4 最新源码)中提到invalidate()最后会发起一个View树遍历的请求,并通过执行performTraersal()来响应该请求,performTraersal()正是对View树进行遍历和绘制的核心函数,内部的主体逻辑是判断是否需要重新测量视图大小(measure),是

2012-07-09 09:39:31 8224 4

原创 Android中invalidate() 函数详解(结合Android 4.0.4 最新源码)

invalidate()函数的主要作用是请求View树进行重绘,该函数可以由应用程序调用,或者由系统函数间接调用,例如setEnable(), setSelected(), setVisiblity()都会间接调用到invalidate()来请求View树重绘,更新View树的显示。      注:requestLayout()和requestFocus()函数也会引起视图重绘

2012-07-04 09:33:06 40796 8

原创 Android中Surface和SurfaceView的一些理解和总结

什么是Surface?简单地说Surface对应了一块屏幕缓冲区,每个window对应一个Surface,任何View都是画在Surface上的,传统的view共享一块屏幕缓冲区,所有的绘制必须在UI线程中进行什么是SurfaceView?说SurfaceView是一个View也许不够严谨,然而从定义中 public class SurfaceView extends View {

2012-07-02 12:31:30 10579 1

原创 从源码中Activity 的定义来理解 Activity

首先我们来看下源码中源于Activity的定义:public class Activity extends ContextThemeWrapper implements LayoutInflater.Factory2, Window.Callback, KeyEvent.Callback, OnCreateContextMenuListene

2012-07-02 12:24:45 5092 1

原创 Android中Matrix的pre post set方法理解

虽说以前学习过线性代数和图形学原理,但是在实际中碰到matrix还是疑惑了好一阵子,今天通过向同事请教终于找到一点门路,特总结如下:Matrix主要用于对平面进行缩放,平移,旋转以及倾斜操作,为简化矩阵变换,Android封装了一系列方法来进行矩阵变换,其中包括pre系列方法:preScale,preTranslate,preRotate,preSkew,set系列方法:setScal

2012-07-02 09:01:13 3656 1

原创 ImageView ScaleType 的扩展之Top Crop 的实现

ImageView中ScaleType属性可用来设置image的填充方式,主要通过以下两种途径:1、XML文件中设置android:scaleType属性。2、代码中使用函数setScaleType(ScaleType scaleType)来设定。目前内置的填充方式有如下8种:CENTER /center  按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示

2012-07-01 22:14:55 8817 7

原创 Android中按键消息的派发过程及源码分析

Android中消息的整体派发过程:接收消息——消息处理前端——窗口管理系统派发消息——窗口进行消息处理以上过程中前三步都在WmS中完成,按键消息直接发送给当前窗口,而触摸消息则根据触摸坐标位置来匹配所有窗口,并判断坐标落到哪个窗口区域中,然后把消息发送给相应的窗口。对于按键消息还会涉及到“生理长按”的检测,比如一直按住某个键,那么会产生一些列的按键消息,然而第1个和第2个消息之间往往会间隔较

2012-07-01 14:49:04 12176 2

原创 Android 学习-序

掐指一算工作已经三个月了,三个月的时间让我适应了从学校到职场的过渡,很庆幸我可以从事自己喜欢的工作,而且我所在的公司也是当初最想加入一家互联网公司。在三个月时间里我得到了周围同事许许多多的帮助,充分感受到了公司开放、活跃的工作氛围,并且在这里我能充分感受到自己作为一只刚踏入职场的菜鸟每天在一点一滴的进步,每一天对我来说都是充实的。这三个月中我接触到了许多未涉及过的东西,例如 Android,

2012-06-18 13:00:20 1280

原创 钩子函数使用小结

<br /><br />钩子函数使用小结<br />最近一段时间正在参加腾讯互联网开发大奖赛,我报的项目是一个关于Windows窗口恢复的小软件,旨在方便用户不小心关闭某个窗口后能有一次“后悔”的机会恢复刚关闭的窗口。如何知道某个窗口被关闭了呢?而且在窗口关闭后必须得记录相关信息才能进行窗口的恢复。Windows系统是基于消息机制,因此窗口的关闭动作也是窗口过程接收到相应的关闭消息后系统才将窗口关闭。钩子作为Windows系统的主要特性之一,通过设置“钩子”,应用程序可以在系统级对所有消息、事件进行过滤,访

2011-02-24 09:20:00 1246

原创 高质量C++程序设计学习笔记

<br /> <br /><br />1.“你使用一个语言特征是因为你需要它,而不是因为它存在”,学习一门程序设计语言,并不需要掌握其全部的语法,关键是要学习使用语言来解决实际问题的方法。如果你掌握的语法和程序设计方法能够高效地解决实际工作中的问题,那么表明你已经掌握了这门语言。<br />2.C++标准定义了标准库的接口,但未实现,这是语言实现的任务。编程语言的实现就是编译器,连接器或者解释器。语言实现有多重不同的版本,在符合标准的情况下,可以适当扩展,但一般都实现了标准化库,而且接口保持一致。<br /

2011-02-24 09:19:00 1078

原创 可执行文件装载学习小结

<br /><br />系统在创建一个进程时需要赋予它虚拟地址空间,不同进程之间的虚拟地址空间是独立的,对于32位平台每个进程的虚拟地址空间为4G,进程A和进程B如果都在自己的虚拟地址空间中访问地址为0x12345678的内容时,A和B访问到的都是自己私有数据,因为他们在映射到物理存储器时是不同的地址,当然4G的虚拟地址空间也是有划分的,有用户模式分区(一般代码和数据映射到该处),内核模式分区,空指针赋值分区,64KB禁入分区,<br />在赋予进程地址空间时,虚拟地址并未映射到具体的物理地址,需要使用函数

2011-02-24 09:15:00 1002

原创 C++ primer学习笔记

<br /><br /><br />1.初始化指创建变量并给它赋值,而赋值则是擦除对象的当前值并用新值代替<br />2.对内置变量,函数体外定义的初始化为0,函数体内定义的不进行初始化,类类型定义时必须初始化,要么调用默认构造函数,要么显示初始化。<br />3.如果声明有初始化式,那么它可被当做是定义,即使声明标记为extern即已初始化的extern声明被当做是定义,只有当extern声明位于函数外部时,才能有初始化式;对于const变量,如果需要在其它文件中访问,则在定义时指定该const变量为ex

2011-02-22 17:27:00 1223

空空如也

空空如也

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

TA关注的人

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