Android绘制圆形图片(五)
16lz
2021-01-23
效果图:
第一步:新建RoundView自定义控件继承View
packagecom.rong.activity;importcom.rong.test.R;importandroid.content.Context;importandroid.graphics.Bitmap;importandroid.graphics.Bitmap.Config;importandroid.graphics.BitmapFactory;importandroid.graphics.Canvas;importandroid.graphics.Color;importandroid.graphics.Paint;importandroid.graphics.PorterDuff;importandroid.graphics.PorterDuffXfermode;importandroid.util.AttributeSet;importandroid.widget.ImageView;/***利用Xfermode制作一个圆形图片**@author徐荣**/publicclassRoundViewextendsImageView{/***画笔*/privatePaintmPaint;/***原型图*/privateBitmapsrc;/***遮罩层*/privateBitmapmask;publicRoundView(Contextcontext,AttributeSetattrs){super(context,attrs);//初始化画笔mPaint=newPaint();mPaint.setAntiAlias(true);//拿到原型图src=BitmapFactory.decodeResource(getResources(),R.drawable.ml);}@OverrideprotectedvoidonSizeChanged(intw,inth,intoldw,intoldh){super.onSizeChanged(w,h,oldw,oldh);//图片的遮罩,为什么要在这里面初始化遮罩层呢?因为在这个方法里Width()和Height()才被初始化了mask=Bitmap.createBitmap(getMeasuredWidth(),getMeasuredHeight(),Config.ARGB_4444);}@OverrideprotectedvoidonDraw(Canvascanvas){super.onDraw(canvas);//设置画布的颜色为透明canvas.drawColor(Color.TRANSPARENT);//划出你要显示的圆Canvascc=newCanvas(mask);cc.drawCircle(getMeasuredWidth()/2,getMeasuredHeight()/2,getMeasuredHeight()/2,mPaint);//这个方法相当于PS新建图层,下面你要做的事就在这个图层上操作canvas.saveLayer(0,0,getMeasuredWidth(),getMeasuredHeight(),null,Canvas.ALL_SAVE_FLAG);//先绘制遮罩层canvas.drawBitmap(mask,0,0,mPaint);//设置混合模式mPaint.setXfermode(newPorterDuffXfermode(PorterDuff.Mode.SRC_IN));//再绘制src源图canvas.drawBitmap(src,0,0,mPaint);//还原混合模式mPaint.setXfermode(null);//还原画布,相当于Ps的合并图层canvas.restore();}}
第二步 新建布局文件Activity_main.xml
<?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#ffffff"android:orientation="vertical"><com.rong.activity.RoundViewandroid:layout_width="160dp"android:layout_height="160dp"android:layout_centerInParent="true"/></RelativeLayout>
Run
更多相关文章
- Android通过内容提供器获取相册中所有图片
- android 按比例缩放图片(适屏)
- android 文字或者图片生成.pdf文件
- Android 读取Assets中图片
- 一个Android实现图片的倒影效果的代码示例
- android 获取音乐文件的内置专辑图片
- Android通知栏图标显示网络图片
- 兼容android Q存图片到相册
- Android手机开发:图片的放大和缩小显示ImageView