自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 资源 (1)
  • 收藏
  • 关注

原创 SparseArray 分析

SparseArray 分析文章目录SparseArray 分析1.简介1.1 简单使用Demo2.基础变量设置2.1 基础概念概述3.主要函数分析3.1 SparseArray(int initialCapacity)3.2 SparseArray()3.3 get(int key, E valueIfKeyNotFound)3.4 get(int key)3.5 delete(int key)3.6 remove(int key)3.7 removeReturnOld(int key)3.8 remo

2020-05-25 13:34:02 341

原创 区分sleep()/wait()/join()/yield()

区分sleep()/wait()/join()/yield()文章目录区分sleep()/wait()/join()/yield()1.sleep()1.1 举例分析1.2 其他2.wait()2.1 notify()和 notifyAll()2.2 举例分析3.yield()4.join()4.1 举例分析5.线程状态转换参考资料1.sleep()sleep()是Thread中的静态native方法。sleep()可以在任何情况下调用。Thread.sleep()会暂停当前线程,且不会释放任何

2020-05-13 15:49:03 190

原创 Android ANR

Android ANR文章目录Android ANR1.ANR简单介绍1.1 产生ANR的场景1.2 ANR具体时间定义2.ANR触发分析2.1 Input相关2.2 Service相关2.3Broadcast相关2.4 ContentProvider相关参考资料1.ANR简单介绍ANR:应用程序无响应(Application Not Responding)1.1 产生ANR的场景InputDispatching Timeout:5秒内无法响应屏幕触摸事件或键盘输入事件。Servic

2020-05-12 16:52:40 319

原创 Android中ViewStub的使用与分析

文章目录1.ViewStub的简单使用1.1 简单说明1.2 简单示例2.结合源码分析问题2.1 第二次调用inflate()加载会抛出空指针异常2.2 第二次通过调用setVisibility()加载也会抛出空指针异常2.3 监听事件的设置1.ViewStub的简单使用1.1 简单说明ViewStub实质上是一个宽高都为0的不可见 View。通过延迟加载布局的方式优化布局,提升渲染性能。1.2 简单示例activity_main.xml<?xml version="1.

2020-05-11 19:05:18 653

原创 打印出一个元素不重复的数组的所有子集

