原博客地址:https://blog.csdn.net/weixin_40400031/article/details/108102543
引言:最近沉迷做图表类控件,这次做了一个饼图,支持手指交互和多项展开
github地址:https://github.com/bigdongdong/CakeChartView
CakeChartView:饼图,支持手指交互和多项展开
动图预览
截图预览
项目配置
allprojects {
repositories {
...
maven { url 'https://jitpack.io' } //添加jitpack仓库
}
}
dependencies {
implementation 'com.github.bigdongdong:CakeChartView:1.0' //添加依赖
}
xml :
<com.cxd.cakechartview.CakeChartView
android:id="@+id/ccv"
android:padding="30dp" //padding是饼图选中时偏移的距离
android:layout_width="300dp"
android:layout_height="300dp"/>
java :
List<T> list = new ArrayList<T>();
......... //填充list
ccv.setAdapter(new CakeAdapter<T>(list) {
/**
* 设置是否为静态
*/
@Override
public boolean isStatic() {
/**
* 返回true-则从{@link CakeAdapter#item(Object, int)}中获取选中状态
* 返回false-则从手指点击选中获取选中状态
*/
return true;
}
/**
* 设置cake的基础样式
* @return
*/
@Override
public BaseConfig base() {
return new BaseConfig(
Color.parseColor("#11111111"), //底色,影子颜色
10, //文字大小,单位:sp
Color.BLACK, //文字颜色
0.5f, //中心镂空半径与整个cake的半径比
0.65f //文字所在位置半径与整个cake的半径比
);
}
/**
* 设置cake中每一块的数据
* @param T 泛型
* @param position 坐标
* @return
*/
@Override
public ItemConfig item(T t,int position) {
return new ItemConfig(
t.getColor(), //从泛型元素中获取单个item的颜色
t.getText(), //从泛型元素中获取单个item的文字
t.getRatio(), //从泛型元素中获取单个item所占整个cake的比例
position == 5 //设置当前item的选中状态,【如果isStatic()返回false,则这里设置失效,
可以选择三个参数的构造函数】
);
}
});