1. 概述
在 v2.1.4
后才有了这个接口。
-
XAxisValueFormatter
接口可用于创建定制格式化器类,在它们绘制到屏幕之前 动态地调整 x-values 。 -
对于使用
XValueFormatter
只需创建一个新的类,让它实现接口,通过getXValue(...)
方法返回任何你想要显示的 X 轴标签。 50 - > 50.0%
2. 自定义格式示例
public class MyCustomXAxisValueFormatter implements XAxisValueFormatter {
@Override
public String getXValue(String original, int index, ViewPortHandler viewPortHandler) {
// original is the original value to use, x-index is the index in your x-values array
// implement your logic here …
return …;
}
}
- 然后,为 X 轴设置格式器:
// usage on XAxis, get axis instance:
XAxis xAxis = chart.getXAxis();
// set the formatter
xAxis.setValueFormatter(new MyCustomXAxisValueFormatter());
3. 预定义了的 XAxisValueFormatters
- XAxisValueFormatters 源码:
package com.github.mikephil.charting.formatter;
import com.github.mikephil.charting.utils.ViewPortHandler;
/**
-
Default formatter class for adjusting x-values before drawing them.
-
This simply returns the original value unmodified.
*/
public class DefaultXAxisValueFormatter implements XAxisValueFormatter {
@Override
public String getXValue(String original, int index,
ViewPortHandler viewPortHandler) {
return original; // just return original, no adjustments
}
}
4. 自定义 XAxisValueFormatters 范例
- MyCustomXAxisValueFormatter.java 代码:
package com.xxmassdeveloper.mpchartexample.custom;
import com.github.mikephil.charting.utils.ViewPortHandler;
import com.github.mikephil.charting.formatter.XAxisValueFormatter;
public class MyCustomXAxisValueFormatter implements XAxisValueFormatter {
public MyCustomXAxisValueFormatter() {
// maybe do something here or provide parameters in constructor
}
@Override
public String getXValue(String original, int index, ViewPortHandler viewPortHandler) {
/* Log.i(“TRANS”, "x: " + viewPortHandler.getTransX()
- ", y: " + viewPortHandler.getTransY()); */
// e.g. adjust the x-axis values depending on scale / zoom level
if (viewPortHandler.getScaleX() > 5)
return “4”;
else if (viewPortHandler.getScaleX() > 3)
return “3”;
else if (viewPortHandler.getScaleX() > 1)
return “2”;
else
return original;
}
}
三、YAxisValueFormatter 接口
1. 概述
在 v2.1.4
后才有了这个接口。
-
YAxisValueFormatter
接口可用于创建定制格式化器类,在它们绘制到屏幕之前 动态地调整 x-values 。 -
对于使用
YValueFormatter
只需创建一个新的类,让它实现接口,通过getFormattedValue(...)
方法返回任何你想要显示的 。
2. 自定义格式示例
public class MyYAxisValueFormatter implements YAxisValueFormatter {
private DecimalFormat mFormat;
public MyYAxisValueFormatter () {
mFormat = new DecimalFormat(“###,###,##0.0”); // use one decimal
}
@Override
public String getFormattedValue(float value, YAxis yAxis) {
// write your logic here
// access the YAxis object to get more information
return mFormat.format(value) + " $"; // e.g. append a dollar-sign
}
}
然后,为 YAxis
对象设置格式器:
// get an instance of the YAxis (e.g. left axis)
YAxis leftAxis = chart.getAxisLeft();
leftAxis.setValueFormatter(new MyYAxisValueFormatter());
3. 预定义的自定义格式
LargeValueFormatter
和 PercentFormatter
.
- 详情请看前面介绍的 ValueFormatter 接口 的 预定义的自定义格式 。
四、三种格式器的实例效果图分析
1. ValueFormatter
2. XValueFormatter
3. YValueFormatter
- 自定义的
YValueFormatter
:MyYAxisValueFormatter.java
public class MyYAxisValueFormatter implements YAxisValueFormatter {
private DecimalFormat mFormat;
public MyYAxisValueFormatter() {
mFormat = new DecimalFormat(“###,###,###,##0.0”);
}
@Override
public String getFormattedValue(float value, YAxis yAxis) {
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
最后
总而言之,Android开发行业变化太快,作为技术人员就要保持终生学习的态度,让学习力成为核心竞争力,所谓“活到老学到老”只有不断的学习,不断的提升自己,才能跟紧行业的步伐,才能不被时代所淘汰。
在这里我分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司20年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
大厂面试真题+项目实战源码》]( )收录**
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算