巧妙使用WilliamChart绘制出只有两个圆角的柱状图

栏目: IOS · 发布时间: 5年前

内容简介:一开始进展得很顺利,MPAndroid也确实好用,直到写完需求,准备去找找是否有设置圆角的方法,结果并没有,没有,没有! 知道真相的我是崩溃的。只得上网找到另外一个图表库——WilliamChart, 有了上次的经验,这次我确定了WilliamChart确实有设置圆角的方法。 万万没想到,不随人愿,WilliamChart 只能设置含四个圆角的柱状图。我一度想要放弃,不过最后还是本着耐心去研究WilliamChart,没想到最后还真找到了解决方法。且听我道来。另附二、解决问题
最近项目有这么一个需求,实现一个柱状图,柱状图顶部为圆角,底部不为圆角。一开始接到这个需求,以为会很  

简单,认为github上面肯定会有现成的图表库可以使用。所以上github一搜,用上了MPAndroid。  
复制代码

一开始进展得很顺利,MPAndroid也确实好用,直到写完需求,准备去找找是否有设置圆角的方法,结果并没有,没有,没有! 知道真相的我是崩溃的。只得上网找到另外一个图表库——WilliamChart, 有了上次的经验,这次我确定了WilliamChart确实有设置圆角的方法。 万万没想到,不随人愿,WilliamChart 只能设置含四个圆角的柱状图。我一度想要放弃,不过最后还是本着耐心去研究WilliamChart,没想到最后还真找到了解决方法。且听我道来。

另附

二、解决问题

首先看WillamChart自带的demo的一种特殊图表 StackBarChartView:

巧妙使用WilliamChart绘制出只有两个圆角的柱状图

这种图表的特点就是可以填加多个数据集,而且是叠加的方式呈现的。就如上图,是由三组数据组合而成的。一开始看到这个图表的时候,我灵机一动,利用极限的想法,只要设置两组数据,并且底部的数据只要接近0,这样子底部的柱状图就是一个小色块,利用这个小色块和底部的柱状图衔接,这样一来底部的色块就可以挡住底部柱状图下部分的圆角了。,从而就可以“伪造”只有顶部带圆角的柱状图了。

效果如下:

巧妙使用WilliamChart绘制出只有两个圆角的柱状图

而下图是底部数据比较大的对比图

巧妙使用WilliamChart绘制出只有两个圆角的柱状图

明显可以看出如果没有处理底部数据的话,柱状图四个角都为圆角,比较不美观。

三、代码实现

  • 首先是初始化图表数据 :
float []topChartData = {26, 2, 4, 2, 10, 20, 20, 18, 10, 50, 32, 2, 4, 2, 10, 20, 20,18, 21, 5};
  float []bottomChartData = new float[topChartData.length];
  Arrays.fill(bottomChartData, 0.01f);
复制代码
  • 接着添加图标柱子的颜色和数据:
BarSet topBarSet = new BarSet();
        int i;
        for(i = 0;i < topChartData.length; i++) {
            Bar bar = new Bar(i + "", topChartData[i]);
            bar.setColor(Color.parseColor("#47b484"));
            topBarSet.addBar(bar);
        }

        BarSet bottomBarSet = new BarSet();
        for(i = 0;i < bottomChartData.length; i++) {
            Bar bar = new Bar(i + "", bottomChartData[i]);
            bar.setColor(Color.parseColor("#47b484"));
            bottomBarSet.addBar(bar);
        }
复制代码
  • 最后图表按顺序添加数据集并设置相关属性:
roundBarChart = (StackBarChartView) findViewById(R.id.round_barchart);
        roundBarChart.addData(bottomBarSet); //先添加底部数据
        roundBarChart.addData(topBarSet);    

        roundBarChart.setBarSpacing(Tools.fromDpToPx(10.0f));  //设置柱子的间隔
        roundBarChart.setRoundCorners(Tools.fromDpToPx(2.0f)); //设置圆角的角度
        // 去除X,Y轴
        roundBarChart.setXAxis(false)
                     .setYAxis(false)
                     .setXLabels(XRenderer.LabelPosition.NONE)
                     .setYLabels(XRenderer.LabelPosition.NONE);
        // 图表展示
        roundBarChart.show();
复制代码

四、总结

通过这次血的教训,下次再实现项目需求的时候,一定会实现做好功课,毕竟即使是成熟的第三方库,也不一定能满足我们的实际要求。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

精益创业

精益创业

[美] 埃里克·莱斯 / 吴彤 / 中信出版社 / 2012-8 / 49.00元

《精益创业:新创企业的成长思维》内容简介:我们正处在一个空前的全球创业兴盛时代,但无数创业公司都黯然收场,以失败告终。精益创业代表了一种不断形成创新的新方法,它源于“精益生产”的理念,提倡企业进行“验证性学习”,先向市场推出极简的原型产品,然后在不断地试验和学习中,以最小的成本和有效的方式验证产品是否符合用户需求,灵活调整方向。如果产品不符合市场需求,最好能“快速地失败、廉价地失败”,而不要“昂贵......一起来看看 《精益创业》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具