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把几个控件组织起来,并继承某个 ...
随机推荐
- SSO-单点统一登录系统的设计与实现
本文主要基于web类应用展开讨论,提供的是一种通用机制和方法,所以不论何种技术栈都可进行相应的具体实现. 实现目标 可以在相同或跨域环境下完成各应用的统一登录/注销 方案原理 本质上是采用了web应用 ...
- [LeetCode] Array Nesting 数组嵌套
A zero-indexed array A consisting of N different integers is given. The array contains all integers ...
- C语言中关于运算符优先级别
在一一个表达式中可能有多个不同的运算符结合起来,由于运算符的优先级别不一样,可能会形成得到的结果不同. 优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级. 对于相同的优先级, ...
- SpringIOC学习三
基于注解的注入:就是用注解标签的方式替换掉我们xml配置文件里面bean的注册和依赖关系的描述 a:首先回顾IOC(控制反转),进行依赖注入需要做到两件事情: 1:注册类 2:描 ...
- github学习(三)
Git学习(二) 分支学习: 创建新分支dev:git branch dev 切换到dev分支:git checkout dev 可以简写为一句话:git checkout -b dev 可以用命令g ...
- [CEOI 2004]Sweet
Description 题面链接 有 \(n\) 种糖果.第 \(i\) 种糖果有 \(m_i\) 个.取出一些糖果,至少 \(a\) 个,但不超过 \(b\) 个.求方案数. \(1\leq n\l ...
- [Ahoi2005]LANE 航线规划
题目描述 对Samuel星球的探险已经取得了非常巨大的成就,于是科学家们将目光投向了Samuel星球所在的星系——一个巨大的由千百万星球构成的Samuel星系. 星际空间站的Samuel II巨型计算 ...
- Linux 基本概念和操作
我们在使用Linux时,不是直接和系统打交道,而是通过shell的中间程序.在图形界面下为了实现窗口的输入和输出,linux系统为我们提供了终端模拟器Terminal,常见的终端模拟器有 gnome- ...
- ubuntu上的附件-终端和用快捷键ctrl+alt+f1 有啥区别
ctrl +alt +Fn 打开的是模拟终端,简单说来,linux系统一开机会自动打开6个模拟终端,然后自动切换到其中一个(一般来说是切换到图形界面的那个也就是说窗口管理器是在这6个模拟终端中运行的) ...
- 关于html+ashx开发中几个问题的解决方法的感想和总结
1.针对上篇文章中的服务端处理不敢苟同.仍然坚持使用反射,建立BaseHandler.ashx并在默认process方法中写上反射方法以及权限验证方法.针对具体的情况返回对应的值.服务端其他handl ...