任何人都可以帮我创建像android中的图像一样的折线图。
答案 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));
}
}