圆形进度条

提供第二种旋转画布的实现方式

================================

把我用到的图片传上来


==============================

RoundProgressBar

效果图:



/**
 * Created by wzl on 2016/7/6.
 */
public class RoundProgressBar extends View {
    private Paint paint;
    //圆环宽度
    private int offset = 0;
    private int max = 100;
    private int progress = 0;
    //圆点半径
    private int pointRadius = 0;
    //进度条末尾处显示的图片
    private Bitmap bitmap;
    //进度条中间显示的文字
    private String content;

    public RoundProgressBar(Context context) {
        super(context);
        init();
    }

    public RoundProgressBar(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public RoundProgressBar(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public RoundProgressBar(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        init();
    }

    private void init() {
        paint = new Paint();
        paint.setAntiAlias(true);
        paint.setStyle(Paint.Style.STROKE);
        offset = AppUtils.dip2px(5);
        paint.setDither(true);
        paint.setStrokeCap(Paint.Cap.ROUND);
        bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.share_progress_point);
        pointRadius = Math.max(bitmap.getWidth(), bitmap.getHeight()) / 2;
    }

    public void setProgress(int process) {
        if (process >= max) {
            process = max;
        }
        this.progress = process;
        invalidate();
    }

    public void setMax(int max) {
        if (max <= 0) {
            max = 100;
        }
        this.max = max;
        invalidate();
    }

    public void setText(String text) {
        content = text;
        invalidate();
    }

    //padding无效,如用到padding,需自行计算
    @Override
    protected void onDraw(Canvas canvas) {
        //中心点坐标
        int centerX = getWidth() / 2;
        int centerY = getHeight() / 2;
        //中间文字
        if (!TextUtils.isEmpty(content)) {
            paint.setTextSize(AppUtils.dip2px(12));
            paint.setStrokeWidth(AppUtils.dip2px(0.5f));
            paint.setStyle(Paint.Style.FILL);
            float textLength = paint.measureText(content);
            canvas.drawText(content, centerX - textLength / 2, centerY, paint);
        }
        //取最小半径
        int radius = Math.min(centerX, centerY) - offset / 2;
        paint.setStyle(Paint.Style.STROKE);
        paint.setColor(getResources().getColor(R.color.default_background));
        paint.setStrokeWidth(offset);
        //画外圈圆
        canvas.drawCircle(centerX, centerY, radius, paint);
        radius -= offset;
        paint.setColor(getResources().getColor(R.color.divider_color));
        //画内圈圆
        canvas.drawCircle(centerX, centerY, radius, paint);
        paint.setColor(getResources().getColor(R.color.title_color));
        RectF rect = new RectF(centerX - radius, centerY - radius, centerX + radius, centerY + radius);
        int corner = 360 * progress / max;
        canvas.drawArc(rect, -90, corner, false, paint);
        Matrix matrix = new Matrix();
        matrix.postTranslate(centerX - pointRadius, offset * 3 / 2 - pointRadius);
        matrix.postRotate(corner, centerX, centerY);
        canvas.drawBitmap(bitmap, matrix, paint);
    }
//    提供第二种旋转画布的实现方式
//    @Override
//    protected void onDraw(Canvas canvas) {
//        //中心点坐标
//        int centerX = getWidth() / 2;
//        int centerY = getHeight() / 2;
//        中间文字
//        if (!TextUtils.isEmpty(content)) {
//            paint.setTextSize(AppUtils.dip2px(12));
//            paint.setStrokeWidth(AppUtils.dip2px(0.5f));
//            paint.setStyle(Paint.Style.FILL);
//            float textLength = paint.measureText(content);
//            canvas.drawText(content, centerX - textLength / 2, centerY, paint);
//        }
//        //取最小半径
//        int radius = Math.min(centerX, centerY) - offset / 2;
//        paint.setStyle(Paint.Style.STROKE);
//        paint.setColor(getResources().getColor(R.color.default_background));
//        paint.setStrokeWidth(offset);
//        //画外圈圆
//        canvas.drawCircle(centerX, centerY, radius, paint);
//        radius -= offset;
//        paint.setColor(getResources().getColor(R.color.divider_color));
//        //画内圈圆
//        canvas.drawCircle(centerX, centerY, radius, paint);
//        paint.setColor(getResources().getColor(R.color.title_color));
//        RectF rect = new RectF(centerX - radius, centerY - radius, centerX + radius, centerY + radius);
//        int corner = 360 * progress / max;
//        //旋转画布
//        canvas.rotate(corner, centerX, centerY);
//        canvas.drawArc(rect, -90 - corner, corner, false, paint);
//        Matrix matrix = new Matrix();
//        matrix.postTranslate(centerX - pointRadius, offset * 3 / 2 - pointRadius);
//        canvas.drawBitmap(bitmap, matrix, paint);
//    }
}



                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大学生就业服务平台管理系统按照操作主体分为管理员和用户。管理员的功能包括学生档案管理、字典管理、试卷管理、试卷选题管理、试题表管理、考试记录表管理、答题详情表管理、错题表管理、法律法规管理、法律法规收藏管理、法律法规留言管理、就业分析管理、论坛管理、企业管理、简历管理、老师管理、简历投递管理、新闻资讯管理、新闻资讯收藏管理、新闻资讯留言管理、学生信息管理、宣传管理、学生管理、职位招聘管理、职位收藏管理、招聘咨询管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 大学生就业服务平台管理系统可以提高大学生就业服务平台信息管理问题的解决效率,优化大学生就业服务平台信息处理流程,保证大学生就业服务平台信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理新闻信息,管理大学生就业服务平台信息,包括考试管理,培训管理,投递管理,薪资管理等,可以管理新闻信息。 考试管理界面,管理员在考试管理界面中可以对界面中显示,可以对考试信息的考试状态进行查看,可以添加新的考试信息等。投递管理界面,管理员在投递管理界面中查看投递种类信息,投递描述信息,新增投递信息等。新闻信息管理界面,管理员在新闻信息管理界面中新增新闻信息,可以删除新闻信息。新闻信息类型管理界面,管理员在新闻信息类型管理界面查看新闻信息的工作状态,可以对新闻信息的数据进行导出,可以添加新新闻信息的信息,可以编辑新闻信息信息,删除新闻信息信息。
基于onehot编码+CNN网络实现5位数验证码识别python源码+数据集+详细注释(可作毕设).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 基于onehot编码+CNN网络实现5位数验证码识别python源码+数据集+详细注释(可作毕设).zip基于onehot编码+CNN网络实现5位数验证码识别python源码+数据集+详细注释(可作毕设).zip基于onehot编码+CNN网络实现5位数验证码识别python源码+数据集+详细注释(可作毕设).zip基于onehot编码+CNN网络实现5位数验证码识别python源码+数据集+详细注释(可作毕设).zip基于onehot编码+CNN网络实现5位数验证码识别python源码+数据集+详细注释(可作毕设).zip基于onehot编码+CNN网络实现5位数验证码识别python源码+数据集+详细注释(可作毕设).zip基于onehot编码+CNN网络实现5位数验证码识别python源码+数据集+详细注释(可作毕设).zip基于onehot编码+CNN网络实现5位数验证码识别python源码+数据集+详细注释(可作毕设).zip基于onehot编码+CNN网络实现5位数验证码识别python源码+数据集+详细注释(可作毕设).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值