您的位置:首页 > 移动开发 > Android开发

Android 自定义 斜线进度框 ,雨点式背景

2015-10-22 15:29 661 查看


import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;

import java.util.Random;

/**
* 斜线进度条
* author : stone
* email  : aa86799@163.com
* time   : 15/10/22 11 11
*/
public class ObliqueProgressbar extends View {

private Paint mPaint;
private float mProgress;

public ObliqueProgressbar(Context context) {
this(context, null);
}

public ObliqueProgressbar(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}

public ObliqueProgressbar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);

mPaint = new Paint();
mPaint.setAntiAlias(true);
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

if (mProgress == 0) return;

//碎片雨
mPaint.setColor(Color.parseColor("#a96ecb"));
mPaint.setStrokeWidth(3);
Random random = new Random();
int sx, sy;
for (int i = 0; i < 200; i++) {
sx = random.nextInt(getWidth() + 10);
sy = random.nextInt(getHeight() + 10);
//            canvas.drawLine(sx, sy, sx+random.nextInt(5), sy+random.nextInt(5), mPaint);
canvas.drawCircle(sx, sy, random.nextInt(5) + 1, mPaint);
}

//进度
mPaint.setColor(Color.parseColor("#6AFFFFFF"));
mPaint.setStrokeWidth(15);
float x = mProgress * getWidth();
for (int i = 0; i < x; i += 30) {
canvas.drawLine(i - 30, -10, i + 30, getHeight() + 10, mPaint);
}

}

public void setProgress(float progress) {
this.mProgress = progress;
invalidate();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: