我是Android和iOS内置应用程序的非开发人员产品经理。我们在iOS中有一个条形图,它提供了图形内容的文本。它显示每个条形的总计,以及每个条形的每个分段的百分比。
在Android中,使用AndroidPlot(我明白了)我们只显示具有不同颜色段的条形图,而不显示百分比总数或总计。开发商告诉我,我们无法展示更多信息。
我会在这里显示图片,但stackoverflow告诉我,我没有足够的声誉点来做这件事。我已经使用图片https://www.dropbox.com/sh/2uocm5bn79rerbe/AAB7s9QEEYIRIgXhKbUAaOyDa
创建了一个指向我的Dropbox的链接是否可以使用AndroidPlot模拟此iOS图表或至少向最终用户表示相同的信息?
答案 0 :(得分:1)
您的开发人员或多或少是正确的,但您有选择权。默认情况下,Androidplot的BarRenderer仅在每个条形图的顶部提供一个可选标签,在iOS图像中,该标签由“可用”,“新”,“已使用”和“租用”标签占据。该标签似乎在您的Android屏幕截图中未使用,因此一个选项就是利用这些标签显示总计。
只要将iOS实现与Androidplot完全匹配,缺少的部分就是能够在每个条形的一侧水平和垂直添加其他标签。您可以通过覆盖它的onRender(...)方法来扩展BarRenderer。 Here's a link为您的开发人员显示他希望在代码中修改onRender(...)的位置。
我建议这些修改添加垂直标签:
执行上述操作后,添加水平“%”标签应该是不言而喻的,但如果遇到麻烦,请随时提出更多问题。
更新: 这是上面的一个非常基本的实现。首先是drawVerticalText方法:
/**
*
* @param canvas
* @param paint paint used to draw the text
* @param text the text to be drawn
* @param x x-coord of where the text should be drawn
* @param y y-coord of where the text should be drawn
*/
protected void drawVerticalText(Canvas canvas, Paint paint, String text, float x, float y) {
// record the state of the canvas before the draw:
canvas.save(Canvas.ALL_SAVE_FLAG);
// center the canvas on our drawing coords:
canvas.translate(x, y);
// rotate into the desired "vertical" orientation:
canvas.rotate(-90);
// draw the text; note that we are drawing at 0, 0 and *not* x, y.
canvas.drawText(text, 0, 0, paint);
// restore the canvas state:
canvas.restore();
}
剩下的就是在必要时调用此方法。在您的情况下,每个BarGroup应该执行一次,并且应该在y轴上保持一致的位置。我将以下代码添加到BarRenderer.onRender(...)中的STACKED案例中,紧接在中断之上:
// needed some paint to draw with so I'll just create it here for now:
Paint paint = new Paint();
paint.setColor(Color.WHITE);
paint.setTextSize(PixelUtils.spToPix(20));
drawVerticalText(
canvas,
paint,
"test",
barGroup.leftX,
basePositionY - PixelUtils.dpToPix(50)); // offset so the text doesnt intersect with the origin
这是结果的截图...对不起它太大了:
就个人而言,我并不关心这些垂直标签的固定y位置,而是希望它们沿着条形的上部浮动。为了实现这一点,我将drawVerticalText(...)的调用修改为如下所示:
// needed some paint to draw with so I'll just create it here for now:
Paint paint = new Paint();
paint.setColor(Color.WHITE);
paint.setTextSize(PixelUtils.spToPix(20));
// right-justify the text so it doesnt extend beyond the top of the bar
paint.setTextAlign(Paint.Align.RIGHT);
drawVerticalText(
canvas,
paint,
"test",
barGroup.leftX,
bottom);
产生这个结果: