如何在android中创建图像指针线图?

时间:2015-05-22 05:38:53

标签: java android graph

enter image description here

任何人都可以帮我创建像android中的图像一样的折线图。

1 个答案:

答案 0 :(得分:2)

使用AChartEngine,您可以在AchartEngine - XYMultipleSeriesRenderer类中稍作修改后添加图像。与X轴文本标签,Y轴文本标签一起,添加自定义属性以提供位图。

 /** The X axis text labels. */
  private Map<Double, String> mXTextLabels = new HashMap<Double, String>();
  /** The Bitmap corresponding to event. */
  public Map<Double, Bitmap> mEventBitmaps = new HashMap<Double, Bitmap>();

然后在所需图表的绘制方法中,您可以从seriesRenderer中检索相应的位图。

 private void drawBar(Canvas canvas, float xMin, float yMin, float xMax, float yMax, int scale,
      int seriesIndex, Paint paint, double barIndex) {
    SimpleSeriesRenderer renderer = mRenderer.getSeriesRendererAt(seriesIndex);
.......
.......
Bitmap eventflag = mRenderer.getEventBitmap(barIndex);
double offset = Math.round(xMax) - Math.round(xMin) - eventflag.getWidth();
canvas.drawBitmap(eventflag, Math.round(xMin) + (int) offset / 2, Math.round(yMin)
              - (2*eventflag.getHeight()), paint);

在深入研究之前,您必须熟悉AchartEngine中的XYMultipleSeriesRenderer。

最后,在您显示图表的项目类(活动/片段)中,您可以像这样为图中的每个点提供位图。

public XYMultipleSeriesRenderer getBarRenderer() {

        if(list == null || list.isEmpty()){
            return null;
        }

        // Creating a XYMultipleSeriesRenderer to customize the whole chart
        XYMultipleSeriesRenderer multiRenderer = new XYMultipleSeriesRenderer();

        multiRenderer.setXLabels(0);
        /*multiRenderer.setYLabels(0);*/
        for(int i=0; i< list.size();i++){
            ReportsList ma = list.get(i);
            multiRenderer.addXTextLabel(i, ma.getMinutes());  
            multiRenderer.addBarColor(i, "#" + ma.getColor()); 
            String eventType = ma.getEvent();
            int drawableId = getEventBitMap(eventType);
            if(drawableId != -1){
                multiRenderer.addEventBitmap(i, BitmapFactory.decodeResource(getResources(), drawableId));

            }

        }