继承ViewGroup自定义View:步骤、attrs.xml、TypedArray

时间:2015年12月22日19:01:46

自定义View的实现步骤:

1.写一个自定义控件类,这个类就是你的自定义控件的实现.

2.在res/values目录下建立一个attrs.xml的文件,在这个文件中增加对控件的自定义属性的定义.

3.使用带AttributeSet参数的类的构造函数,并在构造函数中将自定义控件类中变量与attrs.xml中的属性连接起来.

4.在自定义控件类中使用这些已经连接的属性变量.

5.将自定义的控件类定义到布局用的xml文件中去.

6.在界面中生成此自定义控件类对象,就完成了自定义控件的创建和使用了.

注意事项:

1、定义一个attrs.xml,样式为:

     <?xml version="1.0" encoding="utf-8"?>      <resources>

<declare-styleable name="xxx">

<attr name="xxx" format="xxx"/>

<attr name="xxx" format="xxx"/>

<attr name="xxx" format="xxx"/>

</declare-styleable>

      </resources>

format类型:              "reference" //引用           "color" //颜色            "boolean" //布尔值            "dimension" //尺寸值            "float" //浮点值            "integer" //整型值            "string" //字符串            "fraction" //百分数,比如200%  

PS:format中使用reference,例如background属性可能为reference|color,reference代表的是该属性指定的内容而不是该属性是在xml     文件中实现还是在代码中实现。

2、创建自定义的View类:

1)多数情况下自定义的View需要继承View或者其子类。     2)构造方法:多数情况下如果没有自定义的属性可以直接使用参数为Context的构造方法,如果有自定义的参数就是用参数与Context和Attribut          eSet的构造方法。

3)在自定义View类中定义控件的字体大小时注意是float不是int。     
     4)TypedArray ta = context.obtainStyledAttributes(Attribuset attr,StyleableRes int[] res);       将自定义的属性映射打attr中,并获取到TypedArray对象,TypedArray类似于Map使用键值对,键即为       sytleable的name加下划线(_)加定义的属性name:

leftTextColor = ta.getColor(R.styleable.MyTopBar_leftTextColor,0);

5)TypedArray使用完成后需要释放ta.recycle();

6)获取到属性后要为该自定义View中的view添加属性,假设自定义View中含有两个两边对齐的button和一个居中的textview,则首先要生成

button和textview对象( Button btn = new Button(context) | TextView tv = new TextView(context)  );

7)获取到view中子View的对象后,为子view对象添加属性,  例如:btn.setTextColor(leftTextColor);

8)子view获取到属性后,就要想一下如何将该子view放到指定的位置?

利用LayoutParams进行位置的排放,初始化LayoutParams时设置控件的宽和高,利用addRule()添加其他的Rule,添加完成后利用

addView()方法,将控件添加到View中。

9)在xml引用自己创建的控件时,需要对xmlns进行配置:xmlns:custom="http://schemas.android.com/apk/res-auto";

10)在xml中为控件定义一个id:android:id="@+id/xxx",然后在MainActivity中获得相应的对象。

11)可以在自定义的控件中设置回调用于对自定义控件的事件处理,也可以设置其中组件的可见性。

来自为知笔记(Wiz)

时间: 2024-11-05 06:03:38

继承ViewGroup自定义View:步骤、attrs.xml、TypedArray的相关文章

[原] Android 自定义View步骤

例子如下:Android 自定义View 密码框 例子 1 良好的自定义View 易用,标准,开放. 一个设计良好的自定义view和其他设计良好的类很像.封装了某个具有易用性接口的功能组合,这些功能能够有效地使用CPU和内存,并且十分开放的.但是,除了开始一个设计良好的类之外,一个自定义view应该: l 符合安卓标准 l 提供能够在Android XML布局中工作的自定义样式属性 l 发送可访问的事件 l 与多个Android平台兼容. Android框架提供了一套基本的类和XML标签来帮您创

通过自定义view替代layout.xml表示activity的界面

创建了一个新项目之后, 在src内新建一个类public class 类名 extends View 1 package com.example.activity_view; 2 3 import android.content.Context; 4 import android.graphics.Canvas; 5 import android.graphics.Color; 6 import android.graphics.Paint; 7 import android.view.View

自定义View步骤学习笔记

用途 : 一个View内部的子控件比较多的时候可以自定义一个View,把它内部的子控件屏蔽起来(就像苹果的导航栏上面的UIBarButton,你是通过BarButtonitem来修改显示的内容) 1.重写 initWithFrame 和 awakeFromNib(一般两个都要写),然后在写一个初始化的方法,在初始化方法中添加子控件和初始化子控件(当然也可以使用懒加载的方式来初始化子控件) 2.在layoutSubviews方法中调整子控件的位置和尺寸 3.提供一个模型属性,让外界来设置显示的内容

自定义View(二)——入门继承View的实例

1.实例建造过程 1)BaseView(抽象类) package com.myview.v3; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.RectF; import android.util.AttributeSet; import android.view.View; /** * Created by

【Android应用开发技术:用户界面】自定义View类设计

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells Github:https://github.com/AllenWells 设计良好的类总是相似的,它使用一个易用的接口来封装一个特定的功能,它能有效的使用CPU和内存,我们在设计View类时,通常会考虑以下因素: 遵循Android标准规则 提供自定义的风格属性值并能够被Android XML Layout所识别. 发出可访问的事件 能够兼容And

android自定义view(一),打造绚丽的验证码

前言:我相信信念的力量,信念可以支撑起一个人,一个名族,一个国家.正如"人没有梦想和咸鱼有什么区别"一样,我有信念,有理想,所以我正在努力向着梦想前进~. 自定义view,如果是我,我首先要看到自定义view的效果图,然后再想想怎么实现这种效果或功能,所以先贴上自定义验证码控件的效果图: 怎么样,这种验证码是不是很常见呢,下面我们就自己动手实现这种效果,自己动手,丰衣足食,哈哈~ 一. 自定义view的步骤 自定义view一直被认为android进阶通向高手的必经之路,其实自定义vie

Android 自定义 View 详解

View 的绘制系列文章: Android View 绘制流程之 DecorView 与 ViewRootImpl Android View 的绘制流程之 Measure 过程详解 (一) Android View 的绘制流程之 Layout 和 Draw 过程详解 (二) Android View 的事件分发原理解析 对于 Android 开发者来说,原生控件往往无法满足要求,需要开发者自定义一些控件,因此,需要去了解自定义 view 的实现原理.这样即使碰到需要自定义控件的时候,也可以游刃有

(转)[原] Android 自定义View 密码框 例子

遵从准则 暴露您view中所有影响可见外观的属性或者行为. 通过XML添加和设置样式 通过元素的属性来控制其外观和行为,支持和重要事件交流的事件监听器 详细步骤见:Android 自定义View步骤 样子 支持的样式 可以通过XML定义影响外边和行为的属性如下 边框圆角值,边框颜色,分割线颜色,边框宽度,密码长度,密码大小,密码颜色 <declare-styleable name="PasswordInputView"> <attr name="border

自定义View控件(手写,xib)须知

 1. 目的 :提高代码的复用性,屏蔽内部的实现细节 2. 步骤 :    * 1> 自定义一个类继承于UIView   * 2> 在initWithFrame方法中添加子控件   * 3> 在layoutSubviews中设置子控件的位置   * 4> 提供一个属性保存外界传入的数据(模型对象), 重写setter方法设置子控件的数据 3. 类工厂方法(便利构造器):   * 按照苹果的风格和规范, 一般情况一个用于创建对象的对象方法会对应一个类方法   * 可以通过类工厂方法,