feat: Allow to switch line/points/dottedline display (#56)

This commit is contained in:
Florian Bouillon 2023-02-28 16:47:39 +01:00 committed by GitHub
parent 6ab36e9ade
commit e1946e98d0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 84 additions and 4 deletions

View File

@ -24,7 +24,7 @@ publishing {
} }
android { android {
namespace = "${group}.${artifact}" namespace = "$group.$artifact"
compileSdk = 33 compileSdk = 33
buildToolsVersion = "33.0.0" buildToolsVersion = "33.0.0"

View File

@ -5,6 +5,7 @@ import android.graphics.Color
import android.graphics.Paint import android.graphics.Paint
import android.graphics.RectF import android.graphics.RectF
import com.dzeio.charts.ChartViewInterface import com.dzeio.charts.ChartViewInterface
import com.dzeio.charts.utils.drawDottedLine
import kotlin.math.abs import kotlin.math.abs
class LineSerie( class LineSerie(
@ -25,6 +26,21 @@ class LineSerie(
strokeWidth = 5f strokeWidth = 5f
} }
/**
* is the line dotted
*/
var dotted = false
/**
* do we display the points?
*/
var displayPoints = true
/**
* do we display the lines
*/
var displayLines = true
val textPaint = Paint().apply { val textPaint = Paint().apply {
isAntiAlias = true isAntiAlias = true
color = Color.BLACK color = Color.BLACK
@ -98,12 +114,12 @@ class LineSerie(
) )
// draw smol point // draw smol point
if (drawableSpace.contains(posX, top)) { if (drawableSpace.contains(posX, top) && displayPoints) {
canvas.drawCircle(posX, top, paint.strokeWidth, paint) canvas.drawCircle(posX, top, paint.strokeWidth, paint)
} }
// draw line // draw line
if (doDraw && previousPosY != null && previousPosX != null) { if (doDraw && previousPosY != null && previousPosX != null && displayLines) {
var startX = previousPosX var startX = previousPosX
var startY = previousPosY var startY = previousPosY
var stopX = posX var stopX = posX
@ -165,7 +181,24 @@ class LineSerie(
debugPaint.color = Color.RED debugPaint.color = Color.RED
} }
} }
canvas.drawLine(startX, startY, stopX, stopY, if (view.debug) debugPaint else linePaint) if (dotted) {
canvas.drawDottedLine(
startX,
startY,
stopX,
stopY,
32f,
if (view.debug) debugPaint else linePaint
)
} else {
canvas.drawLine(
startX,
startY,
stopX,
stopY,
if (view.debug) debugPaint else linePaint
)
}
} }
previousPosX = posX previousPosX = posX
previousPosY = top previousPosY = top

View File

@ -138,6 +138,23 @@ class ChartFragment : Fragment() {
chart.refresh() chart.refresh()
} }
} }
if (args.chartType === "linechart") {
binding.lineItem.visibility = View.VISIBLE
binding.lineDisplayLines.setOnCheckedChangeListener { _, isChecked ->
chart.series.forEach { (it as LineSerie).displayLines = isChecked }
chart.refresh()
}
binding.lineDisplayPoints.setOnCheckedChangeListener { _, isChecked ->
chart.series.forEach { (it as LineSerie).displayPoints = isChecked }
chart.refresh()
}
binding.lineDotted.setOnCheckedChangeListener { _, isChecked ->
chart.series.forEach { (it as LineSerie).dotted = isChecked }
chart.refresh()
}
}
} }
private var lastGenerated = 0 private var lastGenerated = 0

View File

@ -209,6 +209,36 @@
</LinearLayout> </LinearLayout>
<LinearLayout
android:id="@+id/line_item"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.google.android.material.materialswitch.MaterialSwitch
android:id="@+id/line_dotted"
android:text="Switch Dotted line"
android:checked="false"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<com.google.android.material.materialswitch.MaterialSwitch
android:id="@+id/line_display_points"
android:text="Display points"
android:checked="true"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<com.google.android.material.materialswitch.MaterialSwitch
android:id="@+id/line_display_lines"
android:text="Display lines"
android:checked="true"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout> </LinearLayout>
</ScrollView> </ScrollView>