7 Mr13_周

尚未进行身份认证

努力做一个合格的 Android Coder

等级
TA的排名 5w+

Android MTP 实现框架分析

MTP简介MTP(Media Transfer Protocol)是PTP(Picture Transfer Protocol)的扩展,当PC端(Windows, Mac, Linux)与手机通过USB的MTP模式进连接的时候,在PC端是可以看到手机存储中的文件的,然而这个文件都只是手机存储中文件的映射,是一个虚拟的,因此手机存储的保护性就比较高了。MTP定义了需要命令,PC端可以利用这些命令操...

2019-05-09 18:46:36

Andrid MTP之UsbService分析

UsbService

2019-05-09 18:46:21

源码剖析: Notification的发送

NotificationManagerService启动在system_server进程中,启动了NotificationManagerServiceframeworks/base/services/java/com/android/server/SystemServer.javaprivate void startOtherServices() { mSystemServiceMa...

2019-05-09 18:06:38

SystemUI之StatusBar的创建

SystemUI的启动SystemUI是一个系统的APK,它是在system_server进程中被启动的。frameworks/base/services/java/com/android/server/SystemServer.java private void startOtherServices() { mActivityManagerService.systemRea...

2019-04-23 17:32:40

Android音频焦点处理

概要Android系统允许多个应用同时播放音频,这种特性有利有弊。例如当我们正在听音乐的时候突然点开了一个视频,如果我们发现音乐的声音和视频的的声音混合了在一起,这显然让我们非常不爽。而如果我们在播放音乐的时候,突然来了一条信息,这个时候,我们既希望能听到短信的提示音,又不希望音乐此刻停止,而是希望音乐可以降低音量播放以使我们能听清楚短信提示音,之后再恢复音量。Android引入音频焦点(aud...

2018-12-07 17:20:14

实现RecyclerView索引

概要对于列表控制,在 RecyclerView 出现之前使用的是 ListView, 在为 ListView 实现索引的时候,大致有两种方式。写一个类,继承自 ListView,重写 draw() 方法来绘制索引,然后利用 onInterceptTouchEvent() 来截断事件,用 onTouchEvent() 来处理事件。单独写一个自定义 View 实现索引,然后开放一个接口实...

2018-07-09 23:44:55

Okhttp 之 HTTP Cookie 实现

本文主要的目的是分析 Okhttp 如何实现 HTTP Cookie,而 Cookie 是在 BridgeInterceptor 中使用的,因此本文从 BridgeInterceptor 讲起。BridgeInterceptorBridgeInterceptor 是用来为请求报文设置首部信息,例如 Connection: Keep-Alive,这些首部其中就包括 Cookie 首部。...

2018-04-17 14:53:05

Okhttp 之HTTP 缓存实现

以前学习 HTTP 的时候呢,都是从书本中学习概念,但是从来没有在服务器端和客户端去实践过。 作为移动开发人员呢,我觉得还是有必要了解HTTP在客户端的实现。这篇文章讲述的是 Okhttp 在缓存方面的实现,这需要你对 HTTP 缓存有个概要的认识,然后我们结合 Okhttp 源码来看看如何实现客户端的 HTTP 缓存,方便以后与服务器开发人员交(装)流(B)。设置缓存 sOkH...

2018-04-12 17:03:18

Okhttp 之 okio

本文是的前一篇文章OkhttpIO之Segment&SegmentPool的基础上写的,如果你没看懂前面的文章,那么看本文会相当的吃力,因为很多关键的代码都是在前面这篇文章中剖析的。ByteStringokio中添加一个类ByteString,顾名思义就是字节串,这里做一个概要的讲解,具体的实现大家可以去看源码。既然是字节串,它内部就是用一个字节数组支持的。...

2018-04-04 17:20:20

Okhttp IO 之 Segment & SegmentPool

看本文前,我希望你对链表的操作有个基本的认识,否则你会看得比较痛苦,因为我不会解析链表的操作。Segment要想搞明白 okio 的运作机制,Segment 是首先要弄清楚的,Segment 是用作 okio包下的 Buffer 和 SegmentPool 的结点。参数说明 final class Segment { /** The size ...

2018-04-03 18:00:14

Handler 必知必会

概要Handler 封装了一套消息机制,用来发送和处理消息(Message),而它常常被用来更新 UI。创建 public Handler() { this(null, false); } public Handler(Callback callback) { this(callback, false); } ...

2018-02-24 17:11:58

RecyclerView 的 FastScroller 绘制的源码分析

RecyclerView 以前一直被人诟病没有 FastScroller 的功能,然后网上出现了几种解决方法继承 RecyclerView,重写 draw() 方法,绘制 FastScroller单独自定义一个 View,然后传入 RecyclerView 作为参数。第一种方法沿用了 ListView 的思维,把 FastScroller 和 RecyclerView 绘制在一起,耦合度过高,

2017-11-23 17:13:05

Material Design 之 Touch Feedback

目录目录概要设置触摸反馈RippleDrawable参考链接概要在 Materil Design(一下简称 MD ) 中,当用户与 UI 交互的时候,触摸反馈(Touch Feedback)可以在交互点提供一种及时的视觉确认效果。设置触摸反馈Button 在 MD 中默认就有一个反馈动画,使用的是 RippleDrawable 类,这个类很有意思,它根据手指与 UI 交互的不同状态(例如,长

2017-10-20 17:44:59

探究 ButterKnife 的注解处理以及代码生成

ButterKnifeButterKnife 是一个常用的第三方库,它在编译期间,使用注解处理器解析注解,并生成样板代码,从而达到给 Android views 绑定的效果,从而简化了我们写的一些样板代码。为了了解 ButterKnife 的原理,我自己模仿写了一个库,几乎可以以假乱真,当然,这个库只有学习参考的价值。既然是模仿,先看下 ButterKnife 使用 @BindString 注解的例

2017-09-05 11:15:23

Java 8 之 Stream 操作符

前一篇文章 Java 8 之 Stream 的创建 对 Stream 特性以及如何创建 Stream 做了说明,这篇文章对 Stream 的操作符(方法) 进行探讨。filterStream 的 filter() 方法执行过滤操作Stream<T> filter(Predicate<? super T> predicate);filter() 方法使用的是 Predicate 的函数接口,用一个图可

2017-08-30 18:24:49

Java 8 之 Stream 的创建

StreamJava 8 中新增的特性旨在帮助程序员写出更好的代码,其中对核心类库的改进主要包括集合类的 API 和 新引入的流(Stream)。Stream 使程序员可以站在更高的抽象层次上对集合进行操作。Stream 实现机制外部迭代Java 8 之前,如果要操作一个集合中的元素,就需要遍历集合中元素 List<Integer> list = new ArrayList<>(Arr

2017-08-25 17:34:12

Android Transition Framework 源码分析

概要在 Android 4.4 的时候,引入了 Transition Framework ,其原理是利用属性动画,来实现 View 在不同布局的转换效果。在 Android 5.0 的时候 ,基于 Transition Framework 又引入了 Activity/Fragment Transition 和 Shared Elements Transition。刚开始用 Transition Fr

2017-07-20 18:15:46

Android Transition Framework 实战演练

俗话说,“光说不练假把式,光练不说傻把式,既说又练全把式”,继 Android Transition Framework 源码分析 的源码分析后,这篇文章会在应用层面上详解 Transition Framework。 老规矩,看看下要实现的效果图。概要Transition Framework 有两个重要的概念,Scene( 场景 ) 和 Transition( 转换 )。从 上篇文章 可以看出,如果

2017-07-16 18:28:01

shell命令之echo

echo 是用来输出一条信息,默认情况,是不需要引号将要显示的文本字符圈起来。David~MackBook:~ $ echo hello worldhello world但是有时候,字符串会出现引号( 单绰号或双引号 ),就不能正常输出了。那么,如果字符串中出现其中一个引号,那么可以用另外一种引号圈起来。David~MackBook:~ $ echo "I'm david"I'm davidD

2017-07-13 23:51:02

Linux 数据压缩与归档

在 windows 下,对于压缩这个概念,其实指的的数据压缩以及数据归档。数据压缩bzip2工具bzip2 工具要的文件是以 .bz2 结尾,在压缩大型的二进制文件领域非常流行。bzip2 软件包有以下几个工具: - bzip2:用来压缩文件 - bzcat:用来显示压缩的文本文件的内容 - bunzip2:用来解压压缩后的 .bz2 文件 - bzip2recover:用来尝试恢复损毁的压

2017-07-09 23:45:51

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。