文章目录1.打印出一个元素不重复的数组的所有子集1.1 代码1.2 思路1.3 总结1.打印出一个元素不重复的数组的所有子集1.1 代码递归打印子集:fun printSubset(aimedArray: IntArray, index: Int = 0, subset: MutableList<Int> = mutableListOf<Int>()) { // 打印子集 println(subset.toString()) // 循环未放入子集

2020-05-11 18:58:38 850

原创 将一个有序数组转换成二叉排序树

1.1 二叉排序树二叉排序树是一棵二叉树,且具有以下性质:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。1.2 思路数组中间的数是根节点,中间左边的是左子树,中间右边的是右子树。依照此规则递归,将一个升序的数组转换成二叉排序树。1.3 代码将升序的有序数组转换成BST:fun createBSTForAscendSortedArray(array: IntA

2020-05-11 18:50:04 1686

原创 TextView中使用富文本

TextView中使用富文本文章目录TextView中使用富文本1.Html.fronHtml2.SpannableString2.1 .setSpan()方法2.2 可设置的格式1.Html.fronHtml布局:<TextView android:id="@+id/test_text_view" android:textSize="30dp" and...

2020-04-27 13:56:28 621

原创 Equals和==的简单比较

Equals和==的简单比较文章目录Equals和==的简单比较1. equals和 == 的区别1.1 == 比较的是内存地址。1.2 equals 比较的是可重载的等价关系2.重载equals时要重载hashCode()方法2.1为什么需要重载hashCode()?2.2 重载hashCode()应注意什么?3.有关字符串的一些比较3.1 创建字符串 = 和 new 的区别3.2 字符串在常...

2020-04-09 10:18:23 121

原创 JetPack基础导航

JetPack 组件基础JetPack组件是一个用于构建Android原生UI的现代化工具箱。JetPack组件可以简化和加速了我们在Android上的UI开发,它使我们可以编写更精简的代码,同时它也提供了强大的工具和直观的Kotlin APIs。你不需要编辑任何XML格式的布局文件,也不需要在代码中创建控件。你只需要调用JetPack组件中的函数,告诉它你需要什么,剩下的将由JetPac...

2020-03-20 14:55:57 207

原创 Chapter4:与Fragment交互

Chapter4:与Fragment交互文章目录Chapter4:与Fragment交互4.1 屏幕界面管理4.2 动态管理Fragment4.2.1 事务变更的延迟执行4.2.2 添加和删除Fragment4.2.3 返回键的支持4.3 创建一个自适应的应用布局4.3.1 更新布局资源文件使其支持动态Fragments4.3.2 适配差异的设备4.3.3 动态载入Fragment4.3.4 消...

2020-01-16 18:00:22 1592

原创 Chapter3:Fragment的生命周期及其衍生

Chapter3:Fragment的生命周期及其衍生文章目录Chapter3:Fragment的生命周期及其衍生3.1 理解Fragment的生命周期3.1.1 理解Fragment的创建和展示3.1.2 避免方法命名混淆3.1.3 理解Fragment的隐藏与销毁3.1.4 尽可能高效的使用资源3.1.5 管理Fragment的状态3.2 Fragment衍生的特殊用途类3.2.1 ListF...

2020-01-14 13:44:18 237

原创 Android自定义控件——04属性动画补充

4.属性动画补充文章目录4.属性动画补充4.1 PropertyValuesHolder与Keyframe4.1.1 PropertyValuesHolder4.1.2 Keyframe4.2 ViewPropertyAnimator4.2.1 概述4.2.2 常用函数4.2.3 性能考量4.3 为ViewGroup内的组件添加动画4.3.1 animatelayoutChanges 属性4.3...

2019-12-31 17:34:41 304

原创 Android自定义控件——03属性动画

3.属性动画文章目录3.属性动画3.1 ValueAnimator的基本使用3.1.1 概述3.1.2 ValueAnimator 的简单使用3.1.3 常用函数3.2 自定义插值器与Evaluator3.2.1 自定义插值器3.2.2 Evaluator3.3 ofObject3.3.1 概述3.4 ObjectAnimator3.4.1 概述3.4.2 自定义ObjectAnimator属性...

2019-12-27 17:09:34 419

原创 Android自定义控件——02视图动画

2.视图动画文章目录2.视图动画2.1 视图动画标签2.1.1 概述2.1.2 scale标签2.1.3 Animation继承属性2.1.4 alpha 标签2.1.5 rotate 标签2.1.6 translate 标签2.1.7 set 标签2.2 视图动画的代码实现2.2.1 概述2.2.2 ScaleAnimation2.2.3 AlphaAnimation2.2.4 RotateA...

2019-12-25 15:49:01 522

原创 Android自定义控件——01绘图基础

1.绘图基础文章目录1.绘图基础1.1 基本图形绘制1.1.1 概述1.1.2 Paint使用基础1.1.3 Canvas使用基础1.1.4 Color1.1.5 补充1.2 路径1.2.1 概述1.2.2 直线路径1.2.3 弧线路径1.2.4 补充1.3 Region1.3.1 构造Region1.3.2 区域相交1.3.3 补充1.4 Canvas(画布)1.4.1 Canvas 变换1....

2019-12-24 18:07:53 494

原创 Kotlin基础(四)

Kotlin基础(四)文章目录Kotlin基础(四)4.泛型4.1 Kotlin中的泛型4.2 Java中泛型使用时需要注意的4.3Kotlin中泛型使用时需要注意的4.4 星投影4.5 泛型类4.6 泛型函数参考资料4.泛型泛型主要是用来限制集合类持有的对象类型,使得类型更加安全。当一个集合类里面放入了错误类型的对象,编译器就会报错.4.1 Kotlin中的泛型val map ...

2019-12-23 14:12:50 179

原创 Kotlin基础(三)

Kotlin基础(三)文章目录Kotlin基础(三)3.集合类3.1 不可变List3.2 可变集合MutableList3.3 遍历List元素3.4 List元素操作函数3.5 List集合类的函数算子(operator)3.6 过滤操作函数算子3.7 映射操作符3.8 分组操作符3.9 排序操作符3.10 生产操作符3.11 Set3.12 创建Set3.13 使用Java中的Set类3....

2019-12-19 11:05:17 251

原创 Kotlin基础(二)

Kotlin基础(二)文章目录Kotlin基础(二)2.基本数据类型与类型系统2.1 对象对等性2.2 基本类型2.3 Array数组类型2.4 Kotlin中的 null2.5 kotlin.Unit类型2.6 kotlin.Nothing类型2.7 is 和 !is运算符2.8 as运算符参考资料2.基本数据类型与类型系统Koltin是一门强类型的、静态类型、支持隐式类型的显式类型语...

2019-12-17 15:51:26 122

原创 Kotlin基础(一)

Kotlin基础(一)文章目录Kotlin基础(一)1. 基础语句1.1 声明变量和值1.2 变量类型推断1.3 使用 is 运算符进行类型检测1.4 字符串与模板表达式1.5 if表达式1.6 when表达式1.7 for循环1.8 return返回1.9 标签(label)1.10 throw表达式1.11 this关键字1.12 运算符重载1.13 Elvis操作符 ?:1.14 中缀操作...

2019-12-16 16:52:44 148

原创 Java中的小知识点总结(一)

Java中的小知识点总结(一)文章目录Java中的小知识点总结(一)1.占位符2.字符串的比较2.1 创建字符串 = 和 new 的区别2.2 字符串在常量池中和堆中的区别2.3 intern()方法2.4 使用中间变量也会返回指向堆中对象的引用3.System.identityHashCode()4.赋值中的技巧4.1 可读性增强4.2 类型提升4.3 StringBuffer和StringB...

2019-12-12 16:58:23 117

原创 Android 调式桥(adb)常用命令

Android 调式桥(adb)常用命令文章目录Android 调式桥(adb)常用命令1.简介2.常用命令查看设备列表通过 WLAN 连接到设备停止 adb 服务器查询设备详细信息安装应用删除应用设置端口转发将文件复制到设备/从设备复制文件3.更多命令1.简介Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令便于执行各种设备操作(例如安...

2019-11-25 15:36:32 160

原创 Android——View的工作原理

View的工作原理文章目录View的工作原理1.1 ViewRoot和DecorView简介1.1.1 ViewRoot相关1.1.2 DecorView相关1.2 理解MeasureSpec1.2.1 MeasureSpec1.2.2 MeasureSpec和LayoutParams的对应关系1.3 View的工作流程1.3.1 measure过程1.3.2 layout过程1.3.3 dra...

2019-11-25 13:42:45 169

原创 Android——View的事件体系

Android的View事件体系文章目录Android的View事件体系1.1 View简述1.1.1 View的位置参数1.1.2 MotionEvent和TouchSlop1.1.3 VelocityTracker、GestureDetector、Scroller1.2 View的滑动1.2.1 使用scrollTo/scrollBy1.2.2 使用动画1.2.3 改变布局参数1.2.4 滑...

2019-11-21 18:25:57 192

原创 Android事件分发源码分析

Android事件分发源码分析文章目录Android事件分发源码分析1.1 Activity->dispatchTouchEvent()1.2 Window->superDispatchKeyEvent()1.3 View对点击事件的分发过程1.3.1 点击事件的分发过程概述1.3.2 ViewGroup点击事件分发处理过程分析1.3.3 View点击事件分发处理过程分析1.4 参考...

2019-11-21 18:19:40 193

原创 AIDL代码举例

AIDL代码举例文章目录AIDL代码举例1.对象类及AIDL文件2.服务端3.客户端4.AndroidManifest补充IPC机制学习中AIDL使用的实例代码。学习笔记正文实现的是客户端与服务端之间的跨进程通信及RPC调用,还有服务端对客户端的定时通知。1.对象类及AIDL文件Person.javapublic class Person implements Parc...

2019-11-14 18:19:28 152

原创 Android的IPC机制(下)

Android的IPC机制(下)文章目录Android的IPC机制(下)1.4 Android中的IPC方式1.4.1 使用Bundle1.4.2 使用文件共享1.4.3 使用Messenger1.4.4 使用AIDL1.4.5 使用ContentProvider1.4.6 使用Socket1.5 Binder连接池1.6 选择合适的IPC方式1.7 其他1.7.1 运行环境1.7.2 过程中可...

2019-11-14 18:15:24 298

原创 Android的IPC机制(上)

Android的IPC机制(上)文章目录Android的IPC机制(上)1.1 IPC概念简介1.2 Android中的多进程模式1.2.1 开启多进程模式1.2.2 多进程模式的运行机制1.3 IPC基础1.3.1 Serializable接口1.3.2 Parcelable接口1.3.3 Serializable接口和Parcelable接口对比1.3.4 Binder1.1 IPC概念简...

2019-11-07 11:46:22 222

原创 Activity的生命周期/启动模式/过滤规则

Activity的生命周期/启动模式/过滤规则文章目录Activity的生命周期/启动模式/过滤规则1.1 Activity 的生命周期1.1.1 典型情况下的生命周期分析1.1.2 异常情况下的生命周期分析1.2 启动模式1.2.1 四种启动模式1.2.2 TaskAffinity1.2.3 指定启动模式1.2.4 Activity的标识1.3 IntentFilter 的过滤规则(inten...

2019-11-04 17:26:02 310 2

原创 Chapter8:关于Android开发中使用Gradle的一些补充

Chapter8:关于Android开发中使用Gradle的一些补充文章目录Chapter8:关于Android开发中使用Gradle的一些补充8.1 持续继承8.2 减少APK文件大小8.3 加速构建8.4 忽略Lint8.5 分割APK8.6 参考资料8.1 持续继承为Android设置Ci的方式很多,广泛使用的有:JenkinsTeamCityTravis CI...

2019-10-30 17:57:58 168

原创 Chapter7:使用Gradle创建任务

Chapter7:使用Gradle创建任务文章目录Chapter7:使用Gradle创建任务7.1了解Groovy7.2 了解任务7.3 操控构建 variants7.4 参考资料7.1了解Groovy变量://字符串可用单引号/双引号;双引号可以插入表达式def name = 'Andy'println(name)//包含一个单独变量的占位符表达式:$前缀def greet...

2019-10-30 17:56:43 117

原创 Chapter6:Gradle帮助自动化测试

Chapter6:Gradle帮助自动化测试文章目录Chapter6:Gradle帮助自动化测试6.1 JUnit4 --单元测试6.2 Espresso --功能测试6.3 测试覆盖率6.4 参考资料6.1 JUnit4 --单元测试添加只用于测试的依赖:(使用Android Studio创建会帮你自动添加)dependencies { testImplementation...

2019-10-29 16:12:18 201

原创 Chapter5:使用Gradle管理多模块构建

Chapter5:使用Gradle管理多模块构建文章目录Chapter5:使用Gradle管理多模块构建5.1 简述多模块构建5.2 在Android Studio中运行模块任务5.3 参考资料5.1 简述多模块构建通常,一个多模块项目有一个根目录,在其子文件夹中包含所有的模块。我们需要在项目的根目录提供一个setting.gradle 文件来告知Gradle项目的结构以及哪个文件夹包...

2019-10-29 10:28:26 272

原创 Chapter4:Android开发中使用Gradle创建构建Variant

Chapter4:创建构建VariantVariant 英文翻译:变体。文章目录Chapter4:创建构建Variant4.1 构建类型4.2 product flavor4.3 构建variant4.4 参考资料4.1 构建类型在Gradle的Android插件中,构建类型用来定义如何构建一个应用或依赖库。可以在 buildTypes代码块 中定义:android { ...

2019-10-28 15:10:54 471

原创 Chapter3:Gradle依赖管理

Chapter3:Gradle依赖管理文章目录Chapter3:Gradle依赖管理3.1 依赖仓库3.2 本地依赖3.3 依赖概念3.4 参考资料3.1 依赖仓库手动依赖需要:找到依赖->下载JAR文件->拷贝到项目->引用,十分复杂。使用依赖仓库可以解决个问题,依赖仓库可以看做是文件的集合。Gradle默认情况下没有为项目定义任何依赖仓库,需要在 reposito...

2019-10-26 15:32:55 1687

原创 Chapter2:使用Fragment灵活地构建UI

Chapter2:使用Fragment灵活地构建UI文章目录Chapter2:使用Fragment灵活地构建UI2.1 选择动态的碎片式布局2.1.1添加可替换布局资源2.1.2 根据屏幕大小管理Fragment布局2.1.3 使用布局别名来消除冗余的布局2.2 设计灵活的Fragment2.2.1 拒绝高耦合2.2.2 抽象Fragments之间的关系2.3 预防使用Fragment时产生的意...

2019-10-25 17:51:01 2646

原创 Chapter2:Android下Gradle的基本自定义构建

Chapter2:Gradle基本自定义构建文章目录Chapter2:Gradle基本自定义构建2.1 Gradle文件结构2.2 任务入门2.3 自定义构建2.4 加快Gradle 编译速度2.5 参考资料2.1 Gradle文件结构settings.gradle:该文件在初始化阶段被执行,定义了哪些模块应该包含在构件内。对于只包含一个Android应用的新项目,文件内容为 inc...

2019-10-24 16:19:08 1358

原创 Chapter1:Gradle基础概念

Chapter1:Gradle基础概念文章目录Chapter1:Gradle基础概念1.1 Gradle 基础概念1.1.1 项目和任务1.1.2 构建生命周期1.1.3 构建配置文件1.1.4 项目结构1.1.5 Gradle Wrapper1.1.6 参考资料1.1 Gradle 基础概念1.1.1 项目和任务项目和任务:每一次构建都包括至少一个项目, 每一个项目又包括一个或多个任...

2019-10-23 19:09:47 1315

原创 设计模式中的一些概念

设计模式中的一些概念文章目录设计模式中的一些概念1.单一职责原则2.开放 - 封闭原则3.依赖倒转原则4.里式替换原则1.单一职责原则对一个类而言,应该仅有一个引起他变化的原因。2.开放 - 封闭原则软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。对于扩展是开放的,对于更改是封闭的。3.依赖倒转原则抽象不应该依赖细节,细节应该依赖抽象。针对接口编程,...

2019-10-23 15:27:41 138

原创 设计模式学习—24访问者模式

访问者模式文章目录访问者模式UML解释说明代码实现参考资料UML解释说明访问者模式:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式适用于数据结构相对稳定的系统,它把数据结构和作用于结构上的操作之间的耦合解开,使操作集合可以相对自由地演化。注意:访问者模式会使新增数据结构变得困难。代码实现Elemen...

2019-10-23 15:19:37 123

原创 设计模式学习—23解释器模式

解释器模式文章目录解释器模式UML解释说明代码实现参考资料UML解释说明解释器模式:给定一个语言,定义它的文法中的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。如果一种特定类型的问题发生频率足够高,那么就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决问题。不足:解释器模式为文法中的每一条规则至少定义...

2019-10-23 11:32:02 120

C1碎片和UI模块化.rar

https://blog.csdn.net/qq_33334951/article/details/102687977配套代码

2019-10-22

空空如也

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

TA关注的人

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