diff --git a/library/src/main/java/com/dzeio/charts/ChartView.kt b/library/src/main/java/com/dzeio/charts/ChartView.kt index bb07e95..fed5dc9 100644 --- a/library/src/main/java/com/dzeio/charts/ChartView.kt +++ b/library/src/main/java/com/dzeio/charts/ChartView.kt @@ -32,10 +32,23 @@ class ChartView @JvmOverloads constructor(context: Context?, attrs: AttributeSet override var padding: Float = 8f private val scroller = ChartScroll(this).apply { - var lastMovement = 0.0 - setOnChartMoved { movementX, _ -> - xAxis.x += (movementX - lastMovement) * xAxis.getDataWidth() / width - lastMovement = movementX.toDouble() + var lastMovementX = 0.0 + var lastMovementY = 0f + setOnChartMoved { movementX, movementY -> + if (xAxis.scrollEnabled) { + xAxis.x += (movementX - lastMovementX) * xAxis.getDataWidth() / width + lastMovementX = movementX.toDouble() + } + + if (yAxis.scrollEnabled) { + val currentYMax = yAxis.getYMax() + val currentYMin = yAxis.getYMin() + val change = (movementY - lastMovementY) * (currentYMax - currentYMin) / height + yAxis.setYMax(currentYMax + change) + yAxis.setYMin(currentYMin + change) + lastMovementY = movementY + } + refresh() } // setOnZoomChanged { diff --git a/library/src/main/java/com/dzeio/charts/axis/XAxis.kt b/library/src/main/java/com/dzeio/charts/axis/XAxis.kt index d79dfdf..d351a7b 100644 --- a/library/src/main/java/com/dzeio/charts/axis/XAxis.kt +++ b/library/src/main/java/com/dzeio/charts/axis/XAxis.kt @@ -41,6 +41,8 @@ class XAxis( override var labelCount: Int = 2 + override var scrollEnabled: Boolean = false + var spacing = 16.0 override val textPaint = Paint().apply { diff --git a/library/src/main/java/com/dzeio/charts/axis/XAxisInterface.kt b/library/src/main/java/com/dzeio/charts/axis/XAxisInterface.kt index e42df54..e109720 100644 --- a/library/src/main/java/com/dzeio/charts/axis/XAxisInterface.kt +++ b/library/src/main/java/com/dzeio/charts/axis/XAxisInterface.kt @@ -36,6 +36,11 @@ sealed interface XAxisInterface { */ var labelCount: Int + /** + * is Horizontal Scrolling enabled + */ + var scrollEnabled: Boolean + /** * run when manually refreshing the system * diff --git a/library/src/main/java/com/dzeio/charts/axis/YAxis.kt b/library/src/main/java/com/dzeio/charts/axis/YAxis.kt index 8d542f2..c8329e0 100644 --- a/library/src/main/java/com/dzeio/charts/axis/YAxis.kt +++ b/library/src/main/java/com/dzeio/charts/axis/YAxis.kt @@ -40,6 +40,10 @@ class YAxis( private var min: Float? = 0f private var max: Float? = null + var drawZeroLine: Boolean = true + + override var scrollEnabled: Boolean = false + private val rect = Rect() override fun setYMin(yMin: Float?): YAxisInterface { diff --git a/library/src/main/java/com/dzeio/charts/axis/YAxisInterface.kt b/library/src/main/java/com/dzeio/charts/axis/YAxisInterface.kt index b82afe2..8f07e2b 100644 --- a/library/src/main/java/com/dzeio/charts/axis/YAxisInterface.kt +++ b/library/src/main/java/com/dzeio/charts/axis/YAxisInterface.kt @@ -33,6 +33,11 @@ sealed interface YAxisInterface { */ val goalLinePaint: Paint + /** + * is vertical scrolling enabled + */ + var scrollEnabled: Boolean + /** * run when manually refreshing the system *