HelloCharts 框架之饼状图的简单使用,以及属性介绍

hellocharts 地址:https://github.com/lecho/hell...
hellocharts是一个非常好用的第三方图表库,性能比较好,体验效果也很好,所以决定记录下使用过程中用到的属性,慢慢熟悉以后可以自定义新的功能和样式

1、项目的依赖
//工程build.gradle中添加
repositories {maven {url "https://jitpack.io"}}//moudle 中的build.gradle中添加dependencies {compile 'com.github.lecho:hellocharts-android:v1.5.8'}

2、添加PieChart的xml
//当然也可以通过java代码的方式添加,这里就不写了

 <lecho.lib.hellocharts.view.PieChartViewandroid:id="@+id/pie_chart"android:layout_width="match_parent"android:layout_height="wrap_content" />

3、初始化PieChartView并且设置数据和属性

最简单的步骤:

//先创造点数据List<SliceValue> values=new ArrayList<>();SliceValue sliceValue=new SliceValue(占比,颜色);SliceValue sliceValue1=new SliceValue(占比,颜色);SliceValue sliceValue2=new SliceValue(占比,颜色);...values.add(sliceValue);values.add(sliceValue1);values.add(sliceValue2);
//创建数据模型PieChartData  data=new PieChartData(values);
//设置数据的一些属性以及图表的一堆。
data.set......   //这里设置的是数据类的一堆设置
pieChartView.set.......//设置控件的一堆属性
//给图表设置数据---就完了
mPieChartView.setPieChartData(mPieChartData);    //设置数据
//再设置个监听

正常使用步骤:

//找到控件
PieChartView mPieChartView = findViewById(R.id.pie_chart);//设置数据和属性//设置饼状图的数据private void setPieDatas() {int numValues = 6;                //把一张饼切成6块List<SliceValue> values = new ArrayList<>();for (int i = 0; i < numValues; i++) {//设置每一块的大小和颜色SliceValue sliceValue = new SliceValue((float) Math.random() * 30 + 15, ChartUtils.pickColor());values.add(sliceValue);}//设置相关属性饼状图的数据类mPieChartData = new PieChartData(values); //饼状图的数据类mPieChartData.setHasLabels(true); //是否有标签,,默认在内部mPieChartData.setHasLabelsOnlyForSelected(false); //是否设置选中时是否有标签mPieChartData.setHasLabelsOutside(true); //是否设置标签在外部mPieChartData.setHasCenterCircle(false); // 是否有中心圆环mPieChartData.setCenterCircleScale(0.4f);//设置中心环的大小mPieChartData.setSlicesSpacing(0);  //设置分离间距--//设置中心文本,,必须有中心圆环时设置mPieChartData.setCenterText1("单行文本");//设置单行文本//设置双行文本,必须有单行以后才能设置双行mPieChartData.setCenterText2("双行文本"); //设置双行文本mPieChartData.setCenterText1FontSize(18);//设置字体,尽量不要设置。。这里是直接读取的assets文件夹下的数据Typeface tf = Typeface.createFromAsset(this.getAssets(), "Roboto-Italic.ttf");mPieChartData.setCenterText2Typeface(tf);mPieChartData.setCenterText2FontSize(ChartUtils.px2sp(getResources().getDisplayMetrics().scaledDensity,(int) getResources().getDimension(R.dimen.pie_chart_double_text_size)));//设置控件相关mPieChartView.setPieChartData(mPieChartData);    //设置数据mPieChartView.setValueSelectionEnabled(true);   //设置是否能选中mPieChartView.startDataAnimation();         //设置动画mPieChartView.setCircleFillRatio(0.8f);//设置饼状图占整个view的比例mPieChartView.setViewportCalculationEnabled(true);//设置饼图自动适应大小mPieChartView.setChartRotationEnabled(true);//设置饼图是否可以手动旋转}
4、设置事件的监听
  //点击事件监听public class ValueTouchListener implements PieChartOnValueSelectListener{@Override //如果设置为能选中,选中时走此方法,如果设置为不能选中,点击时走此方法public void onValueSelected(int i, SliceValue value) {Toast.makeText(PieChartActivity.this, "当前选中块约占: " + (int) value.getValue() + " %", Toast.LENGTH_SHORT).show();}@Override //能选中,取消选中时调用;  不能选中: 不走此方法public void onValueDeselected() {Toast.makeText(PieChartActivity.this,"当前块取消选中",Toast.LENGTH_LONG).show();}}最后://在这里设置监听mPieChartView.setOnValueTouchListener(new ValueTouchListener());
