如何在androidplot中使用obj的参数

时间:2017-08-11 12:06:26

标签: android

这里是来自其他人的代码,我想知道如何在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

1 个答案:

答案 0 :(得分:0)

我仍然不确定我理解你的问题,但我会尝试提供一些关于你发布的代码中发生的事情的一般信息。

基本上,_ratePlot.setRangeValueFormat(new Format()...)设置了在Format边缘渲染范围值时要使用的自定义XYPlot。 Androidplot将在此匿名内部类上调用format方法,并在Number参数中将每个范围值作为obj传递。您必须将其强制转换为此方法中的Number,因为Format类应该是通用的。这是在方法的第一行完成的:

double val = ((Number) obj).doubleValue();

获得此值后,您可以决定如何格式化它。该方法的其余部分只进行一些格式化并将格式化结果作为StringBuffer返回。