自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 从源码上剖析Android View绘制Drawable的原理

一、引言对于Drawable,相比每个Android 开发者都无比熟悉,在开发过程中我们经常setBackground设置背景,那么对于Drawable你了解多少呢?对于View是怎样把Drawable绘制出来又了解多少呢?对View根据不同状态绘制不同的背景又了解多少呢?也就是我们经常使用的selector,今天我们从源码上来深度剖析这些原理,从本质上卸下Drawable的神秘面纱。二、背景介绍在

2016-10-27 17:35:10 1695

原创 从源码上深度剖析View invalidate 、 postInvalidate、requestLayout

对于Android View的自定义来说,这三兄弟简直是我们必须要拿下的坎,那么这三个方法有什么本质上的区别呢? 我个人认为要从本质上来认识这三者的区别,那么你肯定要对Android View的绘制流程了如指掌。首先我们先来看看View 的绘制流程: 从上面View的绘制流程图上我们对invalidate 、requestLayout会触发哪些流程一目了然。 接下来我们用源码的角度上来

2016-10-26 20:42:54 751 1

原创 Android WebView探索

一、引言WebView(网络视图)作用相当于一个迷你的浏览器,采用Webkit内核,因此完美支持html,javascript,css等。有时候,我们完 全可以把UI甚至数据处理都交给WebView,配合PHP等服务端程序,这样Android开发就变成了网页开发,可以省很多精力。目前很多android app都内置了可以显示web页面的界面,会发现这个界面一般都是由一个叫做WebView的组件渲染出

2016-10-24 14:56:22 350

原创 WindowManagerService如何管理应用程序窗口

一、引言如果对于Android窗口视图是怎么显示的还不是很清楚的话,可以看看我上一篇博文Android视图渲染过程分析,我们已经知道每一个Activity组件都有一个对应的ViewRoot对象、View对象以及WindowManager.LayoutParams对象。这三个对象的对应关系是由WindowManagerImpl类来维护的。具体来说,就是由WindowManagerImpl类的成员变量m

2016-10-24 11:31:16 794

原创 Android 视图渲染过程的源码分析

我相信大部分Android开发工程师都知道通过 setContentView(@LayoutRes int layoutResID)就可以把自己layout布局文件的视图结构显示出来。但是鲜有人去研究Android系统是怎么把这些视图给渲染显示出来的。由于工作的需要,我尝试过很多次去研究,去探索。但不可否认这个过程很痛苦,很头疼。看FrameWork层源码无疑是最头疼的,但是没办法,这是工作的重中之

2016-10-21 17:57:29 1830

原创 Android启动Activity的方式原理分析

一.启动 Activity 的分类 在android 种启动4大组件的方式有很多种,但是不管再多,都从调用方式上分为以下2种: 1、显示调用(Intent显示跳转) 显式调用明确指定了调用的组件名称,对于显式调用的Intent,称之为“显式Intent”,如下面的例子: (1)同一个应用程序中的Activity切换 Intent intent =

2016-10-21 16:10:26 716

原创 从源码上分析Android View保存数据状态

在Android开发旅途中,经常会遇到系统控件无法满足我们的视觉,交互效果,这个时候我们常常需要自己自定义控件来满足我们的需求。在这个开发探索过程中,我们不可避免得遇到View要保存状态信息这样的问题。刚开始接触控件自定义开发的时候,我自己也搞不懂要怎样保存当前数据,如果没有对当前状态数据进行保存,那么如果一不小心旋转一下手机屏幕或者按下back,那么控件又回到初始化状态,之前所有的输入都已经不存在

2016-10-20 16:33:54 946

原创 EventBus源码分析

在进入EventBus源码分析之前,如果对EventBus的使用还不是很清楚的,可以参考上一篇文章EventBus使用 首先我们先通过一张简单的图来了解一下EventBus的工作原理: EventBus工作原理图: 也可以看这张图: 当然作为一名Android开发人员,我们肯定是想更深入地了解EventBus是怎么工作的,所以探讨源码是必不可少的。所以我们将进行EventBus源码的

2016-10-18 18:18:23 399

原创 EventBus基本使用简介

一、背景介绍 在编程过程中,当我们想通知其他组件某些事情发生时,我们通常使用观察者模式,正式因为观察者模式非常常见,所以在jdk1.5中已经帮助我们实现了观察者模式,我们只需要简单的继承一些类就可以快速使用观察者模式,在Android中也有一个类似功能的开源库EventBus。 此篇幅主要讲述EventBus是什么?EventBus可以帮助我们干些什么?还有EventBus是怎样调用的?下一篇幅将

2016-10-18 16:01:20 424

原创 Android 中的贝塞尔曲线分析详解

什么是贝塞尔曲线,贝塞尔曲线有什么用?贝塞尔曲线是应用于二维图形应用程序的数学曲线。 曲线定义:数据点(起始点、终止点)、控制点。通过调整控制点,贝塞尔曲线的形状会发生变化。一句话概括贝塞尔曲线:将任意一条曲线转化为精确的数学公式。在我们Android开发的殿堂中,有很多比较炫的效果都是通过贝塞尔曲线来画出来的。下面让我们一起来揭开贝塞尔曲线的神秘面纱! 数学中的贝塞尔曲线 一阶

2016-10-17 19:31:10 707

原创 由动画Animator.end()引发的问题总结

最近在工作过程遇到过一个关于调用Animator.end()方法引发的Bug,下面让我来说说是怎么回事。 在开发过程中,由于一些业务或者需求功能的需要,我们经常需要在某些环节中同时或者连续播放多个动画,这是我们一般会new 一个AnimatorSet来做此类工作,比如常见的方式如下所示:AnimatorSet mSet = new AnimatorSet();ValueAnimator anima

2016-10-17 16:53:18 7201

原创 Android 放大镜效果实现

放大镜就是直接调用相机,使用放大缩小的功能实现,调用相机有两种方式,一种是直接调用系统的;另一种是自定义相机,需要自定义一个预览界面,下面简单介绍自定义相机方式: 首先我们需要申请权限: 1、获取需要的权限,检测手机是否有相机。//manifest里添加使用相机的权限<uses-permission android:name="android.permission.CAMERA" />//使用

2016-10-17 16:23:55 950 1

空空如也

空空如也

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

TA关注的人

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