读书人

AChartEngine (1) 事件处理 添加坐标

发布时间: 2012-11-16 14:12:14 作者: rapoo

AChartEngine (一) 事件处理 添加坐标/标签 点击效果

由于项目需要,需要对图表中的label设置点击事件,可是google给的包没有实现这功能。看来得靠自己了!

慢慢看源码吧~

关于AChartEnging的事件,使用这个组件时大致有一下几个设置:

?

...  clickableAreas = new HashMap<Integer, List<ClickableArea>>(); //sLength = series.size();遍历几条线    for (int i = 0; i < sLength; i++) {...    //遍历线中的每个点    for (Entry<Double, Double> value : range.entrySet()) {    ...      values.add(value.getKey());        values.add(value.getValue());     //把坐标值转换成屏幕中像素坐标        if (!isNullValue(yValue)) {          points.add((float) (left + xPixelsPerUnit[scale] * (xValue - minX[scale])));          points.add((float) (bottom - yPixelsPerUnit[scale] * (yValue - minY[scale])));     ...     //关键的来了,生成点击区域     ClickableArea[] clickableAreasForSubSeries = clickableAreasForPoints(                MathHelper.getFloats(points), MathHelper.getDoubles(values), yAxisValue, i,                startIndex);     ...    }      clickableAreas.put(i, clickableArea); //clickableAreas是一个域,保存所有可点击系列}}
?

?

查看上面clickableAreasForPoints方法,发现其实就是在坐标像素点处建一个变长为render.getSelectableBuffer()的矩形。

由此很容易想到解决方案:

?

?

在x轴标签处创建相应的可点击矩形,添加到clickableAreas中即可

?

这样解决的方法就有很多了,比较简单的方法就是在y轴最小值下面添加一项。。。。。(由于我的图标不用提供缩放和移动,并且最小值固定为0),只要 vYalues = -5d,添加一项即可。

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

读书人网 >移动开发

热点推荐