Android实现圆形图片
16lz
2021-01-24
android实现圆形图片需要自定义ImageView控件,默认的ImageView是没有这样的效果,那么接下来就使用具体代码来实现。
创建ImageCircleView类继承于ImageView类
package com.tenghu.custom.view;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.PaintFlagsDrawFilter;import android.graphics.Path;import android.graphics.PorterDuff;import android.graphics.PorterDuffXfermode;import android.graphics.Rect;import android.graphics.RectF;import android.graphics.Region;import android.graphics.Xfermode;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.util.AttributeSet;import android.widget.ImageView;/** * 圆形图片 * Created by Arvin_Li on 2014/10/15. */public class ImageCircleView 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 ImageCircleView(Context context,AttributeSet attrs,int defStyle){ super(context, attrs, defStyle); } public ImageCircleView(Context context,AttributeSet attrs){ super(context, attrs); } public ImageCircleView(Context context){ super(context); } private Bitmap createCircleMap(){ int w=getWidth();//获取图片的宽度 int h=getHeight();//获取图片的高度 Bitmap.Config localConfig=Bitmap.Config.ARGB_8888; Bitmap localBitmap=Bitmap.createBitmap(w,h,localConfig); Canvas canvas=new Canvas(localBitmap);//创建一个画板 Paint paint=new Paint(1);//创建画笔 paint.setColor(Color.WHITE);//设置画笔颜色 RectF rectF=new RectF(0.0F,0.0F,w,h); //绘制一个椭圆 canvas.drawOval(rectF,paint); return localBitmap; } @Override protected void onDraw(Canvas canvas) { Drawable drawable=getDrawable(); if(null==drawable) super.onDraw(canvas); else{ try { if(null==this.paint){ this.paint=new Paint(); this.paint.setFilterBitmap(false); this.paint.setXfermode(MASK_XFERMODE); } int w=getWidth();//获取图片资源的宽度 int h=getHeight();//获取图片资源的高度 int i=canvas.saveLayer(0.0f,0.0f,w,h,null,31); drawable.setBounds(0,0,w,h); drawable.draw(canvas); if((null==this.mask)||(this.mask.isRecycled())){ this.mask=createCircleMap(); } canvas.drawBitmap(this.mask,0.0F,0.0F,paint); canvas.restoreToCount(i); }catch (Exception e){ e.printStackTrace(); } } }}在xml中使用:
<com.tenghu.custom.view.ImageCircleView android:id="@+id/iv_head" android:layout_width="42dp" android:layout_height="42dp" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:layout_alignParentLeft="true" android:src="@drawable/face"/>
更多相关文章
- Android获取网络图片应用示例
- android调用系统的相机服务
- android&&ScaleType android:scaleType="centerCrop"这个属性把
- Android和iOS对矢量图片的支持
- android中有关图片的处理
- Android常用到得方法积累
- Android(安卓)压缩工具类
- Android中的GalleryView实例演示-周末福利有美女图
- ViewPager用法(一)图片+原点+循环播放