用途说明:
这是一个自定义的圆环图像,支持动画展示,可以自定义圆环的颜色和占比,主要用以展示一些数据占比方面展示的android圆环。
圆环实现思路:
android的自定义圆环实现有很多种方法,这里只介绍我实现的思路。主要思路是先画一个大圆,然后再画一个与大圆同圆心的小圆,然后小圆的颜色可以设置为背景色,这样看上去就是一个圆环了。
实现效果:
动画效果
使用方法:
1.布局文件中直接使用自定义圆环(RingView),控件的宽和高需要固定的尺寸
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:orientation="vertical">
android:id="@+id/rvRingView"
android:layout_gravity="center"
android:layout_width="300dp"
android:layout_height="300dp" />
2.在对应的activty中调用一些方法来实现你的需求即可
public class TestActivity extends AppCompatActivity {
@Bind(R.id.rvRingView)
RingView mRvRingView;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_test1);
ButterKnife.bind(this);
mRvRingView.setAnglesData("12.2","230","6799.01","1","111","200");//直接设置String类型的数据
// mRvRingView.setAnglesData(12.2,230,6799.01,1,111,200);//直接设置double类型的数据
// mRvRingView.setAngles(20, 40, 100, 180, 20);//设置的是角度
// mRvRingView.setRingStartAngle(-90);//设置圆环的开始角度,不设置默认是-90
//设置画笔的颜色,支持字符串和资源文件可变参数。
mRvRingView.initPaint("#123456", "#fea123", "#fefefe", "#78da10", "#1121de", "#aacc18");//支持字符串
// mRvRingView.initPaint(R.color.color_first_part,R.color.color_second_part,
// R.color.color_third_part,R.color.color_fourth_part,
// R.color.color_fifth_part,R.color.color_sixth_part);
// mRvRingView.setInnerCirclePaintColor("#ffffff");//内圆的画笔颜色,默认#ffffff
mRvRingView.setRingStrokeWidth(40);//圆环的环宽,默认20
// mRvRingView.showViewWithAnimation(1000);//自定义动画时长展示圆环
// mRvRingView.showViewWithoutAnimation();//展示圆环不带动画
mRvRingView.showViewWithAnimation();//动画展示圆环,默认2s
}
}
3.自定义view的源码
public class RingView extends View {
private static final int CIRCLE_ANGLE = 360;//圆环的角度
private static final int RING_STROKE_WIDTH = 20;//默认圆环的宽度为20dp
private Paint mNoAssetsPaint, mInnerCirclePaint;