Added feature to disable zooming the chart via double-tap (issue #96).
diff --git a/MPChartLib/src/com/github/mikephil/charting/charts/BarLineChartBase.java b/MPChartLib/src/com/github/mikephil/charting/charts/BarLineChartBase.java
index 0808527..ee744ed 100644
--- a/MPChartLib/src/com/github/mikephil/charting/charts/BarLineChartBase.java
+++ b/MPChartLib/src/com/github/mikephil/charting/charts/BarLineChartBase.java
@@ -79,6 +79,9 @@
*/
protected boolean mPinchZoomEnabled = false;
+ /** flat that indicates if double tap zoom is enabled or not */
+ protected boolean mDoubleTapToZoomEnabled = true;
+
/** if true, dragging / scaling is enabled for the chart */
protected boolean mDragScaleEnabled = true;
@@ -279,7 +282,7 @@
public void notifyDataSetChanged() {
if (!mFixedYValues) {
prepare();
-// prepareContentRect();
+ // prepareContentRect();
prepareMatrixValuePx();
} else {
calcMinMax(mFixedYValues);
@@ -399,17 +402,19 @@
mLegend.setOffsetLeft(mOffsetLeft);
prepareContentRect();
-
+
prepareMatrixValuePx();
-// float scaleX = (float) ((getWidth() - mOffsetLeft - mOffsetRight) / mDeltaX);
-// float scaleY = (float) ((getHeight() - mOffsetBottom - mOffsetTop) / mDeltaY);
-//
-// Matrix val = new Matrix();
-// val.postTranslate(0, -mYChartMin);
-// val.postScale(scaleX, -scaleY);
-//
-// mMatrixValueToPx.set(val);
+ // float scaleX = (float) ((getWidth() - mOffsetLeft - mOffsetRight) /
+ // mDeltaX);
+ // float scaleY = (float) ((getHeight() - mOffsetBottom - mOffsetTop) /
+ // mDeltaY);
+ //
+ // Matrix val = new Matrix();
+ // val.postTranslate(0, -mYChartMin);
+ // val.postScale(scaleX, -scaleY);
+ //
+ // mMatrixValueToPx.set(val);
Matrix offset = new Matrix();
// offset.postTranslate(mOffsetLeft, getHeight() - mOffsetBottom);
@@ -640,14 +645,14 @@
drawXLabels(getHeight() - mOffsetBottom + mXLabels.mLabelHeight + yoffset * 1.5f);
- } else if(mXLabels.getPosition() == XLabelPosition.BOTTOM_INSIDE) {
-
+ } else if (mXLabels.getPosition() == XLabelPosition.BOTTOM_INSIDE) {
+
drawXLabels(getHeight() - getOffsetBottom() - yoffset);
-
- } else if(mXLabels.getPosition() == XLabelPosition.TOP_INSIDE) {
-
+
+ } else if (mXLabels.getPosition() == XLabelPosition.TOP_INSIDE) {
+
drawXLabels(getOffsetTop() + yoffset + mXLabels.mLabelHeight);
-
+
} else { // BOTH SIDED
drawXLabels(getOffsetTop() - 7);
@@ -1092,15 +1097,15 @@
save.set(mMatrixTouch);
float[] vals = new float[9];
-
+
save.getValues(vals);
-
+
// reset all translations and scaling
vals[Matrix.MTRANS_X] = 0f;
vals[Matrix.MTRANS_Y] = 0f;
vals[Matrix.MSCALE_X] = 1f;
vals[Matrix.MSCALE_Y] = 1f;
-
+
save.setValues(vals);
refreshTouch(save);
@@ -1475,6 +1480,25 @@
}
/**
+ * Set this to true to enable zooming in by double-tap on the chart.
+ * Default: enabled
+ *
+ * @param enabled
+ */
+ public void setDoubleTapToZoomEnabled(boolean enabled) {
+ mDoubleTapToZoomEnabled = enabled;
+ }
+
+ /**
+ * Returns true if zooming via double-tap is enabled false if not.
+ *
+ * @return
+ */
+ public boolean isDoubleTapToZoomEnabled() {
+ return mDoubleTapToZoomEnabled;
+ }
+
+ /**
* if set to true, the vertical grid will be drawn, default: true
*
* @param enabled
diff --git a/MPChartLib/src/com/github/mikephil/charting/data/BarLineScatterCandleRadarData.java b/MPChartLib/src/com/github/mikephil/charting/data/BarLineScatterCandleRadarData.java
index 6366819..aa3397b 100644
--- a/MPChartLib/src/com/github/mikephil/charting/data/BarLineScatterCandleRadarData.java
+++ b/MPChartLib/src/com/github/mikephil/charting/data/BarLineScatterCandleRadarData.java
@@ -6,11 +6,12 @@
import java.util.ArrayList;
/**
- * Baseclass for all Line, Bar and ScatterData.
+ * Baseclass for all Line, Bar and ScatterData. Supports LimitLines.
*
* @author Philipp Jahoda
*/
-public abstract class BarLineScatterCandleRadarData<T extends BarLineScatterCandleRadarDataSet<? extends Entry>> extends ChartData<T> {
+public abstract class BarLineScatterCandleRadarData<T extends BarLineScatterCandleRadarDataSet<? extends Entry>>
+ extends ChartData<T> {
/** array of limit-lines that are set for this data object */
private ArrayList<LimitLine> mLimitLines;
@@ -24,7 +25,7 @@
}
/**
- * Adds a new limit line to the data.
+ * Adds a new LimitLine to the data.
*
* @param limitLine
*/
@@ -51,10 +52,11 @@
*/
public void resetLimitLines() {
mLimitLines = null;
+ calcMinMax(mDataSets);
}
/**
- * Returns the limitline array of this data object.
+ * Returns the LimitLine array of this data object.
*
* @return
*/
@@ -63,10 +65,26 @@
}
/**
+ * Returns the LimitLine from the limitlines array at the specified index.
+ *
+ * @param index
+ * @return
+ */
+ public LimitLine getLimitLine(int index) {
+ if (mLimitLines == null || mLimitLines.size() <= index)
+ return null;
+ else
+ return mLimitLines.get(index);
+ }
+
+ /**
* Updates the min and max y-value according to the set limits.
*/
private void updateMinMax() {
+ if (mLimitLines == null)
+ return;
+
for (int i = 0; i < mLimitLines.size(); i++) {
LimitLine l = mLimitLines.get(i);
diff --git a/MPChartLib/src/com/github/mikephil/charting/listener/BarLineChartTouchListener.java b/MPChartLib/src/com/github/mikephil/charting/listener/BarLineChartTouchListener.java
index 2236da3..f47a487 100644
--- a/MPChartLib/src/com/github/mikephil/charting/listener/BarLineChartTouchListener.java
+++ b/MPChartLib/src/com/github/mikephil/charting/listener/BarLineChartTouchListener.java
@@ -397,24 +397,30 @@
@Override
public boolean onDoubleTap(MotionEvent e) {
+
+ // check if double-tap zooming is enabled
+ if(mChart.isDoubleTapToZoomEnabled()) {
+
+ PointF trans = getTrans(e.getX(), e.getY());
- PointF trans = getTrans(e.getX(), e.getY());
+ mChart.zoomIn(trans.x, trans.y);
- mChart.zoomIn(trans.x, trans.y);
-
- Log.i("BarlineChartTouch", "Double-Tap, Zooming In, x: " + trans.x + ", y: " + trans.y);
+ Log.i("BarlineChartTouch", "Double-Tap, Zooming In, x: " + trans.x + ", y: " + trans.y);
+ }
return super.onDoubleTap(e);
}
@Override
public void onLongPress(MotionEvent e) {
+
+ mChart.fitScreen();
- PointF trans = getTrans(e.getX(), e.getY());
-
- mChart.zoomOut(trans.x, trans.y);
-
- Log.i("BarlineChartTouch", "Longpress, Zooming Out, x: " + trans.x + ", y: " + trans.y);
+// PointF trans = getTrans(e.getX(), e.getY());
+//
+// mChart.zoomOut(trans.x, trans.y);
+//
+// Log.i("BarlineChartTouch", "Longpress, Zooming Out, x: " + trans.x + ", y: " + trans.y);
};
@Override
diff --git a/MPChartLib/src/com/github/mikephil/charting/utils/LimitLine.java b/MPChartLib/src/com/github/mikephil/charting/utils/LimitLine.java
index a3d2396..f60ecb7 100644
--- a/MPChartLib/src/com/github/mikephil/charting/utils/LimitLine.java
+++ b/MPChartLib/src/com/github/mikephil/charting/utils/LimitLine.java
@@ -52,7 +52,7 @@
public void setLineWidth(float width) {
if (width < 0.2f)
- width = 0.5f;
+ width = 0.2f;
if (width > 12.0f)
width = 12.0f;
mLineWidth = Utils.convertDpToPixel(width);