本文实例为大家分享了Android Studio实现带边框的圆形头像的具体代码,供大家参考,具体内容如下
效果显示:
(没有边框的)
(有边框的)
创建自定义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;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, 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); }}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容猜你喜欢
AI推送时光机Android Studio实现带边框的圆形头像
后端开发2023-05-30
利用Android中BitmapShader制作自带边框的圆形头像
后端开发2022-06-06
Android使用CircleImageView实现圆形头像的方法
后端开发2022-06-06
Android利用CircleImageView实现圆形头像的方法
后端开发2022-06-06
Android实现用户圆形头像和模糊背景
后端开发2024-04-02
Android自定义ViewGroup实现带箭头的圆角矩形菜单
后端开发2022-06-06
Android实现圆角边框对话框的方法
后端开发2022-06-06
Android实现本地上传图片并设置为圆形头像
后端开发2022-06-06
Android编程实现圆角边框的方法
后端开发2022-06-06
Android 圆角边框的实现方式汇总
后端开发2022-06-06
如何用css实现带箭头的边框
后端开发2024-04-02
css3如何实现带边框的缺角矩形
后端开发2024-04-02
Android实现图片一边的三角形边框效果
后端开发2022-06-06
Android实现动态圆环的图片头像控件
后端开发2022-06-06
Android实现带头像的用户注册页面
后端开发2022-06-06
如何实现pyqt5圆形label显示打开的摄像头功能
后端开发2023-06-22
Android实现带有边框的ListView和item的方法
后端开发2022-06-06
Android编程实现圆角边框布局效果的方法
后端开发2023-05-31
咦!没有更多了?去看看其它编程学习网 内容吧