Android随笔1:自定义圆形头像控件

本文介绍如何在Android中实现自定义圆形头像控件,详细讲解了保持控件宽高一致、图片缩放、圆形绘制的实现思路和具体过程,包括关键代码示例。
摘要由CSDN通过智能技术生成

一、简介

因为项目需求,需要实现圆形头像框,在参考了鸿洋大神的 http://blog.csdn.net/lmj623565791/article/details/41967509 文章之后,通过BitmapShader实现了圆形头像框,下面是效果展示以及具体的实现过程。


二、效果展示



三、实现思路

想要实现圆形头像框,有以下几个注意点:
1.保持控件的宽高一致:因为是圆形头像框,所以需要强行设置控件的height和width一致。
2.缩放图片至合适的大小: 图片的大小可能比我们的控件大,也可能比我们的控件小,需要通过缩放图片的大小以适应我们的控件。
3.在控件区域内绘制圆形头像: 我们不能直接将控件设置为圆形,所以实现圆形头像框实际上就是将图片以圆形的样式绘制在我们的控件上。

所以,只要我们能够实现以上三点,就能够实现圆形头像框的绘制。


四、实现过程


1.保持控件的宽高一致

	@Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
   
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

        // 取view长宽的较小值,除以2作为圆的半径,并重新设置View的大小
        mWidth = Math.min(getMeasuredWidth(), getMeasuredHeight());
        mRadius = mWidth / 2;
        setMeasuredDimension(mWidth, mWidth);
    }

复写onMeasure方法,通过Math.min方法比较获取宽高的较小值后,利用setMeasuredDimension强制使得宽高一致。圆的半径为宽高最小值的1/2。

2.缩放图片至合适的大小:

	/**
     * 获取缩放比例
     */
    private float getScale(Bitmap bmp) {
   
        float scale;
        int bSize = Math.min(bmp.getWidth(), bmp.getHeight());
        scale = mWidth * 1.0f / bSize;
        return scale;
    }

首先,我们要获取图片的缩放比例。在这里,我采用图片宽高的较小值与控件的width作比较(mWidth是计算之后的宽,与高度保持一致大小),因为使用较大值进行缩放之后的图片不能填满我们的控件。

		// shader的变换矩阵,对图片进行缩放
        mMatrix.setScale(scale, scale)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值