一、构造函数
共有4个,自定义View必须重写至少一个构造函数
public class MyView extends View {
/**
* 在java代码里new的时候会用到
* @param context
*/
public MyView(Context context) {
super(context);
}
/**
* 在xml布局文件中使用时自动调用
* @param context
* @param attrs
*/
public MyView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
/**
* 不会自动调用,如果有默认style时,在第二个构造函数中调用
* @param context
* @param attrs
* @param defStyleAttr
*/
public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
/**
* 只有在API版本>21时才会用到
* 不会自动调用,如果有默认style时,在第二个构造函数中调用
* @param context
* @param attrs
* @param defStyleAttr
* @param defStyleRes
*/
public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
}
二、常用控件
1、Paint类——画笔
Paint类代表画笔,用来描述图形的颜色和风格,如线宽,颜色,透明度,和填充效果等信息,使用Paint时,需要先创建该类的对象,这可以通过该类提供的构造方法来实现。通常情况下,只需要使用无参数的构造方法来创建一个使用默认设置的Paint对象:
Paint paint = new Paint();
常用方法 | 方法说明 |
---|---|
setARGB(int a, int r, int g, int b) | 用于设置颜色,各参数值均为0~255之间的整数 |
setColor(int color) | 用于设置颜色 |
setAlpha(int a) | 用于设置透明度,值为0~255之间的整数 |
setAntiAlias(boolean aa) | 用于指定是否使用抗锯齿功能,如果使用会使绘图速度变慢 |
setDither(boolean dither) | 用于指定是否使用图像抖动处理,如果使用会使图像颜色更加平滑和饱满,更加清晰 |
setPathEffect(PathEffect effect) | 用于设置绘制路径时的路径效果,例如点画线 |
setShader(Shader shader) | 用于设置渐变,可以使用LinearGradient(线性渐变)、RadialGradient(径向渐变)或者SweepGradient(角度渐变)。 TileMode.REPEAT:重复的 TileMode.CLAMP:固定的–渐变过去 TileMode.MIRROR:镜像的,对称的 |
setStrokeCap(Cap cap) | 用于当画笔的填充样式为STROKE或FILL_AND_STROKE时,设置笔刷的图形样式。 参数值可以是Cap.BUTT、Cap.ROUND或Cap.SQUARE。 主要体现在线的端点上 |
setStrokeJoin(Join join) | 用于设置画笔转弯处的连接风格 参数值为Join.BEVEL、Join.MITER或Join.ROUND |
setStrokeWidth(float width) | 用于设置笔触的宽度 |
setStyle(Style style) | 用于设置填充风格 参数值为Style.FILL、Style.FILL_AND_STROKE或Style.STROKE |
setTextAlign(Align align) | 设置字文本的排列方式 |
setTextSize(float textSize) | 用于设置字体大小 |
setFakeBoldText(boolean fakeBoldText) | 用于设置是否为粗体文字 |
2、Canvas类——画布
Android提供了强大的二维图形库,比较常用的是绘制几何图形,绘制文本,路径和图片等
比较常见的图形包括点,线,弧,圆形,矩形,在Android中,Canvas类提供了丰富的绘制几何图形的方法,通过这些方法可以绘制出各种几何图形
常用方法 | 方法说明 |
---|---|
drawArc( |