Reputation: 543
I need to repeat similar behavior to Google Fit charts. When chart is pressed or dragging - we show highlighter on chart. Right after finger don't touch chart - remove highlighter. I found "onTap" variable for tap on chart - but it's work only when we tap and then remove finger from screen. But i need to show highlighter right after finger touched chart
Upvotes: 2
Views: 1152
Reputation: 537
The MakerView and OnChartGestureListener can help, onChartGestureEnd tells when should the marker should disappear:
final MyMarkerView marker = new MyMarkerView(this, R.layout.custom_marker_view);
chart.setMarker(marker);
chart.setDrawMarkers(true);
chart.setOnChartGestureListener(new OnChartGestureListener() {
@Override
public void onChartGestureStart(MotionEvent me,
ChartTouchListener.ChartGesture lastPerformedGesture) {
chart.setDrawMarkers(true);
for(int i = 0; i < chart.getLineData().getDataSetCount(); ++i) {
ILineDataSet set = chart.getLineData().getDataSetByIndex(i);
set.setHighlightEnabled(true);
}
// Thanks to Mr. SoulReaver313 !
chart.highlightValue(chart.getHighlightByTouchPoint(me.getX(), me.getY()));
}
@Override
public void onChartGestureEnd(MotionEvent me,
ChartTouchListener.ChartGesture lastPerformedGesture) {
chart.setDrawMarkers(false);
for(int i = 0; i < chart.getLineData().getDataSetCount(); ++i) {
ILineDataSet set = chart.getLineData().getDataSetByIndex(i);
set.setHighlightEnabled(false);
}
chart.invalidate();
}
@Override
public void onChartLongPressed(MotionEvent me) {
}
@Override
public void onChartDoubleTapped(MotionEvent me) {
}
@Override
public void onChartSingleTapped(MotionEvent me) {
}
@Override
public void onChartFling(MotionEvent me1, MotionEvent me2, float velocityX,
float velocityY) {
}
@Override
public void onChartScale(MotionEvent me, float scaleX, float scaleY) {
}
@Override
public void onChartTranslate(MotionEvent me, float dX, float dY) {
}
});
Upvotes: 4