使用AchartEngine在Android上旋转条形图中显示的实际值

使用AchartEngine在Android上旋转条形图中显示的实际值,android,bar-chart,achartengine,Android,Bar Chart,Achartengine,如何旋转achartengine中条形图中显示的条形图顶部显示的值。我知道我们可以使用setYLabelsAngle(浮动角度)旋转Y轴标签,但我想旋转显示在条顶部的实际值。i、 e当您说setDisplayChartValues(布尔显示)时显示的值 我在AchartEngine、AndroidPlot和AFreeChart上搜索了此功能,但没有找到。你能给我提供一个解决方案吗?或者我应该使用Canvas和customview自己实现这个功能吗 PS我只需要在我的应用程序中显示条形图。使用渲染

如何旋转achartengine中条形图中显示的条形图顶部显示的值。我知道我们可以使用
setYLabelsAngle(浮动角度)
旋转Y轴标签,但我想旋转显示在条顶部的实际值。i、 e当您说
setDisplayChartValues(布尔显示)
时显示的值

我在AchartEngine、AndroidPlot和AFreeChart上搜索了此功能,但没有找到。你能给我提供一个解决方案吗?或者我应该使用Canvas和customview自己实现这个功能吗


PS我只需要在我的应用程序中显示条形图。

使用渲染器等的任何功能都无法做到这一点,如果你有achartengine库的源代码,你可以编辑它并实现你的目标

若要旋转文本,请在条形图类中而不是XYChart类中更改drawChartValuesText()。 只需将旋转角度放在drawText()函数的两个位置,如下所示

 protected void drawChartValuesText(Canvas canvas, XYSeries series, SimpleSeriesRenderer renderer,
      Paint paint, List<Float> points, int seriesIndex, int startIndex) {
    int seriesNr = mDataset.getSeriesCount();
    int length = points.size();
    float halfDiffX = getHalfDiffX(points, length, seriesNr);
    for (int i = 0; i < length; i += 2) {
      int index = startIndex + i / 2;
      double value = series.getY(index);
      if (!isNullValue(value)) {
        float x = points.get(i);
        if (mType == Type.DEFAULT) {
          x += seriesIndex * 2 * halfDiffX - (seriesNr - 1.5f) * halfDiffX;
        }
        if (value >= 0) {
          drawText(canvas, getLabel(renderer.getChartValuesFormat(), value), x, points.get(i + 1)
              - renderer.getChartValuesSpacing(), paint, 90);

          //Initially 90 was 0 you can change it according to your requirement

        } else {
          drawText(canvas, getLabel(renderer.getChartValuesFormat(), value), x, points.get(i + 1)
              + renderer.getChartValuesTextSize() + renderer.getChartValuesSpacing() - 3, paint, 90);

        //Initially 90 was 0 you can change it according to your requirement


        }
      }
    }
  }
受保护的void drawChartValuesText(画布、XYSeries系列、SimpleSeries渲染器、,
油漆、列表点、内部序列索引、内部startIndex){
int seriesNr=mDataset.getseriescont();
int length=points.size();
float halfDiffX=getHalfDiffX(点、长度、序列号);
对于(int i=0;i=0){
drawText(画布,getLabel(renderer.getChartValuesFormat(),value),x,points.get(i+1)
-renderer.getChartValuesSpacing(),paint,90);
//最初90是0,您可以根据需要进行更改
}否则{
drawText(画布,getLabel(renderer.getChartValuesFormat(),value),x,points.get(i+1)
+renderer.getChartValuesTextSize()+renderer.getChartValuesSpacing()-3,paint,90);
//最初90是0,您可以根据需要进行更改
}
}
}
}

查看drawText()中两处的更改并查看注释。没有其他方法可以实现您的目标。如果是,请让我知道。

Acharengine的官方源代码在这里:谢谢。它工作得非常好。省去了我很多麻烦。干杯