/**
*
* 日图表
* zrj 2020/9/1
*/
class BODayChart(context: Context, attrs: AttributeSet?) : View(context, attrs) {
//屏幕宽高
private var scrWidth = 0f
private var scrHeight = 0f
private var xData: Array<String> = arrayOf("00:00", "06:00", "12:00", "18:00", "00:00")
private var yData: Array<Int> = arrayOf(100, 90, 85, 80, 70)
private var boData = mutableListOf<Int>()
private lateinit var paintLine: Paint
private lateinit var paintGradientLine: Paint
private lateinit var paintXText: Paint
private lateinit var paintYText: Paint
private lateinit var paintPillar: Paint
private lateinit var paintRound: Paint
private lateinit var paintBessel: Paint
private var animDuration = 500L
private var anim: ValueAnimator? = null
private var mPercent = 0f //动画进度
private var xSlider = 0f //滑块的x轴位置
private var mPath: Path
private val curveCircleRadius = 12f.dp
// the coordinates of the first curve
private val mFirstCurveStartPoint = Point()
private val mFirstCurveEndPoint = Point()
private val mFirstCurveControlPoint1 = Point()
private val mFirstCurveControlPoint2 = Point()
//the coordinates of the second curve
private var mSecondCurveStartPoint = Point()
private val mSecondCurveEndPoint = Point()
private val mSecondCurveControlPoint1 = Point()
private val mSecondCurveControlPoint2 = Point()
init {
setLayerType(LAYER_TYPE_SOFTWARE, null)
mPath = Path()
initPaint()
}
/**
* 初始化画笔
*/
private fun initPaint() {
paintLine = Paint()
paintLine.style = Paint.Style.STROKE
paintLine.strokeWidth = 1f
paintLine.color = context.colorCompat(R.color.e6e6e6_2e2e2e)
paintGradientLine = Paint()
paintGradientLine.style = Paint.Style.STROKE
paintGradientLine.strokeWidth = 2f
paintXText = Paint()
paintXText.isAntiAlias = true
paintXText.strokeWidth = 1f
paintXText.textSize = 12f.sp
paintXText.textAlign = Paint.Align.CENTER
paintXText.color = context.colorCompat(R.color.color_on_surface)
paintYText = Paint()
paintYText.isAntiAlias = true
paintYText.textSize = 12f.sp
paintYText.strokeWidth = 1f
paintYText.textAlign = Paint.Align.RIGHT
paintYText.color = context.colorCompat(R.color.secondary_666666_808080)
paintPillar = Paint()
paintPillar.style = Paint.Style.FILL
paintPillar
Android运动健康血氧自定义控件
最新推荐文章于 2025-02-11 22:04:59 发布