5、最后贴一下整个类的代码
import android.graphics.Typeface;
import android.view.View;
import android.widget.Toast;
import com.example.hellochartsdemo.R;
import com.example.hellochartsdemo.base.BaseActivity;
import java.util.ArrayList;
import java.util.List;
import lecho.lib.hellocharts.listener.PieChartOnValueSelectListener;
import lecho.lib.hellocharts.model.PieChartData;
import lecho.lib.hellocharts.model.SliceValue;
import lecho.lib.hellocharts.util.ChartUtils;
import lecho.lib.hellocharts.view.PieChartView;/*** 饼状图Activity* Created by Michael on 2018/3/13.*/public class PieChartActivity extends BaseActivity {private PieChartView mPieChartView; //声明饼状图private PieChartData mPieChartData; //饼状图数据private static final String TAG = "PieChartActivity";//获取布局id@Overridepublic int getLayoutId() {return R.layout.pie_chart_layout;}//初始化布局@Overridepublic void initView() {mPieChartView = findViewById(R.id.pie_chart);}//初始化数据@Overridepublic void initData() {setPieDatas();//设置数据}@Overridepublic void initListener() {//在这里设置监听mPieChartView.setOnValueTouchListener(new ValueTouchListener());}@Overridepublic void processClick(View v) {//其他view的点击事件}//设置饼状图的数据private void setPieDatas() {int numValues = 6;                //把一张饼切成6块List<SliceValue> values = new ArrayList<>();for (int i = 0; i < numValues; i++) {//设置每一块的大小和颜色SliceValue sliceValue = new SliceValue((float) Math.random() * 30 + 15, ChartUtils.pickColor());values.add(sliceValue);}//设置相关属性饼状图的数据类mPieChartData = new PieChartData(values); //饼状图的数据类mPieChartData.setHasLabels(true); //是否有标签,,默认在内部mPieChartData.setHasLabelsOnlyForSelected(false); //是否设置选中时是否有标签mPieChartData.setHasLabelsOutside(true); //是否设置标签在外部mPieChartData.setHasCenterCircle(false); // 是否有中心圆环mPieChartData.setCenterCircleScale(0.4f);//设置中心环的大小mPieChartData.setSlicesSpacing(0);  //设置分离间距--//设置中心文本,,必须有中心圆环时设置mPieChartData.setCenterText1("单行文本");//设置单行文本//设置双行文本,必须有单行以后才能设置双行mPieChartData.setCenterText2("双行文本"); //设置双行文本mPieChartData.setCenterText1FontSize(18);//设置字体,尽量不要设置。。这里是直接读取的assets文件夹下的数据Typeface tf = Typeface.createFromAsset(this.getAssets(), "Roboto-Italic.ttf");mPieChartData.setCenterText2Typeface(tf);mPieChartData.setCenterText2FontSize(ChartUtils.px2sp(getResources().getDisplayMetrics().scaledDensity,(int) getResources().getDimension(R.dimen.pie_chart_double_text_size)));//设置控件相关mPieChartView.setPieChartData(mPieChartData);    //设置数据mPieChartView.setValueSelectionEnabled(true);   //设置是否能选中mPieChartView.startDataAnimation();         //设置动画mPieChartView.setCircleFillRatio(0.8f);//设置饼状图占整个view的比例mPieChartView.setViewportCalculationEnabled(true);//设置饼图自动适应大小mPieChartView.setChartRotationEnabled(true);//设置饼图是否可以手动旋转}//点击事件监听public class ValueTouchListener implements PieChartOnValueSelectListener {@Override //如果设置为能选中,选中时走此方法,如果设置为不能选中,点击时走此方法public void onValueSelected(int i, SliceValue value) {Toast.makeText(PieChartActivity.this, "当前选中块约占: " + (int) value.getValue() + " %", Toast.LENGTH_SHORT).show();}@Override //能选中,取消选中时调用;  不能选中: 不走此方法public void onValueDeselected() {Toast.makeText(PieChartActivity.this, "当前块取消选中", Toast.LENGTH_LONG).show();}}
}

