基于项目ColorArcProgressBar自己改了点东西,去项目原地址
先看效果图:
圆弧线条可以设置渐变色。
下面上代码,需要什么需求自己改咯
首先是xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="gy.net.named.MainActivity">
<gy.net.named.view.ColorArcProgressBar
android:id="@+id/myProgress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="150px"
android:layout_marginTop="50px"
app:is_need_content="true"
app:front_color1="#FFC62C"
app:front_color2="#FF2EAB"
app:front_color3="#BB0839"
app:back_width="2dp"
app:front_width="10dp"
app:max_value="100"
app:total_engle="270"
app:back_color="@android:color/darker_gray"
/>
<gy.net.named.RaiseNumberAnimTextView
android:id="@+id/souce"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="230px"
android:text=""
android:textColor="#c24e4e"
android:textSize="138px"
android:textStyle="bold" />
</LinearLayout>
然后是自定义控件
public class ColorArcProgressBar extends View {
private int mWidth;
private int mHeight;
private int diameter = 500; //直径
private float centerX; //圆心X坐标
private float centerY; //圆心Y坐标
private Paint allArcPaint;
private Paint progressPaint;
private Paint vTextPaint;
private Paint hintPaint;
private Paint degreePaint;
private Paint curSpeedPaint;
private RectF bgRect;
private ValueAnimator progressAnimator;
private PaintFlagsDrawFilter mDrawFilter;
private SweepGradient sweepGradient;
private Matrix rotateMatrix;
private float startAngle = 135;
private float sweepAngle = 270;
private float currentAngle = 0;
private float lastAngle;
private int[] colors = new int[]{Color.GREEN, Color.YELLOW, Color.RED, Color.RED};
private float maxValues = 60;
private float curValues = 0;
private float bgArcWidth = dipToPx(2);
private float progressWidth = dipToPx(10);
private float textSize = dipToPx(60);
private float hintSize = dipToPx(15);
private float curSpeedSize = dipToPx(13);
private int aniSpeed = 1000;
private float longdegree = dipToPx(13);
private float shortdegree = dipToPx(5);
private final int DEGREE_PROGRESS_DISTANCE = dipToPx(8);
private Path mPath;
private String hintColor = "#676767";
private String longDegreeColor = "#111111";
private String shortDegreeColor = "#111111";
private String bgArcColor = "#111111";
private String titleString;
private String hintString;
private boolean isShowCurrentSpeed = true;
private boolean isNeedTitle;
private boolean isNeedUnit;
private boolean isNeedDial;
private boolean isNeedContent;
// sweepAngle / maxValues 的值
private float k;
private DashPathEffect dashPathEffect;
private SweepGradient mColorShader;
public ColorArcProgressBar(Context context) {
super(context, null);
initView();
}
public ColorArcProgressBar(Context context, AttributeSet attrs) {
super(context, attrs, 0);
initCofig(context, attrs);
initView();
}
public ColorArcProgressBar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initCofig(context, attrs);
initView();
}
&nbs