App con inicio y base de datos pero sin direccion
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
package com.example.basurapp.views
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Canvas
|
||||
import android.graphics.Color
|
||||
import android.graphics.Paint
|
||||
import android.util.AttributeSet
|
||||
import android.view.View
|
||||
import com.example.basurapp.R
|
||||
|
||||
class TruckProgressView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : View(context, attrs, defStyleAttr) {
|
||||
|
||||
private var stopCount: Int = 4
|
||||
private var truckPosition: Int = 0
|
||||
|
||||
private val linePaint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
|
||||
color = Color.BLACK
|
||||
strokeWidth = 6f
|
||||
}
|
||||
|
||||
private val stopPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
|
||||
color = Color.BLACK
|
||||
style = Paint.Style.FILL
|
||||
}
|
||||
|
||||
private val truckBodyPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
|
||||
color = context.getColor(R.color.green_primary)
|
||||
style = Paint.Style.FILL
|
||||
}
|
||||
|
||||
private val truckCabinPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
|
||||
color = context.getColor(R.color.green_dark)
|
||||
style = Paint.Style.FILL
|
||||
}
|
||||
|
||||
private val wheelPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
|
||||
color = Color.BLACK
|
||||
style = Paint.Style.FILL
|
||||
}
|
||||
|
||||
fun setRoute(stops: Int, position: Int) {
|
||||
stopCount = stops.coerceAtLeast(2)
|
||||
truckPosition = position.coerceIn(0, stopCount - 1)
|
||||
invalidate()
|
||||
}
|
||||
|
||||
override fun onDraw(canvas: Canvas) {
|
||||
super.onDraw(canvas)
|
||||
|
||||
val w = width.toFloat()
|
||||
val h = height.toFloat()
|
||||
val padding = 40f
|
||||
val lineY = h / 2 + 20
|
||||
|
||||
// Línea horizontal
|
||||
canvas.drawLine(padding, lineY, w - padding, lineY, linePaint)
|
||||
|
||||
// Paradas (círculos)
|
||||
val step = (w - padding * 2) / (stopCount - 1)
|
||||
for (i in 0 until stopCount) {
|
||||
val cx = padding + step * i
|
||||
canvas.drawCircle(cx, lineY, 14f, stopPaint)
|
||||
}
|
||||
|
||||
// Camión sobre la parada actual
|
||||
val truckX = padding + step * truckPosition
|
||||
drawTruck(canvas, truckX, lineY - 30f)
|
||||
}
|
||||
|
||||
private fun drawTruck(canvas: Canvas, x: Float, y: Float) {
|
||||
// Caja del camión
|
||||
canvas.drawRect(x - 30f, y - 20f, x + 10f, y + 10f, truckBodyPaint)
|
||||
// Cabina
|
||||
canvas.drawRect(x + 10f, y - 10f, x + 30f, y + 10f, truckCabinPaint)
|
||||
// Ruedas
|
||||
canvas.drawCircle(x - 20f, y + 12f, 6f, wheelPaint)
|
||||
canvas.drawCircle(x + 20f, y + 12f, 6f, wheelPaint)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user