6、总结下饼状图

饼状图与其他图表不同的是,饼状图并没有轴,也不支持缩放。为了更好的显示效果,饼状图的布局宽高应相等。

SliceValue

饼状图中“扇形”的数据模型。
setValue(float value):设置值
setColor(int color):设置颜色
setSliceSpacing(int sliceSpacing)
setLabel(String label):设置标签

PieChartData
饼状图的数据模型

setValues(List<SliceValue> values) //设置数据
setHasLabels(true); //是否有标签,,默认在内部
setHasLabelsOnlyForSelected(false); //是否设置选中时是否有标签setHasLabelsOutside(true); //是否设置标签在外部
setHasCenterCircle(false); // 是否有中心圆环
setCenterCircleScale(0.4f);//设置中心环的大小
setSlicesSpacing(0);  //设置分离间距--
//设置中心文本,,必须有中心圆环时设置
setCenterText1("单行文本");//设置单行文本
//设置双行文本,必须有单行以后才能设置双行
setCenterText2("双行文本"); //设置双行文本
setCenterText1FontSize(18);
//设置字体,尽量不要设置。。这里是直接读取的assets文件夹下的数据
Typeface tf = Typeface.createFromAsset(this.getAssets(), "Roboto-Italic.ttf");mPieChartData.setCenterText2Typeface(tf);
setCenterText2FontSize(ChartUtils.px2sp(getResources().getDisplayMetrics().scaledDensity,(int) getResources().getDimension(R.dimen.pie_chart_double_text_size)));

PieChartView //饼状图控件

setPieChartData(PieChartData data)  //设置数据模型
setOnValueTouchListener(PieChartOnValueSelectListener touchListener) //选中或者点击监听
setChartRotation(int rotation, boolean isAnimated):设置饼状图旋转的角度
setChartRotationEnabled(boolean isRotationEnabled):设置饼状图是否可以通过滑动来旋转
setCircleFillRatio(float fillRatio):设置饼状图占用控件的比例,取值范围0-1。默认值为1,表示饼状图尽可能地占满整个控件。
//还有
setValueTouchEnabled(false);//设置是否可以点击图表上的值,默认true
setInteractive(true);//设置是否可以交互,默认为true
setValueSelectionEnabled(false);//是否可以选中,默认是false
setViewportCalculationEnabled(true);//设置饼图 自适应大小
startDataAnimation();//设置数据改变时的动画

图表的使用比较简单,属性很多,没有一一列出来,但是,知道这些其他的属性猜一下也就知道了。后续会持续添加饼状图的高级用法。

