01.自定义View入门——onMeasure,onDraw,自定义属性

1.自定义View简介

自定义View可以认为继承自View,系统没有的效果(ImageView,TextView,Button), extends View , extends ViewGroup

2.onMeasure()

// 获取宽高的模式
int widthMode = MeasureSpec.getMode(widthMeasureSpec); // 获取前两位
int heightMode = MeasureSpec.getMode(heightMeasureSpec);

// 获取宽高的值
int widthSize = MeasureSpec.getSize(widthMeasureSpec); // 获取后面30位
int heightSize = MeasureSpec.getSize(heightMeasureSpec);

MeasureSpec.AT_MOST : 在布局中指定了wrap_content
MeasureSpec.EXACTLY : 在不居中指定了确切的值 100dp match_parent fill_parent
MeasureSpec.UNSPECIFIED : 尽可能的大,很少能用到,ListView , ScrollView 在测量子布局的时候会用UNSPECIFIED
会在自定义ViewGroup的时候会详细讲解

( 1 ) UNSPECIFIED (未指定):父元素不对子元素施加任何束缚, 子元素可以得到任意 想要的大小。

(2) EXACTLY (完全〉 : 父元素决定子元素的确切大小, 子元素将被限定在给定的边界 里而忽略它本身的大小 。

(3) AT MOST C 至多) : 子元素至多达到指定大小的值。

ScrollView + ListView 会显示不全问题,

widthMeasureSpec widthMeasureSpec : 会包含两个信息是一个32位的值,第一个信息是模式:2位 值:30位

3.onDraw()

在这里插入图片描述

4.onTouch() 分析源码

在这里插入图片描述

5.自定义属性

自定义属性就是用来配置的,android:text=“Darren” 是系统的一个自定义属性

5.1 在res下的values下面新建attrs.xml
在这里插入图片描述
5.2在布局中使用
声明命名空间,然后在自己的自定义View中使用
在这里插入图片描述
5.3 在自定义View中获取属性
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunywz

~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值