[安卓]创建一个视图类

跟其他任何设计良好的类一样,我们自己定义的视图类也封装了系列功能接口,有效地使用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:

时间: 2024-10-21 14:25:40

[安卓]创建一个视图类的相关文章

创建一个羊类,使用static实现数羊,记录一共创建了几只羊

public class Test { public static void main(String[] args) { // TODO Auto-generated method stub //创建一个羊类,使用static实现数羊,记录一共创建了几只羊. Sheep.getCount(); Sheep s1=new Sheep("喜羊羊"); Sheep.getCount(); Sheep s2=new Sheep("懒羊羊"); Sheep.getCount(

创建一个三角形类并且通过成员函数计算三角形的周长和面积《1》

首先定义一个三角形类 class Triangle//三角形类 { public: double getA(void);//得到a的值 double getB(void);//得到b的值 double getC(void);//得到c的值 void setA(double x);//设置a的值 void setB(double y);//设置b的值 void setC(double z);//设置c的值 bool isTriangle(void);//取三边的值 double Perimeter

创建一个三角形类并且使用成员函数计算三角形的周长和面积《2》

首先创建一个三角形类 class Triangle//三角形类 { public: void Setabc(double x, double y, double z);//置三边的值,注意要能成三角形 void Getabc(double *x, double *y, double *z);//取三边的值 double Perimeter(void);//计算三角形的周长 double Area(void);//计算并返回三角形的面积 private: double a, b, c; //三边为

创建一个Fraction类(分数)实现分数的加减乘除,比较大小、约分等方法。要求:为类添加属性

//在.h文件里 {     NSInteger _numerator;     //分子     NSInteger _denominator;   //分母     }   //属性 @property (nonatomic) NSInteger numerator; @property (nonatomic) NSInteger denominator; //初始化   - (id)initwithNumerator:(NSInteger)numerator denominator:(NS

在存放源程序的文件夹中建立一个子文件夹 myPackage。例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage)。在 myPackage 包中创建一个YMD类,该类具有计算今年的年份、可以输出一个带有年月日的字符串的功能。设计程序SY31.java,给定某人姓名和出生日期,计算该人年龄,并输出该人姓名、年龄、出生日期。程序使用YM

题目补充: 在存放源程序的文件夹中建立一个子文件夹 myPackage.例如,在"D:\java"文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage).在 myPackage 包中创建一个YMD类,该类具有计算今年的年份.可以输出一个带有年月日的字符串的功能.设计程序SY31.java,给定某人姓名和出生日期,计算该人年龄,并输出该人姓名.年龄.出生日期.程序使用YMD的方法来计算年龄. 主要考包的运用 用到java.util.Calendar

创建一个银行类

# -*- conding:utf-8 -*- ''' 类: 创建一个银行类 属性: 一个属于银行的类属性 用来存储所有银行的开户信息,包含卡号.密码.用户名.余额 (外界不能随意访问和修改.开户时要进行卡号验证,查看卡号是否已经存在) 每个对象拥有 卡号,密码,用户名,余额 (外界不能随意访问和修改.) 方法:银行类拥有 查看本银行的开户总数 查看所有用户的个人信息(包含卡号,密码,用户名,余额) 每个对象拥有 实例化对象的时候传入相关参数 初始化对象及类属性 取钱(需要卡号和密码验证) 通过

004_linux驱动之_class_create创建一个设备类

(一)解析:class_create函数和class_destroy函数 创建一个类         和        删除一个类. (二)class_create函数原型 struct class *class_create(struct module *owner, const char *name): 1. 查看函数注释: / * * 创建一个struct类结构 * @owner:指向"拥有"这个struct类的模块的指针 * @name:指向该类名称的字符串的指针. * *这是

创建一个圆类Circle的对象,分别设置圆的半径计算并分别显示圆半径、圆面积、圆周长。

编写一个圆类Circle,该类拥有: ①一个成员变量 Radius(私有,浮点型): // 存放圆的半径: ②两个构造方法 Circle( ) // 将半径设为0 Circle(double r ) //创建Circle对象时将半径初始化为r ③ 三个成员方法 double getArea( ) //计算圆的面积 double getPerimeter( ) //计算圆的周长 void show( ) //将圆的半径.周长.面积输出到屏幕 编写应用程序,创建类的对象,分别设置圆的半径计算并分别显

怎么创建一个视图?

三张表连接·· A表的a字段 对应 B表的b字段 ,B表的b1字段对应C 表的c字段现在 建立 一个视图,可以同时 看到三张表的 所有信息·~ 那位高手 帮帮我啊·~~~ create or replace view v_name as select t1.*,t2.*,t3.* from A表 t1, B表 t2, C表 t3 where t1.a=t2.b and t2.b1=t3.c