- 博客(24)
- 资源 (16)
- 收藏
- 关注
原创 adb install 流程分析
在Android系统中,应用的文件是以 .apk为结尾的文件,这个文件是如何被安装到Android系统中的? 那就是利用 adb install 这个命令, 大家可以在命令行内 打入 adb install <.apk文件路径> 进行安装。下面我们来分析它的原理。首先该命令对应代码在commandline.cpp内,内容如下:int adb_commandline(int argc, const c
2017-06-21 14:05:17
6988
原创 Android Binder Java
在阅读本文章前,如果读者还没有阅读过《android Binder Native》,强烈建议先去阅读这篇文章,否则你可能有的地方会不明白。如果你已经读过了上篇文章,那么对于BpBinder、BBinder应该有了一定了解,在Java层的Binder也是一个C/S架构,而且在命名上尽可能的保持与Native层一致,所以大家可以认为,Java Binder 是Native Binder的一个镜像版
2017-06-08 15:53:54
726
原创 Android Binder Native
我们要知道,Android系统基本上可以看做是一个基于Binder通信的C/S架构,Binder把Android系统的各个部分都连在了一起,所以它的重要不可言喻,我们有必要掌握好它。 Binder是Android系统提供的一种 “ 进程间通信(IPC)” 机制。在基于Binder的C/S**(Client、Service)架构中除了 **Client和Service端外、Android还有一个S
2017-06-07 18:25:44
755
原创 GRecyclerView
这次我给大家介绍一个RecyclerView。可以说,如果你使用它 你不用在写adapter, 分割线. 刷新、加载等.如果你想使用的话 , 那么很简单以下是正常使用的 adapter. 也称为 normal adapter, setListener 和 onItemClick 如果不需要 可以不用覆写。 /** * nomr
2016-06-08 22:35:14
599
原创 Android 6.0 动态权限申请
在Android6.0中,引入了动态申请权限机制。 以前我们在申请权限的时候,都是写在了Manifest.xml里面。 安装的时候会有一堆提示申请权限的界面, Google 可能想到用户可能并不注意这些权限。 so~ 就迎来了 动态权限机制。请注意,如果你使用了API 23以上, 然而并没有用代码处理权限问题。 那么你的程序将会 CRASH !!!下面我们来看看到底哪些权限
2016-05-30 22:28:09
21409
2
原创 EventBus替代品, RxBus.
由于最近Rxjava 很是火爆, 所以也不得不去学习了 Rxjava 这个非常牛逼的框架。下面我们来用Rxjava实现 EventBus, 我们称它为 RxBus.我们正常使用Rxjava的时候, 基本都是用以下三个基本创建方式.Observable.create()Observable.just()Observable.from()1. 传递一个OnSubscribe
2016-05-17 13:07:57
1777
原创 View显示原理剖析
首先我们要知道,Android程序的主入口是 ActivityThread 的 main函数中,所有应用程序 有且仅有一个ActivityThread.public static void main(String[] args) { ..... ..... Looper.prepareMainLooper(); ActivityT
2016-04-22 15:01:01
673
原创 打造 RecyclerView的 通用Adapter
现在越来越多的人都开始用RecyclerView, 在此, 我也是推荐大家尽快去把ListView换成RecyclerView.RecyclerView的好处有很多 比如:1. 灵活的在ListView、GridView、瀑布流中来回切换. 只需要setLayoutManager. 非常方便.2. 可以自定义添加分割线.3. 可以自定义增加、删除item 的动画.4. 不用在
2016-04-15 10:05:16
469
原创 Android 项目 上传至 Jcenter.
平时我们在AndroidStudio中开发,使用依赖包的时候总是像下面这样.compile 'com.android.support:recyclerview-v7:23.3.0'又或者是点击项目的Project Structure 来 add library dependency.然而这些东西是从哪里来? 为何直接就可以使用? 原因是因为 他们存在于 maven j
2016-04-15 09:35:02
437
原创 android 源码下载、编译.
最近突然想弄弄源码, 所以按照官方的教程弄了弄.. 奈何我英语不怎么好(也就1级水平,泪奔~~~) ,所以鼓捣了我4天左右才把源码弄出来.并成功在模拟器上运行.. 为了方便大家 下载编译, 总结一篇来特别说明下.首先,Android源码的编译是要在Linux、Mac 下进行的, Windows并不支持.为了这个我特意弄了个双系统, 另一个弄了Ubuntu 64位的 好用~~
2016-04-03 14:38:27
685
原创 android touch事件解析 (从wms到viewgroup)
不多说,进入正题:关于Android中的Touch事件分发, 分为 服务端WindowManagerService(WmS,以下都以WmS简称), 负责采集与分发. 经过一些列调用, 会分发到client端 viewrootimpl中, 然后viewrootimpl进行client端的touch事件分发首先我们要知道的是,在WmS启动后,经过逐层调用,会在nativ
2016-03-25 12:04:06
1307
原创 隐藏软键盘方法
有的时候,我们会接受到一些莫名的需求,比如说自己定制键盘, 计算器等等. 如果我们用EditText的话, 系统会默认弹出软键盘,为了需求需要。 我们需要想尽各种办法 来把系统的软件盘给隐藏掉. 现在网上有很多隐藏软键盘的方法,如
2016-03-01 11:36:20
1558
原创 关于 eclipse项目 导入 android studio 中 出现的图片报错问题解决。
在我们把项目 从eclipse 转向 androidstudio的时候, 莫名的总会出现图片编译不通过的事情, 原因是因为Google加强了对图片的监管, 下面我们来分析图片出现的错误及解决方案。错误 1:, 这肯定是图片命名问题啦。 自己找去~。错误2 : ,具体原因不说了. 解决方法:下载ImageMagick Display , 下载安装完成后,
2016-01-30 11:25:10
2051
原创 关于窗口创建的那些事 之 内核剖析 读笔
先来说说窗口创建的过程.从Wms的角度来看,窗口是一个View, Wms收到用户消息后, 需要把消息派发到View窗口, View本身不能接受消息, 真正接受用户消息的是 IWindow类, 而实现IWindow类的是 ViewRoot.W类, 每一个W类 内部都包含了一个View变量.Wms把消息发送给W, W发送给View,之后由View自己处理.窗口也是有很多种的.
2015-12-25 14:59:34
506
原创 Context 之 内核剖析 读笔
我们先来看一眼Context的类继承关系可以看到,Activity 与 Service 都是context.我们首先来说下ContextWrapper, 顾名思义 , wrapper 译为 "包裹", So~ ContextWrapper 只是对Context的一个包裹作用. ContextThemeWrapper. 看Theme我们就可以知道它是与 主题相关的. 想到
2015-12-24 21:16:41
582
原创 Framework 之 内核剖析 读笔
Framework定义了客户端组建和服务端组建功能接口.Framework框架中主要包含三个部分: 服务端、客户端、Linux.关于服务端: 服务端有两个重要的类, WindowManagerService(WMS)、ActivityManagerService(AMS). WMS 主要作用是 按照顺序叠放各个窗口.隐藏、显示. AMS 主要作用是管理所有
2015-12-24 15:01:04
651
原创 Binder 之 内核剖析 读笔
注: 所有图片来自 内核剖析中!Binder 意味 别针,回形针. 在Android中, Binder用于完成 进程间通讯(IPC)Binder框架 : Binder是一种架构, 分为 服务端. Binder驱动,客户端3个模块, 一个Binder服务端就相当于一个Binder类对象,一旦该对象被创建,就会启动一个隐藏线程, 该线程会接受Binder驱动
2015-12-23 14:13:20
620
原创 Linux 文件系统、启动过程 之 内核剖析 读笔
在Linux中 文件系统有两个概念, 分别是 "根文件系统(Root File System)","存储类文件系统". 存储类系统的概念与windows基本相同,而 根文件系统就差别有点大了.1. “文件”上不指硬盘上的数据,它还包括任何的资源设备.U盘、磁盘、内存、网络等等.2. 操作系统只能
2015-12-18 12:41:07
542
原创 android jni使用
JNI 作用: 是为了让 java代码 能调用c写的代码.使用方法. : 先在我们的java类中 把 native 方法定义好, 例如 : public native String javaCallC();然后我们进入dos, 如果你的工具是 android studio, 我们切换到工程的 java目录下, 然后使用 javah 包名+类名 生成一
2015-10-13 23:01:17
571
原创 android自定义控件 橡皮擦
先来张效果图哈, 我们可以在上面随意的擦擦擦~~~~先跟大家讲一下实现的原理哈, 这里我们主要用到了 paint.setXfermode(PorterDuffXfermode portermode) ,设置画笔的混合模式,这里模式有十多种, 我就不贴图了. 大家可以自行百度~~思路 :我们需要自己的new Canvas(bitmap) 来注入前景bitmap, 在o
2015-08-11 15:34:43
796
原创 android自定义控件 水波纹效果
效果图: 这是今天我们要实现的一个效果: 一个自定义的VIEW .要知道 我们画圆需要重写 父类的 onDraw(Canvas canvas) 方法, 用 canvas 来画圆, 然而画圆需要 cx,cy,radio,paint.(圆心x,圆心y,半径,画笔)..首先我们要重写 父类 onDraw() 和onTouchEvent()事件, 在onTouch 里判断 Acti
2015-05-28 20:31:21
705
原创 android自定义控件 悬浮小火箭 (类似腾讯手机卫士)
效果图 : 这种效果类似腾讯安全卫士的小火箭.. ps:图也是在那里盗的= ,=小火箭 是常驻在后台的. 所以我们在服务里面写逻辑,要实现这种效果. 我们要知道火箭 是悬浮在窗体上的. 这时我们需要WindowManager服务的addView 来实现需注意 弹出窗体 需要系统权限. 下面贴代码 主Activity : 用于
2015-05-27 22:47:36
1738
原创 android自定义控件 多点触控(实现图片自由缩放)
由于需要真机测试, 所以没有弄效果图..1, 建立一个类MultiTouch 继承 ImageView, 并在xml使用, 获取要缩放图片. 如果图片的宽/高大于屏幕宽/高, 那么我们进行缩放,并移动到屏幕中心点. 那么问题来了. 如果我们在构造器中直接获取宽度 那么可能会获取不到. 我们需要知道布局什么时候加载完成. 这时候就需要用到一个接口 OnGlobalLayout
2015-05-26 14:40:29
731
原创 android自定义控件 侧滑菜单(仿QQ)
效果图:这个效果是类似QQ客户端滑动那样的效果, 应该说差不多一样把.实现原理: 自定义一个 view 继承 HorizontalScrollView(因为它可左右滑动). view 里面包含 两个布局, 一个在左边(菜单layout),另一个右边(主layout), 通过重写父类方法 来实现 侧滑功能下面贴布局文件: <RelativeLayout xmlns:
2015-05-25 09:09:13
884
深入理解Android 卷2
2017-09-14
深入探索Android热修复原理
2017-09-14
深入理解Android 卷1
2017-09-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人