这里是来自其他人的代码,我想知道如何在Internal类中使用obj的参数?因为我没有找到使用函数的地方:
_ratePlot.setRangeValueFormat(new Format() {
@Override
public StringBuffer format(Object obj, @NonNull StringBuffer toAppendTo,
@NonNull FieldPosition pos) {
double val = ((Number) obj).doubleValue();
double maxY = _ratePlot.getCalculatedMaxY().doubleValue();
if (val == 0 || maxY < finalK) {
return new DecimalFormat("0").format(val, toAppendTo, pos);
} else if (maxY < finalK * finalK) {
if (val < 10 * finalK)
return new DecimalFormat("0.0 k").format(val / (1000), toAppendTo, pos);
else
return new DecimalFormat("0 k").format(val / (1000), toAppendTo, pos);
} else {
if (val < 10 * finalK * finalK)
return new DecimalFormat("0.0 M").format(val / (finalK * finalK), toAppendTo, pos);
else
return new DecimalFormat("0 M").format(val / (finalK * finalK), toAppendTo, pos);
}
}
@Override
public Object parseObject(String source, @NonNull ParsePosition pos) {
return null;
}
});
我知道这里定义了匿名内部类,但我找不到它的使用位置,我的意思是我不明白如何知道变量val的值。这是完整的源代码: http://www.programcreek.com/java-api-examples/index.php?source_dir=i2p.android.base-master/app/src/main/java/net/i2p/android/router/stats/RateGraphFragment.java
答案 0 :(得分:0)
我仍然不确定我理解你的问题,但我会尝试提供一些关于你发布的代码中发生的事情的一般信息。
基本上,_ratePlot.setRangeValueFormat(new Format()...)
设置了在Format
边缘渲染范围值时要使用的自定义XYPlot
。 Androidplot将在此匿名内部类上调用format方法,并在Number
参数中将每个范围值作为obj
传递。您必须将其强制转换为此方法中的Number
,因为Format
类应该是通用的。这是在方法的第一行完成的:
double val = ((Number) obj).doubleValue();
获得此值后,您可以决定如何格式化它。该方法的其余部分只进行一些格式化并将格式化结果作为StringBuffer
返回。