Android 优秀图标库MPAndroidChart之柱状图(适应百分之八十项目需求

文章介绍了如何在Android应用中使用自定义的ValueFormatter类格式化不同图表(如BarChart中的BarEntry)的数值标签,包括BarChart、X轴和Y轴的配置,以及在MainActivity中实际应用的示例代码。
摘要由CSDN通过智能技术生成

*/

public String getPieLabel(float value, PieEntry pieEntry) {

return getFormattedValue(value);

}

/**

  • Used to draw radar value labels, calls {@link #getFormattedValue(float)} by default.

  • @param radarEntry entry being labeled

  • @return formatted string label

*/

public String getRadarLabel(RadarEntry radarEntry) {

return getFormattedValue(radarEntry.getY());

}

/**

  • Used to draw bubble size labels, calls {@link #getFormattedValue(float)} by default.

  • @param bubbleEntry bubble being labeled, also contains X and Y values

  • @return formatted string label

*/

public String getBubbleLabel(BubbleEntry bubbleEntry) {

return getFormattedValue(bubbleEntry.getSize());

}

/**

  • Used to draw high labels, calls {@link #getFormattedValue(float)} by default.

  • @param candleEntry candlestick being labeled

  • @return formatted string label

*/

public String getCandleLabel(CandleEntry candleEntry) {

return getFormattedValue(candleEntry.getHigh());

}

}

复制代码

第四步:MyValueFormatter

public class MyValueFormatter extends ValueFormatter{

private final DecimalFormat mFormat;

private String suffix;

public MyValueFormatter(String suffix) {

mFormat = new DecimalFormat(“0000”);

this.suffix = suffix;

}

@Override

public String getFormattedValue(float value) {

return mFormat.format(value) + suffix;

}

@Override

public String getAxisLabel(float value, AxisBase axis) {

if (axis instanceof XAxis) {

return mFormat.format(value);

} else if (value > 0) {

return mFormat.format(value) + suffix;

} else {

return mFormat.format(value);

}

}

}

复制代码

第五步:MainAcyivity

package detongs.hbqianze.him.linechart;

import android.os.Bundle;

import android.util.Log;

import android.view.WindowManager;

import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import com.github.mikephil.charting.charts.BarChart;

import com.github.mikephil.charting.components.XAxis;

import com.github.mikephil.charting.components.YAxis;

import com.github.mikephil.charting.data.BarData;

import com.github.mikephil.charting.data.BarDataSet;

import com.github.mikephil.charting.data.BarEntry;

import com.github.mikephil.charting.interfaces.datasets.IBarDataSet;

import com.github.mikephil.charting.interfaces.datasets.IDataSet;

import com.github.mikephil.charting.utils.ColorTemplate;

import java.util.ArrayList;

import detongs.hbqianze.him.linechart.chart.MyValueFormatter;

import detongs.hbqianze.him.linechart.chart.ValueFormatter;

public class MainActivity extends AppCompatActivity {

private BarChart chart;

private TextView te_cache;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.activity_main);

chart = findViewById(R.id.chart1);

te_cache = findViewById(R.id.te_cache);

chart.getDescription().setEnabled(false);

//设置最大值条目,超出之后不会有值

chart.setMaxVisibleValueCount(60);

//分别在x轴和y轴上进行缩放

chart.setPinchZoom(true);

//设置剩余统计图的阴影

chart.setDrawBarShadow(false);

//设置网格布局

chart.setDrawGridBackground(true);

//通过自定义一个x轴标签来实现2,015 有分割符符bug

ValueFormatter custom = new MyValueFormatter(" ");

//获取x轴线

XAxis xAxis = chart.getXAxis();

//设置x轴的显示位置

xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);

//设置网格布局

xAxis.setDrawGridLines(true);

//图表将避免第一个和最后一个标签条目被减掉在图表或屏幕的边缘

xAxis.setAvoidFirstLastClipping(false);

//绘制标签 指x轴上的对应数值 默认true

xAxis.setDrawLabels(true);

xAxis.setValueFormatter(custom);

//缩放后x 轴数据重叠问题

xAxis.setGranularityEnabled(true);

//获取右边y标签

YAxis axisRight = chart.getAxisRight();

axisRight.setStartAtZero(true);

//获取左边y轴的标签

YAxis axisLeft = chart.getAxisLeft();

//设置Y轴数值 从零开始

axisLeft.setStartAtZero(true);

chart.getAxisLeft().setDrawGridLines(false);

//设置动画时间

chart.animateXY(600,600);

chart.getLegend().setEnabled(true);

getData();

//设置柱形统计图上的值

chart.getData().setValueTextSize(10);

for (IDataSet set : chart.getData().getDataSets()){

set.setDrawValues(!set.isDrawValuesEnabled());

}

}

public void getData(){

ArrayList values = new ArrayList<>();

Float aFloat = Float.valueOf(“2015”);

Log.v(“xue”,“aFloat+++++”+aFloat);

BarEntry barEntry = new BarEntry(aFloat,Float.valueOf(“100”));

BarEntry barEntry1 = new BarEntry(Float.valueOf(“2016”),Float.valueOf(“210”));

BarEntry barEntry2 = new BarEntry(Float.valueOf(“2017”),Float.valueOf(“300”));

BarEntry barEntry3 = new BarEntry(Float.valueOf(“2018”),Float.valueOf(“450”));

BarEntry barEntry4 = new BarEntry(Float.valueOf(“2019”),Float.valueOf(“300”));

BarEntry barEntry5 = new BarEntry(Float.valueOf(“2020”),Float.valueOf(“650”));

BarEntry barEntry6 = new BarEntry(Float.valueOf(“2021”),Float.valueOf(“740”));

values.add(barEntry);

values.add(barEntry1);

values.add(barEntry2);

values.add(barEntry3);

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

最后

为了方便有学习需要的朋友,我把资料都整理成了视频教程(实际上比预期多花了不少精力)

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

  • 无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,这四个字就是我的建议!!
  • 我希望每一个努力生活的IT工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,没有人能随随便便成功。

加油,共勉。

,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

  • 无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,这四个字就是我的建议!!
  • 我希望每一个努力生活的IT工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,没有人能随随便便成功。

加油,共勉。

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

  • 17
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值