美文网首页
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)

    }
}

相关文章

  • 控件 - ProgressBar

    ProgressBar 进度条 进度条 属性 android:id:ID,唯一标识符。 android:layou...

  • ProgressBar进度条

    SeekBar :搜寻进度条RatingBar:评价进度条 style="?android:attr/progre...

  • Android进度条

    Android进度条 不同的进度条显示结果: demo xml代码: 二.模拟进度条加载过程:运行展示图: xml...

  • Android之进度条控件和常用资源分类总结

    1 基本UI(二) 1.1进度条 1.1.1 【 常用属性: style进度条样式 Android:max进度...

  • SeekBar

    Android-SeekBar进度条的使用Android控件与布局——基础控件SeekBar

  • 自定义进度条

    1.自定义进度条UI 2.进度条动效 Animate ProgressBar update in Android

  • 进度条使用

    目录 ProgressBar(进度条) ProgressBar是Android下的进度条,也是为数不多的直接继承于...

  • ProgressBar的美化

    横向进度条 style="?android:attr/progressBarStyleHorizontal"制定进...

  • SeekBar自定义样式最优实现

    1. 布局文件 android:thumb为滑块的样式 android:progressDrawable为进度条样...

  • Android自定义圆形进度条学习

    Android中圆形进度条的应用还是挺多的,最近学习实现了圆形进度条。 思路 要实现圆形进度条, 首先要画灰色背景...

网友评论

      本文标题:Android 进度条

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