mirror of
https://github.com/dzeiocom/charts.git
synced 2025-04-23 19:12:10 +00:00
feat: Scroll now working on both axis and switchable
This commit is contained in:
parent
fe35f73887
commit
e5c337ee31
@ -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 {
|
||||
|
@ -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 {
|
||||
|
@ -36,6 +36,11 @@ sealed interface XAxisInterface {
|
||||
*/
|
||||
var labelCount: Int
|
||||
|
||||
/**
|
||||
* is Horizontal Scrolling enabled
|
||||
*/
|
||||
var scrollEnabled: Boolean
|
||||
|
||||
/**
|
||||
* run when manually refreshing the system
|
||||
*
|
||||
|
@ -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 {
|
||||
|
@ -33,6 +33,11 @@ sealed interface YAxisInterface {
|
||||
*/
|
||||
val goalLinePaint: Paint
|
||||
|
||||
/**
|
||||
* is vertical scrolling enabled
|
||||
*/
|
||||
var scrollEnabled: Boolean
|
||||
|
||||
/**
|
||||
* run when manually refreshing the system
|
||||
*
|
||||
|
Loading…
x
Reference in New Issue
Block a user