前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android雷达效果

Android雷达效果

作者头像
aruba
发布2020-07-03 11:05:41
7570
发布2020-07-03 11:05:41
举报
文章被收录于专栏:android技术android技术

雷达.gif

定义一些变量
代码语言:javascript
复制
    private int width, height, radius;
    private SweepGradient sweepGradient;
    private Paint paint = new Paint();
    private Matrix matrix = new Matrix();
    //递增的角度
    private int FACTOR = 2;
    private int RATIO = 0;
    //背景paint
    private Paint bgPaint = new Paint();
在onlayout中初始化参数
代码语言:javascript
复制
    @Override
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
        super.onLayout(changed, left, top, right, bottom);
        width = getMeasuredWidth();
        height = getMeasuredHeight();
        radius = (int) (Math.min(width, height) / 2.0f);

        sweepGradient = new SweepGradient(radius, radius, new int[]{Color.GREEN, Color.TRANSPARENT}, null);
        paint.setShader(sweepGradient);
        paint.setAntiAlias(true);

        bgPaint.setStyle(Paint.Style.STROKE);
        bgPaint.setAntiAlias(true);
        bgPaint.setColor(Color.WHITE);
        bgPaint.setStrokeWidth(2);
        bgPaint.setPathEffect(new DashPathEffect(new float[]{10, 10}, 0));
    }
ondraw中利用使用sweepGradient 的paint画圆,并利用matrix旋转变换实现旋转
代码语言:javascript
复制
    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawCircle(radius, radius, radius, paint);
        drawBackGround(canvas);

        RATIO += FACTOR;
        if (RATIO == 360) {
            RATIO = 0;
        }
        matrix.setRotate(RATIO, radius, radius);
        sweepGradient.setLocalMatrix(matrix);
        postInvalidateDelayed(10);
    }

    /**
     * 画背景
     *
     * @param canvas
     */
    private void drawBackGround(Canvas canvas) {
        canvas.drawCircle(radius, radius, radius, bgPaint);
        canvas.drawCircle(radius, radius, radius / 4.0f, bgPaint);
        canvas.drawCircle(radius, radius, radius * 2.0f / 4.0f, bgPaint);
        canvas.drawCircle(radius, radius, radius * 3.0f / 4.0f, bgPaint);
        canvas.drawPoint(radius, radius, bgPaint);

        Path path_h = new Path();
        path_h.moveTo(0, radius);
        path_h.lineTo(radius * 2, radius);
        canvas.drawPath(path_h, bgPaint);

        Path path_v = new Path();
        path_v.moveTo(radius, 0);
        path_v.lineTo(radius, radius * 2);
        canvas.drawPath(path_v, bgPaint);
    }
项目地址:https://gitee.com/aruba/ShaderApplication.git
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 定义一些变量
  • 在onlayout中初始化参数
  • ondraw中利用使用sweepGradient 的paint画圆,并利用matrix旋转变换实现旋转
  • 项目地址:https://gitee.com/aruba/ShaderApplication.git
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档