自定义实现:头像上传View

 看看效果:

自定义实现:头像上传View_第1张图片

非常简单:代码直接贴在下面,有需要的直接带走


/**
 * 带有自定义字体TextView。
 */
class EditAvatarUploadView : AppCompatTextView {
    lateinit var paint:Paint

    constructor(context: Context) : this(context, null){
        iniPaint()
    }

    constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0){
        iniPaint()
    }

    constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
        iniPaint()
    }


    override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) {
        super.onLayout(changed, left, top, right, bottom)

        iniPaint()
    }

    private fun iniPaint() {
        paint = Paint()
        paint.setAntiAlias(true)
        paint.setColor(Color.LTGRAY)
        paint.setStyle(Paint.Style.STROKE)
        paint.textSize= 20F
    }


    override fun onDraw(canvas: Canvas?) {
        super.onDraw(canvas)
        //得到屏幕宽高
        var width = width
        var radius = width - 300 / 2
        var height = height


        canvas!!.drawCircle((width / 2).toFloat(), (height / 2).toFloat(), radius.toFloat(), paint)
        //绘制一条直线(两点确定一线)
       /* paint.setColor(Color.RED)
        canvas.drawLine(5F, (height/2+50).toFloat(), width.toFloat()-5, (height/2+50).toFloat(), paint)*/

        drawMask(canvas)
        drawCam(canvas)
        drawText(canvas)

    }

    fun drawMask(canvas: Canvas) {
        val bitmap =
            BitmapFactory.decodeResource(context.getResources(), R.mipmap.login_upload_half_mask)
        val dst = Rect(6, 60, 293, 160)
        /***********绘制圆弧
         * 矩形的宽度width=C(right)-A(left),高度height=D(bottom)-B(top)*/
        canvas.translate(0F, (width/2-10).toFloat())
        val rectf_head = RectF(1f, 0f, 291f, 207f) //确定外切矩形范围

       rectf_head.offset(5f, 90f) //使rectf_head所确定的矩形向右偏移100像素,向下偏移20像素
        //开始角度(以时钟3点的方向为0°,逆时针为正方向)
        //(以时钟3点的方向为0°,逆时针为正方向)
        //canvas.drawArc(rectf_head, 0F, 180F, false, paint) //绘制圆弧,不含圆心
        canvas.drawBitmap(bitmap, null, dst, null);

    }

    fun drawCam(canvas: Canvas) {
        val bitmap =
            BitmapFactory.decodeResource(context.getResources(), R.mipmap.login_edit_camera_icon)
        val dst = Rect(10, 60, 50, 100)
        dst.offset(70, 20)
        canvas.drawBitmap(bitmap, null, dst, null);

    }

    fun drawText(canvas: Canvas) {

        val text = "点击上传"
        paint.setColor(Color.WHITE)
        //x表示文本原点的x坐标;y表示文本基线的y坐标。
        canvas.drawText(text, 130F, 110F, paint)

    }

}

代码下载地址:https://download.csdn.net/download/weixin_38699155/88344230

你可能感兴趣的:(android,javascript,开发语言)