Android自定义半圆进度条 半圆渐变色进度条带指示 半圆开口大小可自由修改

首先我们来看下效果图

不同的开口大小只需要修改一个参数即可

半圆1:

android 端不支持渐变吗_自定义半圆进度条

半圆2:

android 端不支持渐变吗_android_02

半圆3:

android 端不支持渐变吗_android_03

如果是你想要的效果,就直接滑动到文章底部,下载源码,然后结合本文章操作说明集成到自己的项目中吧

如果集成
第一步:
下载项目解压,然后用as打开。
第二步:
复制SemicircleProgressBar这个类到自己的项目中
第三步:
在需要显示的布局中,直接使用自定义控件,如下:

<com.ecaray.semicircleprogressbar.SemicircleProgressBar
            android:id="@+id/progressbar"
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:layout_centerInParent="true"
            android:background="@color/white" />

具体操作见下图,复制自定义控件的完整路径,然后在xml布局文件中直接引用

android 端不支持渐变吗_自定义控件_04

第四步:在对应布局的类里面,声明控件,然后给控件通过setProgress方法,设置进度即可

package com.ecaray.semicircleprogressbar;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

/**
 * 类描述: 自定义半圆进度条
 * 创建人: 简雨山舍
 * 创建时间: 2018/1/8 11:58
 * 修改人: 简雨山舍
 * 修改时间: 2018/1/8 11:58
 */
public class MainActivity extends AppCompatActivity {
    SemicircleProgressBar percentView;//自定义控件声明
    TextView tvProgress;//显示进度的文本
    Button btAdd;//加按钮
    Button btSubstract;//减按钮
    private int progress = 80;//初始进度

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        percentView = findViewById(R.id.progressbar);
        tvProgress = findViewById(R.id.tv_progress);
        percentView.setProgress(progress);//初始化进度
        tvProgress.setText(progress + "%");//初始化进度文本显示
        btAdd = findViewById(R.id.bt_add);
        btSubstract = findViewById(R.id.bt_subtract);
        btAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                progress += 1;//进度每次加1
                if (progress > 99) {//大于99则等于100
                    progress = 100;
                }
                percentView.setProgress(progress);//设置进度条显示进度
                tvProgress.setText(progress + "%");//设置文本显示进度数字

            }
        });
        btSubstract.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                progress -= 1;//进度每次减1
                if (progress < 0) {//小于0则等于0
                    progress = 0;
                }
                percentView.setProgress(progress);//设置进度条显示进度
                tvProgress.setText(progress + "%");//设置文本显示进度数字
            }
        });
    }
}

以上,就完成了集成工作,可以跑下程序,看看效果了。

如果需要改变半圆进度条的开口大小,也非常的简单,只需要修改一个参数即可

第一步:
打开SemicircleProgressBar该类,在声明变量中找到

/**
     * 两条圆弧的起始角度
     * 起始角度控制半圆开口的大小,数值越小开口越大,数值越大开口越小
     */
    private double floatAngel = 50;

第二步:
修改他的数值即可

其他的想修改的效果,代码中都有备注,直接修改对应的值看效果即可。