Android自定义控件及自定义属性
Android自定义控件及自定义属性
自定义控件
创建自定义控件
自定义一个类,继承View
继承View还是哪个类,取决于你要实现一个什么样的控件
如果你要实现的是一个线性布局的组合控件,就可以继承LinearLayout
如果你要实现的是一个布局复杂的组合控件,就可以继承RelativeLayout
具体根据实际情况
这里我要实现一个Android端的显示验证码的控件,我只继承View
package ……;
import ……
/**
* Created by kongqw on 2015/10/23.
*/
public class CheckView extends View {
……
public CheckView(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
……
}
public void onDraw(Canvas canvas) {
// 画界面
……
}
……
}
类似的,如果你是继承了RelativeLayout,大概可以这样实现
package ……;
import ……
/**
* Created by kongqw on 2015/7/10.
*/
public class KTop extends RelativeLayout {
private ……
……
public KTop(Context context) {
super(context);
initView();
}
public KTop(Context context, AttributeSet attrs) {
super(context, attrs);
initView();
}
public KTop(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView();
}
/**
* 初始化界面
*/
private void initView() {
view = View.inflate(getContext(), R.layout.k_top, this);
// 控件背景
mTitleView = (RelativeLayout) view.findViewById(R.id.title_view);
// 只举一个例子,这里可以获取的布局里的控件
……
}
// 做一些其他操作的处理,例如控件的点击事件处理等
……
}
使用自定义控件
在布局文件中的使用
<kong.qingwei.demo.kqwcheckviewdemo.CheckView
android:id="@+id/checkView"
android:layout_width="wrap_content"
android:layout_height="50dp" />
自定义属性
定义自定义属性
在values文件夹下创建attrs.xml文件
name是自定义属性的名称
format是自定义属性的类型,有如下类型,就不一一介绍了
代码
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="CheckView">
<!-- 随机点数 -->
<attr name="point_num" format="integer" />
<!-- 随机线数 -->
<attr name="point_line" format="integer" />
<!-- 验证码长度 -->
<attr name="text_length" format="integer" />
<!-- 验证码字体大小-->
<attr name="text_size" format="integer" />
<!-- 验证码字体颜色 -->
<attr name="text_color" format="color" />
</declare-styleable>
</resources>
使用自定义属性
在使用自定义控件的xml文件里引入命名空间
xmlns:kongqw="http://schemas.android.com/apk/res-auto"
自定义属性的使用
kongqw:point_num="5"
示例
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:kongqw="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
……
<kong.qingwei.demo.kqwcheckviewdemo.CheckView
android:id="@+id/checkView"
android:layout_width="wrap_content"
android:layout_height="50dp"
kongqw:point_num="5" />
……
</LinearLayout>
效果图
Android自定义控件及自定义属性的更多相关文章
- Android自定义控件之自定义属性
前言: 上篇介绍了自定义控件的基本要求以及绘制的基本原理,本篇文章主要介绍如何给自定义控件自定义一些属性.本篇文章将继续以上篇文章自定义圆形百分比为例进行讲解.有关原理知识请参考Android自定义控 ...
- Android自定义控件之自定义属性(二)
前言: 上篇介绍了自定义控件的基本要求以及绘制的基本原理,本篇文章主要介绍如何给自定义控件自定义一些属性.本篇文章将继续以上篇文章自定义圆形百分比为例进行讲解.有关原理知识请参考Android自定义控 ...
- android 自定义控件,自定义属性设置
做listView的上拉下拉刷新,网上找了个历程.但是有些界面只有上拉刷新,有些界面是下拉刷新.觉得应该在xml里定义一个属性控制上下拉使能. 0.关于自定义控件: 自定义控件设计主要方式有:a) 继 ...
- android自定义控件(三) 自定义属性
书接上回 在xml里建立属性,然后java代码里用typedArray获得这些属性,得到属性后,利用属性做一些事.例:得到xml里的color,赋给paint. 1.在res/values/下新建at ...
- Android自定义控件之自定义ViewGroup实现标签云
前言: 前面几篇讲了自定义控件绘制原理Android自定义控件之基本原理(一),自定义属性Android自定义控件之自定义属性(二),自定义组合控件Android自定义控件之自定义组合控件(三),常言 ...
- Android自定义控件之自定义组合控件
前言: 前两篇介绍了自定义控件的基础原理Android自定义控件之基本原理(一).自定义属性Android自定义控件之自定义属性(二).今天重点介绍一下如何通过自定义组合控件来提高布局的复用,降低开发 ...
- Android自定义控件之基本原理
前言: 在日常的Android开发中会经常和控件打交道,有时Android提供的控件未必能满足业务的需求,这个时候就需要我们实现自定义一些控件,今天先大致了解一下自定义控件的要求和实现的基本原理. 自 ...
- Android自定义控件之自定义组合控件(三)
前言: 前两篇介绍了自定义控件的基础原理Android自定义控件之基本原理(一).自定义属性Android自定义控件之自定义属性(二).今天重点介绍一下如何通过自定义组合控件来提高布局的复用,降低开发 ...
- Android开发技巧——自定义控件之自定义属性
Android开发技巧--自定义控件之自定义属性 掌握自定义控件是很重要的,因为通过自定义控件,能够:解决UI问题,优化布局性能,简化布局代码. 上一篇讲了如何通过xml把几个控件组织起来,并继承某个 ...
随机推荐
- ng-select 下拉的两种方式
<!doctype html><html lang="en"><head> <meta charset="UTF-8" ...
- [LeetCode] Redundant Connection II 冗余的连接之二
In this problem, a rooted tree is a directed graph such that, there is exactly one node (the root) f ...
- win10+ ubuntu12.04双系统安装教程与遇到的问题
1. 准备ISO. 参考:网站http://mirrors.ustc.edu.cn/ubuntu-releases/precise/ 下载 ubuntu-12.04.5-desktop-amd64.i ...
- C语言中关于运算符优先级别
在一一个表达式中可能有多个不同的运算符结合起来,由于运算符的优先级别不一样,可能会形成得到的结果不同. 优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级. 对于相同的优先级, ...
- [ZJOI 2006]超级麻将
Description Input 第一行一个整数N(N<=100),表示玩了N次超级麻将. 接下来N行,每行100个数a1..a100,描述每次玩牌手中各种牌的数量.ai表示数字为i的牌有ai ...
- 几种常用hash算法及原理
计算理论中,没有Hash函数的说法,只有单向函数的说法.所谓的单向函数,是一个复杂的定义,大家可以去看计算理论或者密码学方面的数据.用“人 类”的语言描述单向函数就是:如果某个函数在给定输入的时候,很 ...
- SpringMVC 环境搭建(HelloWorld)
SpringMVC 入门案例 环境 * springMVC * web 构建文件目录结构 修改dispatcher-servlet.xml文件 修改web.xml
- 光电转研发:和计算机没有一点关系的专业怎么去bat类的公司
光电 女 其实编码能力一般般,拿到百度腾讯研发offer. 一来幸运,二来真的想说行动决定了结果.研一没事就出去家教充实自己赚点钱,研二就开始找实习,去了网易,海康威视,百度实习.感觉还是吃了不少苦的 ...
- mysql获取某个表的所有字段名
http://www.netingcn.com/mysql-column-name.html mysql安装成功后可以看到已经存在mysql.information_schema和test这个几个数据 ...
- js error
0x800a0259 - JavaScript 运行时错误: 未知的运行时错误 <p id="navigatorInfo"></p> var txt = & ...