学习笔记自定义View 圆环

这篇博客介绍了如何在Android中自定义View来创建一个显示设备功率的圆环形进度图。作者分享了从基础知识学习到实现自定义圆环View的过程,并提供了详细的代码实现,包括自定义属性、XML布局以及实际效果展示。
摘要由CSDN通过智能技术生成

公司产品逆变器,需要一个显示设备的功率图,如下图所示
设计图

那就开始自定义圆环了,如果是新手小白的话,建议重新学习下,Android 的自定义View,从基础开始学习,原来工作中很少接触到自定义View,所以自己重新学习了一下,里面的一些东西使用也不是很规范,下面废话少说,上代码,所有的代码都有注释,写的非常清楚

自定义的一些属性

    <declare-styleable name="InverterHalfView">
        <attr name="startText" format="integer" />
        <attr name="endText" format="integer" />
        <attr name="currentPower" format="string" />
        <attr name="desText" format="string" />
        <attr name="startColor" format="color" />
        <attr name="desColor" format="color" />
        <attr name="currentColor" format="color"/>
        <!--圆环开始的角度-->
        <attr name="startAngel" format="integer" />
        <!--圆环总的角度大小-->
        <attr name="endAngel" format="integer" />
        <attr name="currentAngel" format="integer" />
        <attr name="circleWidth" format="integer" />
    </declare-styleable>

圆环的代码

package com.renogy.studycustomview.weight;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.BlurMaskFilter;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.Shader;
import android.util.AttributeSet;
import android.view.View;

import androidx.annotation.Nullable;

import com.renogy.studycustomview.R;

/**
 * 逆变器的功率显示图
 */
public class InverterHalfView extends View {
    //开始功率
    private int startPower;
    //结束功率
    private int endPower;
    private String desPower;
    //当前功率
    private String currentPower;
    //开始的字体颜色
    private int startColor;
    //内容的的字体颜色
    private int desColor;
    //当前的功率字体颜色
    private int currentColor;
    //半圆的宽度
    private float circleWidth;
    //开始角度
    private int startAngle;
    //圆环的大小角度
    private int endAngle;
    //圆环的内边距
    private int circlePadding = 8;

    //开始和结束的画笔
    private Paint startPaint = null;
    //结束功率的画笔
    private Paint desPaint = null;
    //当前功率的画笔
    private Paint currentPaint = null;
    //圆环的画笔
    private Paint circlePaint = null;
    //圆环的大小
    private final int circleDefaultSize = 200;
    private float startTextSize = 13f;
    private float desTextSize = 20f;

    private Context mContext;
    //中心点的坐标X
    private int centerX;
    //中心点的坐标Y
    private int centerY;
    //圆环半径
    private int innerRadius;
    //当前的角度
    private int currentSweepAng
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值