import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.DashPathEffect;import android.graphics.Paint;import android.util.AttributeSet;import android.view.View;public class CustView extends View{private Paint mPaint; //定义画笔public CustView(Context context, AttributeSet attrs) {super(context, attrs);//初始化画笔initPaint();setLayerType(View.LAYER_TYPE_SOFTWARE, mPaint); //4.0以上关闭硬件加速,否则虚线不显示}private void initPaint() {mPaint = new Paint();mPaint.setAntiAlias(true); //设置抗锯齿的效果mPaint.setStyle(Paint.Style.STROKE); //设置画笔样式为描边mPaint.setStrokeWidth(3); //设置笔刷的粗细度mPaint.setColor(Color.RED); //设置画笔的颜色mPaint.setPathEffect(new DashPathEffect(new float[]{5,5,5,5}, 1)); //设置画笔的路径效果为虚线效果}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);canvas.drawLine(0, 0, 100, 0, mPaint);}}布局文件中引用如下:
<com.test.CustViewandroid:layout_width="100dp"android:layout_height="10dp"android:layout_marginTop="10dp" />说明:在自定义View的代码中,onDraw方法中执行的drawLine方法,全名如下:
去掉Button按钮后,相对位置开始以屏幕左边框计算,如图所示:
还有一点需要注意的是,stopX和stopY的值,不能超过该控件在xml中layout_width和layout_height的值,否则将会以值最小的为基准,超出的长度无效。
2.画一条垂直虚线
与上面代码一致,只需要修改至下面一处:
canvas.drawLine(0, 0, 0, 100, mPaint);
3.画一个实心圆
1).首先设置画笔样式为实心
mPaint.setStyle(Paint.Style.FILL); //设置画笔样式为填充
2).在画布中画圆
canvas.drawCircle(50, 50, 50, mPaint);
同样X和Y的值,不能超过该控件在xml中layout_width和layout_height的值。
4.画一个圆环
同样只需稍微修改一下代码:
@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);canvas.drawCircle(50, 50, 50, mPaint); //画一个外圆mPaint.setColor(Color.WHITE);//重新设置画笔颜色canvas.drawCircle(50, 50, 30, mPaint); //画一个内圆}5.画一个矩形
@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);RectF rect = new RectF(0, 0, 80, 60);canvas.drawRect(rect, mPaint);}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。