Android自定义半圆进度条 半圆渐变色进度条带指示 半圆开口大小可自由修改
首先我们来看下效果图
不同的开口大小只需要修改一个参数即可
半圆1:
半圆2:
半圆3:
如果是你想要的效果,就直接滑动到文章底部,下载源码,然后结合本文章操作说明集成到自己的项目中吧
如果集成
第一步:
下载项目解压,然后用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布局文件中直接引用
第四步:在对应布局的类里面,声明控件,然后给控件通过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;
第二步:
修改他的数值即可
其他的想修改的效果,代码中都有备注,直接修改对应的值看效果即可。