安卓自定义控件开发-组合控件(下)

作者:vkvi 来源:ITPOW(原创) 日期:2018-4-10

上一节提到了一下属性,但是并没有具体实现,我们来讲解一下属性的实现。

其他内容不变。

一、在 res\values\ 下新建一个 XML

比如:attrs_field.xml,这个文件就是用来配置我们的自定义控件有哪些属性的。非常遗憾的是,这个文件中的属性名称,不能和其他文件的属性名称重复。比如我们在其他控件中配置了一个 text 的属性,这里就不能再用这个名字了。晕。

format 指定属性值的类型,上面还演示了如何实现 enum 的属性值。

二、在控件类中实现这些属性

用户的属性是通过 attrs 传进来的,需要说明的是,并不是直接从 attrs 中获取属性值,这里还要啰嗦一下,先转换成 TypedArray。如果是枚举,则用 getInteger 取,取出来是 0、1、2……

三、应用

前面两步已经实现了属性,剩下的就是我们应用了,示例:

注意属性的 namespace。如果没有 app 命名空间,则需要在该 XML 的根节点添加 xmlns:app="http://schemas.android.com/apk/res-auto"。

写在最后:

微信小程序的思维是:这个页面的布局、样式、代码、配置都写在一个文件夹。

安卓的思维是:这个文件夹放所有页面的布局,这个文件夹放所有的代码……

微软的思维是:你爱放哪放哪,只要你觉得方便,当然默认我会给你一些规则,你喜欢就遵守,你不喜欢也可以按你的。

其实我最喜欢的是微软的风格,因为既有规则又有自由度;其次是微信小程序,不那么乱;而安卓这种显得太乱了,试问假如我们在开展五个项目,我们会把这五个项目的合同放一起、这五个项目的签到表放一起、这五个项目的发票放在一起吗?显然不是,我们是项目一的合同、签到表、发票放一起,项目二的合同、签到表、发票放一起……

相关阅读

相关文章