[安卓]创建一个视图类

跟其他任何设计良好的类一样,我们自己定义的视图类也封装了系列功能接口,有效地使用CPU和内存等等。要成为一个设计优良的类,我们的视图类还需要具有:

  • 遵从安卓标准;
  • 通过安卓XML布局提供定制的风格属性;
  • 发送可达事件;
  • 与广泛的安卓平台兼容。

安卓框架提供一系列基本类型和XML标签来帮助开发者创建满足以上要求的视图类。下面将详细介绍。

1、子类化视图类:

安卓中所有的视图类都派生于view类。我们的视图类可以直接派生于view类,也可以派生于高层类,譬如Button类。为了让Android Developer Tools能和我们的视图类交互,我们至少要提供一个带Context和AttributeSet对象作为参数的构造函数。layout editor使用这个构造函数来创建和编辑我们的视图类实例。

2、定义我们自己的属性:

为了把内建视图加入到我们的界面之中,我们可以在XML中使用它(譬如layout)并通过内建元素属性控制它们的外观和行为。我们自己的视图类也可以这样使用,甚至还可以使用我们自己的属性,只要我们:

  • 在<declare-styleable>元素中定义我们自己的属性;
  • 在XML layout中指定属性值;
  • 在运行时获取或设置属性值;
  • 把获取到的属性值应用于我们的视图。

如何定义我们自己的属性呢?一般来说,是在res/values/attrs.xml文件中定义,当然看上去这也是一种简单资源,所以可以出现在其它文件中。

文件的位置:
res/values/attrs.xml
文件名可以任选。元素名才是资源ID名。
资源的引用:
XML: @[namespace:]attribute
syntax:
元素:
<resources>
      必选元素,且必须是根元素。没有属性。
<declare-styleable>
      定义洗个styleable系列。包含<attr>元素。
属性:
name
字符串,必选,style的名字.
<item>
      为style定义一个单个特性,必须是<style>元素的子元素。
属性:
name
属性资源,必选,要定义的style特性的名字(一般为系统属性,譬如:android:textColor)。

下面我们将介绍如何定义我们自己的属性以及如何指定属性值。

This section discusses how to define custom attributes and specify their values. The next section deals with retrieving and applying the values at runtime.

To define custom attributes, add <declare-styleable> resources to your project. It's customary to put these resources into a res/values/attrs.xml file. Here's an example of an attrs.xml file:

原文地址:https://www.cnblogs.com/victor-ma/p/4435602.html