自定义View学习笔记1

编程入门 行业动态 更新时间:2024-10-06 23:21:10

<a href=https://www.elefans.com/category/jswz/34/1771438.html style=自定义View学习笔记1"/>

自定义View学习笔记1

一:坐标

1. View的坐标系:                                                                                  2. motionEvent中的方法

                                           

二:角度和弧度

为了准确描述一个角的大小,引入了角度和弧度(角度和弧度的进制是不一样的,角度60进制、弧度是10进制)

定义:

1. 角度- 俩条射线从圆心射出,形成一个夹角和夹角正对的一段弧,当这段弧长正好=圆周长1/360,俩条射线的夹角的大小为1度

2. 弧度- 俩条射线从圆心射出,形成一个夹角和夹角正对的一段弧,当这段弧长=圆的半径,俩条射线的夹角大小为1弧度

换算:

圆一周对应的角度deg是360度,对应的弧度rad换算2π弧度==>

    rad = deg x π / 180            deg = rad x180/π

注意:

屏幕默认坐标系下,角度的增大方向是顺时针(而在数学中角度的增大是逆时针)

三:颜色

支持的颜色(字母 - 通道类型、 数值 - 该类型用多少位二进制描述):

ARGB8888(四通道高精度32位)

ARGB4444(四通道低精度16位)

RGB565(屏幕默认模式16位)

Alpha8(仅有透明通道8位)

说明(RGB全取最小值:黑色、 RGB全取最大值:白色):

A-Alpha:透明度(0 - 255   透明 - 不透明)

R-Red:红色(0 - 255    无色 - 红色)

G-Green:绿色(0 - 255    无色 - 绿色)

B-Blue:蓝色(0 - 255    无色 - 蓝色)

创建和使用:

int color = Color.GRAY;//灰色

int color = Color.argb(127,255,0,0);//半透明红色

取色工具介绍:

1. ColorPix下载地址(针对win)/

2. Picpick下载地址(针对Win)/zh/

3. Sip下载地址(针对Mac)

说明:

因为显示屏是无法透明的,所以最终显示在屏幕上的颜色可以认为没有Alpha通道

Alpha通道主要是用来俩个图像混合的时候生效

混合模式计算:

    (RGB通道)最终颜色 = 绘制颜色+(1-绘制颜色透明度) x  Canvas上的原有颜色

四: 绘制流程

说明:

1. 自定义ViewGroup:

    利用现有组件根据特定布局方式来组成新的组件(大多继承ViewGroup和Layout,包含有子View)

2. 自定义View:

     自己实现需要的功能,一般继承自View、SurfaceView或其他的View,不包含子View

     注: 2.1 自定义View在大多数情况下都有替代方案,利用图片或组合动画来实现

             2.2 使用图片和组合动画可能会面临内存耗费过大,制作麻烦等问题    

函数说明:

1. 构造函数:初始化一些内容和获取自定义属性(自定义属性参数:AttributeSet)

2. 测量View大小(onMeasure):

    参数widthMeasureSpec和heightMeasureSpec:宽高和各自方向上对应的测量模式来合成的一个值

    View的大小不仅由自身决定,同时也会受到父控件影响,所以为了适应各种情况,一般会自己进行测量,在该方法中可以取到宽高的确切数值和测量模式(MeasureSpec     getSize/getMode)

    测量模式在MeasureSpec中:

          UNSPECIFIED(0)--- 默认值,父控件没有给子View任何限制,子View可以设置为任意大小

           EXACTLY((1) --- 父控件确切指定了子View的大小

           AT_MOST(2) --- 子View具体大小没有尺寸限制,但是存在上限,上限一般为父View大小

    对于View宽高进行修改:使用setMeasuredDimension(widthsize,heightsize)

3. 确定View大小(onSizeChanged):

    视图大小发生改变时调用

4. 确定子View的布局位置(onLayout):

     在自定义ViewGroup中会使用到,使用子view的layout(了,他,人,b)设置子View的位置

5. 绘制内容(onDraw):

6. 自定义完之后会暴露一席接口对View进行监听或者获取状态等其他属性

五:Canvas绘制图形

1. 常用操作(通过canvas对象调用)

     1.1 绘制颜色(使用单一颜色填充整个画布):drawColor、drawRGB、drawARGB

           canvas.drawColor(Color.BLUE); //绘制蓝色

     1.2 绘制形状(点、线、矩形、圆角矩形、椭圆、圆、圆弧):drawPoint、drawPoints、dra

更多推荐

自定义View学习笔记1

本文发布于:2024-03-23 20:46:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1742634.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:自定义   学习笔记   View

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!