android 自定义view常用的类,Android自定义view常用类和方法说明

Canvas常用方法

绘制方法

drawLine:画一条线,

drawPath:绘制传入的路径

drawColor:是直接将View显示区域用某个颜色填充满

drawRect drawRoundRect drawBitmap drawText drawCircle drawPoint等等

这些方法都和drawLine一样根据方法名就可以看出绘制的内容,按照需要传入参数即可

其他方法

translate:平移

scale:缩放

rotate:旋转

save:将当前的状态保存

restore:取出原来所保存的状态

这两个方法一般都要结合使用,save在前,restore在后,用来保证在这两个函数之间所做的操作不会对原来在canvas上所画图形产生影响,在中间进行一些旋转等操作,restore后可以继续使用之前的状态,这样中间进行的操作不会影响到或许的操作

Paint画笔常用的方法

setTextSize() :如果要绘制文字,一般需要设置字体大小,不然默认绘制12px,该方法决定两个小写'x'字母的宽度

setTypeface:设置字体类型

setColor(int color):传入一个十六进制的颜色参数,可设置ARGB的颜色

setStyle(int style): 设置画笔风格,有FILL,STROKE,FILL_AND_STROKE三种选择

setStrokeWidth(float width):设置画笔粗细

setTextSkewX:设置文字倾斜

setTextAlign:设置文本对齐方式,左对齐,右对齐,居中

setLetterSpacing:设置字符间距

setStrikeThruText:设置文本删除线

setUnderlineText:设置文本下划线

setAlpha:设置透明度

setAntAlias(boolean):设置是否防锯齿

setDither(boolean):设置是否防抖动。在绘制图片时,如果有超过屏幕能显示最大效果时,这个决定了如何down-sample(降低取样)。如果为false,绘制速度会变快,但绘制的颜色精度会下降(比如8888->565),true则会试图在这个down-sample中 修正这些错误,使得画面较为柔和。

setFlags(int flag):设置画笔的各项参数,与setXXX方法有同样的效果,比如setFlags(ANTI_ALIAS_FLAG) 等效于setAntiAlias(true)

无清除flag的方法,Paint提供reset()方法,重置画笔所有参数

breakText:计算指定长度的字符串

reset:重置画笔

invalidate方法

说明:请求重绘View树,即draw()过程,假如视图发生大小没有变化就不会调用layout()过程,并且只绘制那些“需要重绘的”

视图,即谁(View的话,只绘制该View ;ViewGroup,则绘制整个ViewGroup)请求invalidate()方法,就绘制该视图。

一般引起invalidate()操作的函数如下:

1、直接调用invalidate()方法,请求重新draw(),但只会绘制调用者本身。

2、setSelection()方法 :请求重新draw(),但只会绘制调用者本身。

3、setVisibility()方法 : 当View可视状态在INVISIBLE转换VISIBLE时,会间接调用invalidate()方法,继而绘制该View。

4 、setEnabled()方法 : 请求重新draw(),但不会重新绘制任何视图包括该调用者本身。

requestLayout方法

会导致调用measure()过程 和 layout()过程 。

说明:只是对View树重新布局layout过程包括measure()和layout()过程,而draw不一定被执行,只有当view的位置发生改变才会执行draw方法,如果要使当前view重绘需要调用invalidate

一般引起requestLayout()操作的函数如下:

1、setVisibility()方法:

当View的可视状态在INVISIBLE/ VISIBLE 转换为GONE状态时,会间接调用requestLayout() 和invalidate方法。

同时,由于整个个View树大小发生了变化,会请求measure()过程以及draw()过程,同样地,只绘制需要“重新绘制”的视图。

requestFocus函数说明

说明:请求View树的draw()过程,但只绘制“需要重绘”的视图。

谈到传递限制信息,那就是MeasureSpec类了,该类贯穿于整个measure过程,用来传递父布局对子View尺寸测量的约束信息。简单来说,该类就保存两类数据。

1、子View当前所在父布局的具体尺寸。

2、父布局对子View的限制类型。

那么限制类型又分为三种类型:

1、UNSPECIFIED,不限定。意思就是,子View想要多大,我就可以给你多大,你放心大胆的measure吧,不用管其他的。也不用管我传递给你的尺寸值。(其实Android高版本中推荐,只要是这个模式,尺寸设置为0)

2、EXACTLY,精确的。意思就是,根据我当前的状况,结合你指定的尺寸参数来考虑,你就应该是这个尺寸,具体大小在MeasureSpec的尺寸属性中,自己去查看吧,你也不要管你的content有多大了,就用这个尺寸吧。

3、AT_MOST,最多的。意思就是,根据我当前的情况,结合你指定的尺寸参数来考虑,在不超过我给你限定的尺寸的前提下,你测量一个恰好能包裹你内容的尺寸就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值