美文网首页
Android 进度条

Android 进度条

作者: ElonYanJ | 来源:发表于2018-11-24 11:51 被阅读9次

    比较简单 但是作为kotlin练手

    
    import android.content.Context
    import android.graphics.*
    import android.util.AttributeSet
    import android.view.View
    import com.loan.market.R
    import com.loan.market.tools.ScreenTools
    
    class ProgressBeautifulView @JvmOverloads constructor(context: Context, attributeSet: AttributeSet? = null, defStyleAttr: Int = 0) :
            View(context, attributeSet, defStyleAttr) {
        private var rectF: RectF? = null
        private var rectFInner: RectF? = null
        private var paint: Paint = Paint(Paint.ANTI_ALIAS_FLAG)
        private var paintInner: Paint = Paint(Paint.ANTI_ALIAS_FLAG)
        private var paintText: Paint = Paint(Paint.ANTI_ALIAS_FLAG)
        private var widthSize: Int = 0
        private var heightSize: Int = 0
        private var strokeWid: Float = ScreenTools.dp2px(1f).toFloat()
    
        private var innerLength: Float = 0f
        public var nowPercent: Float = 0.1f
        public var nowNumber: String = "10%"
    
        init {
            paint.strokeCap = Paint.Cap.ROUND
            paint.isDither = true
            paint.strokeWidth = strokeWid
            paint.style = Paint.Style.STROKE
            paint.color = context.resources.getColor(R.color.popup_outline)
    
            paintInner.strokeCap = Paint.Cap.ROUND
            paintInner.isDither = true
            paintInner.strokeWidth = strokeWid
            paintInner.style = Paint.Style.FILL
            paintInner.color = context.resources.getColor(R.color.popup_inner)
    
            paintText.strokeCap = Paint.Cap.ROUND
            paintText.isDither = true
            paintText.textSize = ScreenTools.sp2px(14f).toFloat()
            paintText.style = Paint.Style.FILL
            paintText.textAlign = Paint.Align.CENTER
            paintText.color = context.resources.getColor(R.color.main_loan_list)
        }
    
        override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
            super.onSizeChanged(w, h, oldw, oldh)
            widthSize = w
            heightSize = h
            rectF = RectF(0f + strokeWid / 2f, 0f + strokeWid / 2f, w.toFloat() - strokeWid / 2f, h.toFloat() - strokeWid / 2f)
            innerLength = widthSize - ScreenTools.dp2px(6f).toFloat() * 2
        }
    
    
        override fun onDraw(canvas: Canvas) {
            super.onDraw(canvas)
            rectFInner = RectF(ScreenTools.dp2px(6f).toFloat(), ScreenTools.dp2px(8f).toFloat(), ScreenTools.dp2px(6f).toFloat() + innerLength * nowPercent, heightSize - ScreenTools.dp2px(8f).toFloat())
            canvas.drawRoundRect(rectFInner, ScreenTools.dp2px(10f).toFloat(), ScreenTools.dp2px(10f).toFloat(), paintInner)
            canvas.drawRoundRect(rectF, ScreenTools.dp2px(20f).toFloat(), ScreenTools.dp2px(20f).toFloat(), paint)
    
            var fm: Paint.FontMetrics = paintText.getFontMetrics();
            canvas.drawText(nowNumber.toString(), widthSize / 2f, heightSize / 2f - (fm.descent - (-fm.ascent + fm.descent) / 2), paintText)
    
        }
    }
    
    

    相关文章

      网友评论

          本文标题:Android 进度条

          本文链接:https://www.haomeiwen.com/subject/adbeqqtx.html