CoXier's Blog

Never Stop

Android View Constructors

一、Style And Theme Android View 有四个构造方法,其中两个和 Style,Theme 有关,所以在深入了解 View 的四个构造方法之前,有必要了解一下 Style 和 Theme。 1.1 Style Style 是关于某一个 View 或窗口的属性集合,包括常见的长度、宽度、颜色、字体等属性。下面通过一个简单的布局 xml 来介绍如何使用: <Tex...

Android View(绪)

前言 经过一段时间的找实习后,懈怠快一个月了,准备为入职做点准备。断断续续写博客已经快一年了,很惭愧,没有一个能成系列的文章。 之后的初步计划是总结 Android View 系列的知识。 一、Android View Android View 在整个 Andoird Application 中扮演着非常重要的角色。按照我的理解:App 以 Activity 为载体与用户进行交互,例如点击...

Gradle Task

一、Task 概述 Gradle 有两个很基础的对象 project 和 task 。每个 Gradle 构建工程有一个或多个 project,project 由多个 task 组成。task 之间可以存在依赖关系,也可以定义执行顺序。从面向对象角度来看,task 是某个类型 Task 的一个实例。如 Android 工程,每个 Module (包括 root)都会有一个 build.gra...

Android 数据持久化(一)

一、Android 数据持久化 Android 中常使用的数据持久化,分为三类: 文件:适用视频、音乐、图片等格式的数据 SharedPreference:适用 key-value 的形式,相比于 Sqlite 更轻量级 Sqlite :适用存储和应用相关的对象的各个属性 PS:个人觉得网络存储并不算作 Android 数据持久化。 二、SharedPreference...

Gradle Basic

一、Gradle介绍 Gradle 是一种构建工具,基于 Grovy 语言,顺带一提,Grovy 文件经过编译之后也是.class 文件。官网对 gralde 的描述是:对于 java 工程的构建是一个飞跃。 相比于之前的 maven 构建工具,Gradle 的优势在于: 构建配置文件较容易,maven 需要使用 xml 语法 可以自定义插件,定制性更高更方便。 二、Gra...

APK体积优化

一、APK概述 APK的全称 Android Application Package APK是Android操作系统使用的一种应用程序包文件格式,用于分发和安装移动应用及中间件。一个Android应用程序的代码想要在Android设备上运行,必须先进行编译,然后被打包成为一个被Android系统所能识别的文件才可以被运行,而这种能被Android系统识别并运行的文件格式便是“APK”...

View事件分发

Android Dispatches Touch Event 在分析Android系统是如何分发触摸事件之前,我们应该先对整个Android View的层次结构有个清晰的认识 本次分析的源码为Android API 23 Android View 先看图: 在ActivityThread#handleLaunchActivity中启动Activity,之后调用Activi...

自定义CheckBox

继承View还是CheckBox 要实现的效果是类似 考虑到关键是动画效果,所以直接继承View。不过CheckBox的超类CompoundButton实现了Checkable,这一点值得借鉴。 下面记录一下遇到的问题,并从源码的角度解决。 问题一: 支持 wrap_content 由于是直接继承自View,wrap_content需要进行处理。 View measure流程的Mea...

EventBus源码解析(下)

这篇来分析post过程 一、post 接着上面的我们先看看postToSubscription private void postToSubscription(Subscription subscription, Object event, boolean isMainThread) { switch (subscription.subscriberMethod.th...

EventBus源码解析(中)

一、Register 上篇讲解了EventBus的使用方法 、Annotation的一些基础知识。这篇将讲解Register的流程 源码: public void register(Object subscriber) { Class<?> subscriberClass = subscriber.getClass(); List<Sub...