HelloCharts-android 之饼状图的使用相关推荐

  1. Android自定义饼状图

    1.啥都别说,先上效果图. 2.这效果是平时真实项目开发可能用到的.我也是看到Android交流群里有人要这种效果,于是开始动手写一写. 3.分析:这个自定义View效果 的实现大概分为几步 3.1. ...

  2. android带动画的饼图,Android部分源码资源共享(视屏转GIF图片工具、仿抖音、仿朋友圈、仿红包、饼状图、引导图,图灵源码等)...

    视屏转为gif图片工具: 下载地址:CSDN 下载 1.封装了各项工具类,例如,日志,打印,缓存等,可直接使用项目 百度网盘:下载    提取码:fq07 2.Android高仿抖音 1.项目 的bu ...

  3. Android部分源码资源共享(视屏转GIF图片工具、仿抖音、仿朋友圈、仿红包、饼状图、引导图,图灵源码等)

    视屏转为gif图片工具: 下载地址:CSDN 下载 1.封装了各项工具类,例如,日志,打印,缓存等,可直接使用项目 百度网盘:下载     提取码:fq07 2.Android高仿抖音 1.项目 的b ...

  4. android 第三方扇形图,Android扇形图(饼状图)

    关于Android的图形控件,市场上是有很多的开源库的 我个人用的比较多的就是:MPAndroidChart,个人感觉挺好用的,但是有写时候,满足不了需求,就需要自己去写了. 先看看我们的效果图: T ...

  5. android 自定义饼图半径不定,【Android】仿支付宝账单统计饼状图的自定义view

    仿支付宝统计饼状图的自定义view,如下图: 项目地址:https://github.com/bigeyechou/CustomViewCollection 目录:customviewcollecti ...

  6. android 最简单的饼状图

    录制的gif图有点渣,但是实际效果还是可以的. 因为项目需要绘制饼状图,就很简单的饼状图带一个选中的效果,本来也想使用MPAndroidChart这个库的,但是觉得就实现一个效果引用整个库,对于一个有 ...

  7. android饼状图简书,自定义 view 练手 - 简单的饼状图

    今天咱们来一个例子练练手,饼状图这样的图表算是最好的了,复杂的话可以很复杂, 采用 surfaceview + 动画 可以使用很优秀的观感体验:简单的话可以很简单,仅仅画出图来就行,不用考虑动画啥的 ...

  8. Android饼状图

    项目需要做一个android饼状图的效果 因为元素比较多 并且有些元素的百分比为0也需要显示出来,一开始考虑使用MPAndroidCharthttps://github.com/PhilJay/MPA ...

  9. android自定义View: 饼状图绘制(四)

    本系列自定义View全部采用kt 系统mac android studio: 4.1.3 kotlin version1.5.0 gradle: gradle-6.5-bin.zip 本篇效果: 画矩 ...

最新文章

  1. threejs加载obj模型_Vulkan编程指南(章节31-载入模型)
  2. android 如何使用服务器进行版本更新
  3. 深度学习之tensorflow环境搭建
  4. php判断日期文章变红,DeDecms如何实现当天发表的文章日期以红色显示
  5. 开课吧Java课堂:如何通过接口引用实现接口?
  6. 从openjdk.java.net获取OpenJDK8源码并编译(amd64/aarch64/arm64)
  7. 圆环和环形是一样的吗_饼图太丑?只需3步,立马变身成好看的环形图!
  8. JAVA黑马刘意学习笔记
  9. 区块链隐私保护:技术和相关项目
  10. VS编译器 :LNK链接错误汇总:LNK2001 / LNK2005 / LNK2019 / LNK1120
  11. 计算机组装和维护ppt,计算机组装与维护ppt课件
  12. L' Hospital(洛必达)法则
  13. 计算机本科生可以发SCI论文吗?
  14. Readiris Pro 17 for Mac(光学识别OCR软件)
  15. python中转义字符与格式化字符的混合使用
  16. 弥散阴影html,超赞!一份简单易上手的青春弥散阴影修炼手册
  17. Nginx快速入门(三)正向代理、HTTP服务器与动静分离
  18. redis rua解决库存问题_Redis锁完美解决高并发秒杀问题
  19. 比 OpenAI 更好!!谷歌发布 20 亿参数通用语音模型——USM
  20. 链叨叨直播间丨CryptoMechaKing——末世机甲“元宇宙游戏”来临

热门文章

  1. qtcreator摄像头显示时间_屏下摄像头手机量产了,然后呢?
  2. csrf攻击原理与解决方法_信息安全之CSRF攻击
  3. 华为鸿蒙系统初探之HUAWEI DevEco Studio Hello World
  4. 中国移动系统集成公司2020春招技术综合在线编程题第二题
  5. Leetcode-260. 只出现一次的数字 III
  6. myeclipse优化
  7. 鸿蒙开发-使用fetch发起网络请求
  8. SpringBoot中实现CommandLineRunner接口在项目启动后立即执行某方法
  9. SourceTree中拉取GitLab代码时提示:Too many authentication failures“ fatal: Could not read from remote reposit
  10. RocketMQ-控制台的安装与启动