- 自定义控件
自定义控件需要注意的主要知识点:
- 重写构造函数,初始化自有属性
共有的操作是将父类的构造方法继承下来(super)
- 只有一个参数的构造函数(给java代码new对象的时候使用的)
- 有两个参数的构造函数(给布局文件调用和设置view的时候使用,第二个参数就是属性集)
- 有三个参数的构造函数(不常用,第三个参数是style类型的参数,这个构造函数是通过两个参数的构造函数调用的)xml文件只会调用两个参数的构造函数
- 重写测量函数onMeasure
view的原理分析
view的本质是屏幕上的某一块矩形区域,并且所有的view都是矩形的
activity viewgroup service之间能不能加载view的区别
activity含有window所以可以加载
viewgroup是因为实现了viewparent和viewmanager这两个接口所以可以添加和加载子view
service之所以叫做没有界面的activity,就是因为本身不包含window
一个view有且只能有一个父view(只有一个父view来确定位置)
- 重写绘制函数onLayout,onDraw,dispatchDraw,视情况选择一个或者多个重写
onlayout定位子视图在本视图中的位置
onDraw绘制视图
canvas(画布)有三类方法
- 划定可绘制的区域
clipPath裁剪一个区域(可以为不规则曲线区域)
clipRect裁剪一个矩形区域
clipRegion裁剪一个组合区域
- 在区域内部绘制图形
drawArc绘制一个扇形或者弧形,第四个参数为true画扇形,false画弧形
drawBitmap绘制图像
drawCircle绘制圆形
drawLine绘制线
drawOval绘制椭圆
drawPath绘制轮廓,不规则曲线
drawPoint绘制点
drawRect绘制矩形
drawRoundRect绘制圆角矩形
drawText绘制文本
- 画布的控制操作
rotate旋转画布
scale缩放画布
translate平移画布
save保存画布状态
restore恢复画布的状态
Paint类是画笔类,提供了一系列设置画笔的方法
- setAntiAlias设置是否开启抗锯齿,主要用来画圆和曲线
- setDither设置防抖动
- setColor设置画笔颜色
- setShadowLayer设置画笔的阴影区域和颜色
- setStyle设置画笔的样式,STROKE是线条,FILL填充
- setStrokeWidth设置画笔线条宽度(粗细)
- 动画
自行定义的动画:
视图动画也叫补间动画(View 动画、Tween动画)
帧动画(Frame 动画、Drawable 动画)
属性动画
系统定义的动画:
触摸反馈动画(Ripple Effect)
揭露动画(Reveal Effect)
转场动画 & 共享元素(Activity 切换动画)
视图状态动画(Animate View State Changes)
矢量图动画(Vector 动画)
约束布局实现的关键帧动画(ConstraintSet 动画)