圆形头像
来源:互联网 发布:全国房地产销售数据 编辑:程序博客网 时间:2024/04/28 18:57
Android源生提供的Image都是方块的,就算你的背景图是个圆形默认还是在一个透明方图之上.所以要圆形必须自定义
下面是在某大侠博客看到的,因为时间过太久才来整理忘了他博客的链接!抱歉了!!!
1:
public abstract class MaskedImage extends ImageView{private static final Xfermode MASK_XFERMODE; private Bitmap mask; private Paint paint; static { PorterDuff.Mode localMode = PorterDuff.Mode.DST_IN; MASK_XFERMODE = new PorterDuffXfermode(localMode); } public MaskedImage(Context paramContext) { super(paramContext); } public MaskedImage(Context paramContext, AttributeSet paramAttributeSet) { super(paramContext, paramAttributeSet); } public MaskedImage(Context paramContext, AttributeSet paramAttributeSet, int paramInt) { super(paramContext, paramAttributeSet, paramInt); } public abstract Bitmap createMask(); protected void onDraw(Canvas paramCanvas) { Drawable localDrawable = getDrawable(); if (localDrawable == null) return; try { if (this.paint == null) { Paint localPaint1 = new Paint(); this.paint = localPaint1; this.paint.setFilterBitmap(false); Paint localPaint2 = this.paint; Xfermode localXfermode1 = MASK_XFERMODE; @SuppressWarnings("unused") Xfermode localXfermode2 = localPaint2.setXfermode(localXfermode1); } float f1 = getWidth(); float f2 = getHeight(); int i = paramCanvas.saveLayer(0.0F, 0.0F, f1, f2, null, 31); int j = getWidth(); int k = getHeight(); localDrawable.setBounds(0, 0, j, k); localDrawable.draw(paramCanvas); if ((this.mask == null) || (this.mask.isRecycled())) { Bitmap localBitmap1 = createMask(); this.mask = localBitmap1; } Bitmap localBitmap2 = this.mask; Paint localPaint3 = this.paint; paramCanvas.drawBitmap(localBitmap2, 0.0F, 0.0F, localPaint3); paramCanvas.restoreToCount(i); return; } catch (Exception localException) { StringBuilder localStringBuilder = new StringBuilder() .append("Attempting to draw with recycled bitmap. View ID = "); System.out.println("localStringBuilder=="+localStringBuilder); } } }
2:
public class CircularImage extends MaskedImage {public CircularImage(Context paramContext) { super(paramContext); } public CircularImage(Context paramContext, AttributeSet paramAttributeSet) { super(paramContext, paramAttributeSet); } public CircularImage(Context paramContext, AttributeSet paramAttributeSet, int paramInt) { super(paramContext, paramAttributeSet, paramInt); } public Bitmap createMask() { int i = getWidth(); int j = getHeight(); Bitmap.Config localConfig = Bitmap.Config.ARGB_8888; Bitmap localBitmap = Bitmap.createBitmap(i, j, localConfig); Canvas localCanvas = new Canvas(localBitmap); Paint localPaint = new Paint(1); localPaint.setColor(-16777216); float f1 = getWidth(); float f2 = getHeight(); RectF localRectF = new RectF(0.0F, 0.0F, f1, f2); localCanvas.drawOval(localRectF, localPaint); return localBitmap; } }
0 0
- 头像圆形
- 圆形头像
- 圆形头像
- 圆形头像
- 圆形头像
- 圆形头像
- 圆形头像
- 圆形头像
- 圆形头像
- Bitmap之圆形头像
- 圆形头像的做法
- Android 圆形头像显示
- imageView创建圆形头像
- IOS 圆形头像
- Android 笔记 - 圆形头像
- iOS 画圆形头像
- Quartz2D裁剪圆形头像
- android 圆形头像
- 黑马程序员——JAVA基础之简述多线程,两种创建多线程的方式
- iOS开发中遇到的问题整理 (一)
- 中国未来最值得投资的十大行业
- MAC应用 如何连续在一个文件里面追加字符串( NSFileHandle定位到文件末尾)
- NSIS——修改图标及图片
- 圆形头像
- GDI使用方法小结(二)
- 反向代理的有趣用法
- 防止重复提交2
- 乳化机的工作过程与工作原理
- ClippingNode做游戏的新手指导
- Servlet 上传文件的方法
- 上传数据
- maven 项目依赖管理