Android 基础库 - 属性系统 - 属性定义

属性由属性键(Key)定义,由属性值(Value)表示。属性键与属性值一一对应,但是属性值可能是空的(null)。

属性键

项目

边界

说明

基本定义

 

在属性键中定义

容器类

属性所属的类

定义该属性的类

名称

属性的名称

同一个属性集内,每个属性名称唯一

类型

属性的值的类型

 

标题

属性的显示标题

 

描述

属性的描述信息

 

访问控制

 

对应不同的属性键派生类

只读取

该属性是只读的

外部类可以读取,派生类可以设置

可设置

该属性是可写的

外部类可以读取、设置

可配置

该属性是可配置的

外部类可以读取、设置,可以通过字符串名称设置(配置写入)

序列化

Parcel

序列化容器类和名称

自定义项目

可由派生类自定义

 

字符串化

值 -> 字符串

字符串 -> 值

自定义方式(按次序):

  1. 属性集派生类
  2. 属性键派生类(一般匿名派生)
  3. 属性键构造传入(适用可选列表、显示标题)
  4. 默认根据类型处理

可选值列表

E[]

String[]

值标题

可传入可选值的标题

String[]

变化通知

 

 

 

 

 

属性值

针对属性值的处理,主要与值的类型有关:

项目

边界

说明

属性值封装

 

为了通过AIDL传递

外部类

插件类加载器

附带外部插件ClassLoader信息(插件包名)

Parcel化

 

特殊类型Parcel的扩展处理

Parcelable

属性集

其他

需要找到定义了CREATOR的基类,作为序列化的类型;属性集可以直接找到CREATOR的基类

Parcelable[]

属性集

其他

同上,另外反序列化需要转换数组类型

Object[]

 

反序列化需要转换数组类型

Serializable

 

修复Android 4.4及以下不支持外部类

Class

 

类名称

ClassLoader

 

插件包名

字符串化

 

与字符串的转换

null

 

<null>

基本型

int

Integer.valueOf

Enum

 

Enum.valueOf

基本型数组

int[]等

Arrays.toString

[a,b,c]

Object数组

深度化

Arrays.deepToString

[a,b,c]

泛型数组

 

 

泛型Map

 

 

其他

 

String.valueOf

E.valueOf(String)

new E(String)

可选值

Boolean

Enum

 

猜你喜欢

转载自blog.csdn.net/luansxx/article/details/82852204