大佬教程收集整理的这篇文章主要介绍了Android Studio实现带边框的圆形头像,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
本文实例为大家分享了Android studio实现带边框的圆形头像的具体代码,供大家参考,具体内容如下
(没有边框的)
(有边框的)
1、创建自定义ImagView控件
(1)、没有边框的
package chenglong.activitytest.pENGIntohospital.utils; import android.content.Context; import android.graphics.bitmap; import android.graphics.bitmapShader; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.Shader; import android.graphics.drawable.bitmapDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.widget.ImageView; /** * * 圆形图片 * Created by LICHENGLONG on 2017-10-09. */ public class mine_ImageViewPlus extends ImageView{ private Paint mPaintBitmap = new Paint(Paint.ANTI_ALIAS_FLAG); private Paint mPaintBorder = new Paint(Paint.ANTI_ALIAS_FLAG); private Bitmap mRawBitmap; private BitmapShader mShader; private Matrix mMatrix = new Matrix(); private float mBorderWidth = dip2px(15); privatE int mBorderColor = 0x80bebebe; public mine_ImageViewPlus(Context context,AttributeSet attrs) { super(context,attrs); } @Override protected void onDraw(Canvas canvas) { Bitmap rawBitmap = getBitmap(getDrawable()); if (rawBitmap != null){ int viewWidth = getWidth(); int viewHeight = getHeight(); int viewMinSize = Math.min(viewWidth,viewHeight); float dstWidth = viewMinSize; float dstHeight = viewMinSize; if (mShader == null || !rawBitmap.equals(mRawBitmap)){ mRawBitmap = rawBitmap; mShader = new BitmapShader(mRawBitmap,Shader.TileMode.CLAMP,Shader.TileMode.CLAMp); } if (mShader != null){ mMatrix.setScale((dstWidth - mBorderWidth * 2) / rawBitmap.getWidth(),(dstHeight - mBorderWidth * 2) / rawBitmap.getHeight()); mShader.setLocalMatrix(mMatriX); } mPaintBitmap.setShader(mShader); mPaintBorder.setStyle(Paint.Style.stroke); mPaintBorder.setstrokeWidth(mBorderWidth); mPaintBorder.setColor(mBorderColor); float radius = viewMinSize / 2.0f; canvas.drawCircle(radius,radius,radius - mBorderWidth / 2.0f,mPaintBorder); canvas.translate(mBorderWidth,mBorderWidth); canvas.drawCircle(radius - mBorderWidth,radius - mBorderWidth,mPaintBitmap); } else { super.onDraw(canvas); } } private Bitmap getBitmap(Drawable drawablE){ if (drawable instanceof BitmapDrawablE){ return ((BitmapDrawablE)drawablE).getBitmap(); } else if (drawable instanceof ColorDrawablE){ Rect rect = drawable.getBounds(); int width = rect.right - rect.left; int height = rect.bottom - rect.top; int color = ((ColorDrawablE)drawablE).getColor(); Bitmap bitmap = Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); canvas.drawARGB(Color.alpha(color),Color.red(color),Color.green(color),Color.blue(color)); return bitmap; } else { return null; } } privatE int dip2px(int dipVal) { float scale = getresources().getDisplaymetrics().density; return (int)(dipVal * scale + 0.5f); } }
(2)、有边框的
package chenglong.activitytest.pENGIntohospital.utils; import android.content.Context; import android.graphics.bitmap; import android.graphics.bitmapShader; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.Shader; import android.graphics.drawable.bitmapDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.widget.ImageView; /** * * 带边框的圆形图片 * Created by LICHENGLONG on 2017-10-09. */ public class ImageViewPlus extends ImageView{ private Paint mPaintBitmap = new Paint(Paint.ANTI_ALIAS_FLAG); private Paint mPaintBorder = new Paint(Paint.ANTI_ALIAS_FLAG);// private Bitmap mRawBitmap; private BitmapShader mShader; private Matrix mMatrix = new Matrix(); private float mBorderWidth = dip2px(15); privatE int mBorderColor = 0xFF0080FF;//外边框的颜色 public ImageViewPlus(Context context,(dstHeight - mBorderWidth * 2) / rawBitmap.getHeight()); mShader.setLocalMatrix(mMatriX); } mPaintBitmap.setShader(mShader); mPaintBorder.setStyle(Paint.Style.stroke); mPaintBorder.setstrokeWidth(mBorderWidth / 5.0f);//外边框的大小 mPaintBorder.setColor(mBorderColor);//添加外边框 float radius = viewMinSize / 2.0f; canvas.drawCircle(radius,radius - mBorderWidth / 6.0f,Color.blue(color)); return bitmap; } else { return null; } } privatE int dip2px(int dipVal) { float scale = getresources().getDisplaymetrics().density; return (int)(dipVal * scale + 0.5f); } }
<chenglong.activitytest.pENGIntohospital.utils.ImageViewPlus android:id="@+id/mine_iv_headporTrait" android:layout_width="150dp" android:layout_height="150dp" android:src="@mipmap/hospital" />
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
以上是大佬教程为你收集整理的Android Studio实现带边框的圆形头像全部内容,希望文章能够帮你解决Android Studio实现带边框的圆形头像所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。