分类: Android源码解析

ValueAnimator属性动画深入解析

前言在上一篇博文Handler消息机制深入解析当中,在最后面说到: ViewAnimation底层也是通过调用invalidate来实现的,无限循环动画就会导致无限调用invalidate,就会导致idle得不到执行。属性动画的实现原理不同于View动画。View动画的每一帧都是通过invalidate方法来触发重绘,而属性动画每一帧的绘制都是通过Choreographer的回调实现。因此,本质

Handler消息机制深入解析

前言大家在日常开发中肯定用过Handler,常用的API主要有: 1234post(@NonNull Runnable r) postDelayed(@NonNull Runnable r, long delayMillis)postAtFrontOfQueue(@NonNull Runnable r) .......... 在主线程中可以通过这些API可以进行延时操作,在子线程中可以通过这些A

Glide系列之——Glide对象创建及功能扩展

前言Glide是一个优秀的开源图片加载组件,广泛应用在各大App当中,并且也是Google官方强力推荐的一个图片加载库,根据官方文档介绍: Glide是一个快速高效的Android图片加载库,注重于平滑的滚动。Glide提供了易用的API,高性能、可扩展的图片解码管道(decode pipeline),以及自动的资源池技术。Glide 支持拉取,解码和展示视频快照,图片,和GIF动画。Glide的

Glide系列之——初识Glide

前言Glide是一个优秀的开源图片加载组件,广泛应用在各大App当中,并且也是Google官方强力推荐的一个图片加载库,根据官方文档介绍: Glide是一个快速高效的Android图片加载库,注重于平滑的滚动。Glide提供了易用的API,高性能、可扩展的图片解码管道(decode pipeline),以及自动的资源池技术。Glide 支持拉取,解码和展示视频快照,图片,和GIF动画。Glide的

LeakCanary源码解析之——dump堆栈

前言在前一篇文章LeakCanary源码解析之——内存泄漏监测当中从源码的角度对Leakcanary中内存泄漏监测原理进行了剖析。既然监测到了内存泄漏,那么接下来就是要把堆栈给dump出来,进行堆栈分析,最终以图形化的方式展示内存泄漏堆栈。本篇文章就从源码的角度分析一下dump堆栈的过程。 本次分析的源码基于: 123dependencies { debugImplementation

LeakCanary源码解析之——内存泄漏监测

前言在日常开发中,肯定都使用过LeakCanary这个库来监测app的内存泄漏问题。LeakCanary会自动监测、分析以及上报内存泄漏,其工作主要是分为以下四步: 1、监测泄漏的对象 2、dump堆栈 3、分析堆栈 4、对泄漏进行归类,然后通过通知的方式上报内存泄漏 那么LeakCanary监测内存泄漏的原理是什么呢,怎么判断一个Activity或者Fragment被泄漏了呢?本篇文章就从源

Android应用层View触摸事件分发机制

概述前两篇博客从源码的角度对View绘制流程进行了分析,那么当用户需要跟View进行交互的时候,比如点击按钮的时候,按钮是如何得到点击事件的呢?当用户在屏幕上进行点击或触摸的时候,事件是如何传递到各个View的呢?这个就是本篇博客研究的点:View事件分发机制。只有同时掌握View事件分发机和View绘制流程,并辅以一定的练习,才能真正掌握自定义View。下面开始进入正题!注:源码基于API25。

Android应用层View绘制流程之measure,layout,draw三步曲

概述上一篇博文对DecorView和ViewRootImpl的关系进行了剖析,这篇文章主要是来剖析View绘制的三个基本流程:measure,layout,draw,只有把这三个基本流程搞清楚了,平时在自定义View的时候才会有清晰的思路!开始进入正题。 View的measure过程三个流程均是从ViewRootImpl的performTraversals方法开始的,如下所示: 123456789

Android应用层View绘制流程之DecorView与ViewRootImpl

概述一直对Android中View的整个绘制流程不是很了解,View是怎么添加到Activity当中去的?当View中的内容发生改变的时候是怎样执行界面的刷新的?因此,今天准备从源码的角度来对View的整个绘制流程来进行分析,源码基于API25。由于篇幅限制,这篇文章只分析顶层视图DecorView的显示逻辑,具体的View树绘制三部曲:measure,layout,draw将在下篇博文进行深入剖