自定义View简单小例子

在开发过程中,尽管Android系统提供了非常多的控件给我们使用,但是还是不能满足我们人类的需求,感觉我们确实在贪婪了,呵呵!这个时候,我们可能就要用到自定义控件,以及自定义属性,应该怎么操作呢?

一般要按照以下几个步骤来操作:

1,继承View或其它控件,重写构造函数onDraw,onMeasure,onTouch等函数。

2,自定义属性的话,就需要在values下建立attrs.xml,在其中定义你需要的属性,详细的属性类型可以参考文章http://www.jb51.net/article/32172.htm

3,使用到自定义View的xml布局文件中需要加入xmlns:前缀="http://schemas.android.com/apk/res/自定义View所在包路径",如我用到的前缀是xmlns:app。使用自定义属性的时候,也是使用前缀:属性名。

下面按照步骤来个小例子:

----------定义View,重写onDraw()---------------

public class DefaultView extends View {

/**画笔paint,用与设置抽绘制图案的颜色及样式*/

private Paint mPaint;

/**构造方法*/

public DefaultView(Context context) {

super(context);

}

public DefaultView(Context context, AttributeSet attrs) {

super(context, attrs);

mPaint = new Paint();

/**TypedArray用来存放由context.obtainStyledAttributes获得的属性的数组

*使用完成后,务必要调用recycle方法

*/

TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.DefaultView);

/**取得颜色值,否则用默认值*/

int textColor = array.getColor(R.styleable.DefaultView_textColor, 0XFF00FF00);

/**取得文字大小,否则用默认值*/

float textSize = array.getDimension(R.styleable.DefaultView_textSize, 36);

mPaint.setColor(textColor);

mPaint.setTextSize(textSize);

/**如果不调用recycle()方法,则这次的设定会对下次的使用造成影响*/

array.recycle();

}

/**重写onDraw()方法,要绘制的图案在这里实现*/

public void onDraw(Canvas canvas) {

super.onDraw(canvas);

/**画笔颜色*/

mPaint.setColor(Color.RED);

/**画笔样式*/

mPaint.setStyle(Style.FILL);

/**画笔宽度*/

mPaint.setStrokeWidth(2);

/**画矩形*/

canvas.drawRect(10, 10, 100, 100, mPaint);

mPaint.setColor(Color.BLUE);

/**设置画笔抗钜齿*/

mPaint.setAntiAlias(true);

/**绘制文字*/

canvas.drawText("画的是文字", 20, 120, mPaint);

mPaint.setColor(Color.GREEN);

/**画圆*/

canvas.drawCircle(100f, 100f, 50f, mPaint);

}

}

-------在res/values文件夹下建立attrs.xml文件,自定义我们View的属性------------------------

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

<resources>

<declare-styleable name="DefaultView">

<attr name="textColor" format="color" />

<attr name="textSize" format="dimension" />

</declare-styleable>

</resources>

----------在我们的布局文件中使用----------

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

xmlns:app="http://schemas.android.com/apk/res/com.ldm.map"<!--要加上这句话-->

android:layout_width="match_parent"

android:layout_height="match_parent" >

<com.ldm.map.DefaultView

android:layout_width="match_parent"

android:layout_height="wrap_content"

app:textColor="#f0f0f0"<!--前缀是app:-->

app:textSize="16sp" />

</LinearLayout>

时间: 2024-10-04 17:41:15

自定义View简单小例子的相关文章

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

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

ASP.NET Cookie对象到底是毛啊?(简单小例子)

记得刚接触asp.net的时候,就被几个概念搞的头痛不已,比如Request,Response,Session和Cookie.然后还各种在搜索引擎搜,各种问同事的,但是结果就是自己还是很懵的节奏. 那cookie到底是毛啊?下面是我最不喜欢的一种解释方式(官方定义吧应该叫,我这种智商根本读不懂嘛~) Cookie对象也称缓存对象,该对象用于保存客户端浏览器请求的服务器页面,也可用它存放非敏感性的用户信息. 以前根本读不懂啊,现在其实也懵懵的. 还是用例子能把这个概念搞明白 1.做一个用户登录的界

javascript 面向对象写法的简单小例子,方面以后参考

面向对象写法的简单小例子,也即是一个小模板,方便以后拿来参考,如果有误,请各位大神多多指点.思想:主要给#box添加颜色和添加内容,一个方法是添加颜色,另一个方法是添加内容,然后编写的面向对象写法. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <st

php+jquery+ajax+json简单小例子

直接贴代码: Php代码: <html> <title>php+jquery+ajax+json简单小例子</title> <?php header("Content-Type:text/html;charset=utf-8"); ?> <head> <script type="text/javascript" src="http://code.jquery.com/jquery.min.j

Android零基础入门第24节:自定义View简单使用

当我们开发中遇到Android原生的组件无法满足需求时,这时候就应该自定义View来满足这些特殊的组件需求. 一.概述 很多初入Android开发的程序员,对于Android自定义View可能比较恐惧,但这又是高手进阶的必经之路,这里先不做过多学习,只是简单了解.关于高阶的内容会在后续课程陆续进行学习,欢迎关注分享达人秀(ShareExpert)获取第一手教程. 如果说要按类型来划分的话,自定义View的实现方式大概可以分为三种:自绘控件.组合控件.以及继承控件. 自绘控件:内容都是开发者自己绘

详细解读SearchView(一)—— 简单小例子

这次开的是一个讲解SearchView的栏目,第一篇主要是给一个小例子,让大家对这个搜索视图有一个了解,之后再分布细化来说. 目标: 我们先来定个目标,我们通过搜索框来输入要搜索的联系人名字,输入的时候下面的listview就展现出候选的人. 思路: 1.要得到联系人数据,就需要有访问联系人的权限 2.必须通过ContentResolver来得到操作联系人名单的指针 3.每次输入一个字的时候就应该触发一次搜索,并且能将搜索的结果展示出来 4.既然要进行搜索,那么就要用到SQL语句 实现: 1.

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

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

Android自定义View 简单实现多图片选择控件

前言 相信很多朋友在开发中都会遇到图片上传的情况,尤其是多图上传,最 经典的莫过于微信的图片选择了.所有很多情况下会使用到多图选择. 所以就有了这篇文章,今天抽点时间写了个控件. 支持自定义选择图片的样式 支持设置图片选择数量 支持图片预览,删除 支持图片拍照 先来看看效果 实现分析 假如不定义控件,我们要实现这样一个功能,无非是写个GridView在item点击的时候去显示图片进行选择,在返回界面的时候进行GridView的数据刷新.我们把这些逻辑写在我们自定义的GridView中,就成了一个

关于ExpandableListView用法的一个简单小例子

喜欢显示好友QQ那样的列表,可以展开,可以收起,在android中,以往用的比较多的是listview,虽然可以实现列表的展示,但在某些情况下,我们还是希望用到可以分组并实现收缩的列表,那就要用到android的ExpandableListView,今天研究了一下这个的用法,也参考了很多资料动手写了一个小demo,实现了基本的功能,但界面优化方面做得还不够好,有待改进,素材采用了Q版三国杀武将的图片,很有爱哈哈,下面直接上效果图以及源代码~!                     main.x