【Android】简易自定义控件流程

本文介绍了Android自定义组件的三种实现方式:组合控件、自绘控件和继承控件。重点讲解了自绘控件,特别是自定义组件,通过继承View类并重写构造方法、onDraw()和onMeasure()。详细阐述了如何定义属性并在构造方法中关联,以及使用Paint和canvas绘制TextView的过程。同时解释了onMeasure()方法中MeasureSpec的作用和模式。
摘要由CSDN通过智能技术生成

android自定义组件一般有三种实现方式:
一、组合控件:组合控件,顾名思义就是将一些小的控件组合起来形成一个新的控件,这些小的控件多是系统自带的控件。
二、自绘控件: 何为自绘控件,就是完全用Paint和canvas画出来的,就是在onDraw()方法里面绘画,在onMeasure()方法里面进行测量,如果是容器在onLayout()方法中定位每个子组件。
三、继承控件: 就是继承已有的控件,创建新控件,保留继承的父控件的特性,并且还可以引入新特性。
自绘控件也分两种,自定义组件自定义容器,自定义组件是继承View类,自定义容器时继承ViewGrounp;今天主要分析下自定义组件;还是举个例子来的实际些,假如我们要画一个最简单的TextView,首先想到的就是canvas.drawText()方法,怎么画了?还是得一步一步来:
(1) )写一个MyTextView类继承View,重写三个构造方法,当然还有onDraw()和onMeasure()方法,如下代码:

public class MyTextView extends View{
   
/**
* 文本颜色
*/
private int textColor;
/**
* 字体大小
*/
private float textSize;
/**
* 文本
*/
private String text;

/**
* 绘制时控制
*/
private Paint mPaint;
private Rect mBoud;

public MyTextView(Context context) {
   
this(context, null);
}

public MyTextView(Context context, AttributeSet attrs) {
   
this(context, attrs, 0);
}

public MyTextView(Context context, AttributeSet attrs, int defStyleAttr) {
   
super(context, attrs, defStyleAttr);
}

@Override
protected void onDraw(Canvas canvas) {
   
super.onDraw(canvas);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
   
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}

(2) 接下来就要想既然是TextView,那肯定是有text,color,textSize等属性。在values目录下的attrs.xml中定义好这些属性,以便在xml中引入MyTextView能够直接操作这些值,然后在有三个参数的构造方法里面将这些属性与控件关联,如下:

attrs.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="MyTextView">
<attr name="textColor" format
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值