无题
Android 富文本.md**Android富文本的实现的几种方式**在Android开发过程中,最常见的富文本场景一般都是变色,点击跳转,或者局部变大,而我们实现的方式通常分为两种。一种是Html的方式定义在string中,通过html标签变色,变大,通过占位符填充数据。一般常用于有国际化的需求。另一种是CharSequence的setSpan设置自定义Span。功能更强大,细读也更细,便于精准操作。一般用于没有国际化需求的地方。为什么有国际化相关的要求,是因为一般setSpan的方式都是添加或者根据索引替换对应的文本,如果国际化之后中英马等语言的顺序都变了,自然效果就不同了。当然也可以通过判断语言进行不同的操作。这是后话了。
一,Html的方式实现1.1 占位符的处理先看看string xml中如何处理占位符 %N代表第N个参数,如%3代表的是第三个参数; $是结束符;
1<string name="string_test_1">学号:%1$d ;姓名:%2$s ;成绩:%3$.2f</string>
使用的时候:
1234Strin ...
无题
插件化Android 插件化技术,可以实现功能模块的按需加载和动态更新,其本质是动态加载未安装的 apk 。Android 程序每次更新都要下载一个完整的 apk,而很多时候软件只是更新了一 个小功能而已,这样的话,就显得很麻烦。如果把 android 程序做成主程序+插 件化的形式呢,这样才利于小功能的扩展(比如一般 App 的皮肤样式就可以看 成一个插件)。
主要原理插件化要解决的三个核心问题:类加载、资源加载、组件生命周期管理。
类加载主要利用 Java ClassLoader 的原理,如 Android 的 DexClassLoader,可动态加载的内容包括 apk、dex、jar 等。在Android中,常用的两种类加载器:PathClassLoader 和 DexClassLoader,它们都继承于 BaseDexClassLoader 。
123456789public class PathClassLoader extends BaseDexClassLoader { public PathClassLoader(String dexPath, C ...
无题
Android 新特性Android 5.0 Lollipop棒棒糖
全新的 Material Design 设计风格
支持多种设备
全新的通知中心设计
支持 64 位 ART虚拟机
Overview
设备识别解锁
Ok Google语音指令
Face unlock面部解锁
RecycleView
CardView
Toolbar与Palette
Android 6.0 Marshmallow棉花糖
运行时权限机制
Android Pay
指纹支持
Doze电量管理
App Links
Now on Tap
Android 7.0 Nougat(牛轧糖)
多窗口模式(分屏)
Data Saver
改进的Java 8语言支持
自定义壁纸
快速回复
Daydream VR支持
后台省电
快速设置
Unicode 9支持和全新的emoji表情符号
Google Assistant
无题
Android 沉浸式布局
无题
Android 消息机制 Handler.md前置知识:
ThreadLocal
Android系统是由消息机制驱动的。
在主线程不能做耗时操作,而子线程不能更新UI,所以我们需要把号是工作放到子线程,再把有关UI的操作切换到主线程中执行。这时候我们就需要一个工具。
Handler的作用就是跨线程通信,其主要由四大部分构成:
Handler(消息处理器):负责Message的发送及处理。主要向消息池发送各种消息事件(Handler.sendMessage())和处理相应消息事件(Handler.handleMessage()),按照先进先出执行,内部使用的是单链表的结构。
Message(消息):需要被传递的消息,消息分为硬件产生的消息(如按钮、触摸)和软件生成的消息。
MessageQueen(消息队列):负责消息的存储与管理,负责管理由 Handler发送过来的Message。读取会自动删除消息,单链表维护,插入和删除上有优势。在其next()方法中会无限循环,不断判断是否有消息,有就返回这条消息并移除。
Looper(消息池):负责关联线程以及消息的分发,在该线程下从 Me ...
无题
Android 测试
无题
Android 系统进程启动流程https://developer.android.com/guide/platform?hl=zh-cn#art
Android平台架构Android 是一种基于 Linux 的开放源代码软件栈,为各类设备和机型而创建。下图所示为 Android 平台的主要组件。
Linux内核(Linux kernel)Android 平台的基础是 Linux 内核。例如,Android Runtime (ART) 依靠 Linux 内核来执行底层功能,例如线程和低层内存管理。使用 Linux 内核可让 Android 利用主要安全功能,并且允许设备制造商为著名的内核开发硬件驱动程序。
硬件抽象层 (HAL)硬件抽象层 (HAL) 提供标准界面,向更高级别的 Java API 框架显示设备硬件功能。HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如相机或蓝牙模块。当框架 API 要求访问设备硬件时,Android 系统将为该硬件组件加载库模块。
Android Runtime(ART)对于运行 Android 5.0(API 级别 2 ...
无题
Android 组件化
无题
Android 项目构建过程