TouchEvent 上的 AndroidPlot PieChart return 空段
AndroidPlot PieChart return null Segment on TouchEvent
我正在使用 PieChart 演示,不同之处在于分段是动态加载的,如下面的代码片段所示:
public Segment[] segments;
segments = new Segment[dataList.size()];
int i=0;
for (DataList d: dadosList)
{
segments[i] = new Segment(d.name(),Float.parseFloat(d.value()));
SegmentFormatter sf1 = new SegmentFormatter(Color.parseColor(d.getColor_chart()));
sf1.getLabelPaint().setShadowLayer(3, 0, 0, Color.BLACK);
sf1.getFillPaint().setMaskFilter(emf);
pie.addSegment(segments[i],sf1);
i++;
}
pie.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
PointF click = new PointF(motionEvent.getX(), motionEvent.getY());
Log.d(TAG,"CLICK PIE CHART");
if(pie.getPie().containsPoint(click)) {
Log.d(TAG,"GET PIE");
Segment segment = pie.getRenderer(PieRenderer.class).getContainingSegment(click);
if(segment != null) {
Log.d(TAG,"SEGMENT IS NOT NULL");
final boolean isSelected = getFormatter(segment).getOffset() != 0;
deselectAll();
setSelected(segment, !isSelected);
pie.redraw();
String type = segment.getTitle();
new FetchDataListByTypeTask(type).execute();
}
}
return false;
}
但是当点击第一个 Segment 时,return null Segment。
这是一个错误?还是我做错了什么?
更新
当段大于饼图的 50% 时出现此错误。
这已在 Androidplot 1.5.1 中修复。
我正在使用 PieChart 演示,不同之处在于分段是动态加载的,如下面的代码片段所示:
public Segment[] segments;
segments = new Segment[dataList.size()];
int i=0;
for (DataList d: dadosList)
{
segments[i] = new Segment(d.name(),Float.parseFloat(d.value()));
SegmentFormatter sf1 = new SegmentFormatter(Color.parseColor(d.getColor_chart()));
sf1.getLabelPaint().setShadowLayer(3, 0, 0, Color.BLACK);
sf1.getFillPaint().setMaskFilter(emf);
pie.addSegment(segments[i],sf1);
i++;
}
pie.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
PointF click = new PointF(motionEvent.getX(), motionEvent.getY());
Log.d(TAG,"CLICK PIE CHART");
if(pie.getPie().containsPoint(click)) {
Log.d(TAG,"GET PIE");
Segment segment = pie.getRenderer(PieRenderer.class).getContainingSegment(click);
if(segment != null) {
Log.d(TAG,"SEGMENT IS NOT NULL");
final boolean isSelected = getFormatter(segment).getOffset() != 0;
deselectAll();
setSelected(segment, !isSelected);
pie.redraw();
String type = segment.getTitle();
new FetchDataListByTypeTask(type).execute();
}
}
return false;
}
但是当点击第一个 Segment 时,return null Segment。
这是一个错误?还是我做错了什么?
更新
当段大于饼图的 50% 时出现此错误。
这已在 Androidplot 1.5.1 中修复。