feat: Scroll now working on both axis and switchable

This commit is contained in:
Florian Bouillon 2023-01-10 17:29:42 +01:00
parent fe35f73887
commit e5c337ee31
5 changed files with 33 additions and 4 deletions

View File

@ -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 {

View File

@ -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 {

View File

@ -36,6 +36,11 @@ sealed interface XAxisInterface {
*/
var labelCount: Int
/**
* is Horizontal Scrolling enabled
*/
var scrollEnabled: Boolean
/**
* run when manually refreshing the system
*

View File

@ -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 {

View File

@ -33,6 +33,11 @@ sealed interface YAxisInterface {
*/
val goalLinePaint: Paint
/**
* is vertical scrolling enabled
*/
var scrollEnabled: Boolean
/**
* run when manually refreshing the system
*