Android 自定义圆形头像
2015-10-05 19:58
369 查看
CircleImageView类 :
public class CircleImageView extends ImageView { Path path; public PaintFlagsDrawFilter mPaintFlagsDrawFilter;// 毛边过滤 Paint paint; public CircleImageView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub init(); } public CircleImageView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub init(); } public CircleImageView(Context context) { super(context); // TODO Auto-generated constructor stub init(); } public void init() { paint = new Paint(); } @Override protected void onDraw(Canvas cns) { // TODO Auto-generated method stub Drawable drawable = getDrawable(); if (null != drawable) { Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap(); Bitmap b = circleDraw(bitmap); final Rect rect1 = new Rect(0, 0, b.getWidth(), b.getHeight()); final Rect rect2 = new Rect(0, 0, getMeasuredWidth(), getMeasuredHeight()); paint.reset(); cns.drawBitmap(b, rect1, rect2, paint); b.recycle(); } else { super.onDraw(cns); } } private Bitmap circleDraw(Bitmap bitmap) { int r=0; int width = bitmap.getWidth(); int height = bitmap.getHeight(); Rect rectSource = null; if(width>height) r=height; else { r=width; } //创建一个图片对象 Bitmap output = Bitmap.createBitmap(r, r, Bitmap.Config.ARGB_8888); //创建一个图片游标 Canvas canvas = new Canvas(output); final Rect rect = new Rect(0, 0, r, r); /* 设置取消锯齿效果 */ paint.setAntiAlias(true); canvas.drawARGB(0, 0, 0, 0); paint.setColor(Color.WHITE); /* 绘画一个圆图形 */ canvas.drawCircle(r/ 2, r / 2, r / 2, paint); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(bitmap, rect, rect, paint); return output; } }
使用时在布局中使用自定义image即可
相关文章推荐
- Android任务流调度 - Init
- android自定义组件的简易实现
- android自定义组件的简易实现
- Android-----test----monkeyrunner
- [转]Android中自定义checkbox样式
- 浅谈android的selector,背景选择器
- android-线程 (从java开始)案例
- Android打开/关闭蓝牙封装工具类
- Android-它们的定义Dialog
- Android Studio + NDK
- Android 自定义View (一)
- Ubuntu 15.04 中 Android 5.0+ 编译
- 一篇介绍android最新组件的好文
- Android学习笔记之游标访问SQLite数据
- android 处理空listview
- android--窗口去掉标题栏和状态栏
- 实现android gif图片动画播放功能
- 笔记:学习 Android-BroadcastReceiver
- Android四大基本组件——Content Provider
- android启动一个应用程序大概流程