仿华为手机管家的病毒扫描 Android自定义View

*/

private int measureWidth(int measureSpec) {

int result = 0;

int specMode = MeasureSpec.getMode(measureSpec); //获取具体的测量模式(EXACTLY,AT_MOST,UNSPECIFIED)

int specSize = MeasureSpec.getSize(measureSpec); //获取具体的测量大小

if (specMode == MeasureSpec.EXACTLY) { //默认模式

result = measureSpec;

} else {

result = 400; //给一个默认的大小

if (specMode == MeasureSpec.AT_MOST) { //如果是wrap_content

result = Math.min(result, specSize); //取最小的 适合控件大小的

}

}

return result;

}

/*

  • 这个是系统回调方法,是系统调用的,它的方法名已经告诉我们了,这个方法会在这个view的大小发生改变是被系统调用,

  • 我们要记住的就是view

  • 大小变化,这个方法就被执行就可以了。最主要的是,它还在onDraw方法之前调用。

  • */

@Override

protected void onSizeChanged(int w, int h, int oldw, int oldh) {

super.onSizeChanged(w, h, oldw, oldh);

mWidth = getWidth();

mHeight = getHeight();

//扇形外围的矩形

/*

首先需要一个矩形来包裹这个扇形,其次每隔一定的事件,扇形需要旋转(这个可以用重新绘制,然后让扇形的角度+1).

矩形的4边必须是相等的,其次中心必须在圆形的中心,这样一来,

矩形的4条边就很好决定了,矩形左侧的X坐标:mWidth * 0.1,矩形顶部的Y坐标:mWidth * 0.1,

矩形右侧的X坐标:mWidth * 0.9,

矩形底部的Y坐标:mWidth * 0.9

  • 参数:left float:矩形左侧的X坐标 top float:矩形顶部的Y坐标

  • right float:矩形右侧的X坐标 bottom float:矩形底部的Y坐标

  • */

mRectF = new RectF((float) (mWidth * 0.1), (float) (mWidth * 0.1),

(float) (mWidth * 0.9), (float) (mWidth * 0.9));

// 绘制渐变效果

LinearGradient gradient = new LinearGradient((float) (mWidth * 0.3),

(float) (mWidth * 0.9), (float) (mWidth * 0.1),

(float) (mWidth * 0.5),

new int[]{Color.parseColor(“#B1D6FD”), Color.TRANSPARENT},

null, Shader.TileMode.CLAMP);

mArcPaint.setShader(gradient);

// 2个圆的半径

radiusExt = (float) (mWidth * 0.4);

radiusInside = (float) (mWidth * 0.25);

}

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

canvasArc(canvas); //话扇形

canvasArc2(canvas); //画扇形 引导

canvasLines(canvas); //画线

canvasCircle(canvas); //画圆

canvasSche(canvas); //画进度

canvasPercent(canvas); //画 %

}

/**

  • 画 % 符号

  • @param canvas

*/

private void canvasPercent(Canvas canvas) {

//符号的X

float perSignX = mTextX + mTextWidth + 5;

//符号的Y

float perSignY = getHeight() / 2 + 20;

//画字

canvas.drawText(“%”, perSignX, perSignY, mPercentSignPaint);

}

/**

  • 画文字 进度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值