效果图:

Android绘制圆形图片(五)_第1张图片

第一步:新建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

更多相关文章

  1. Android通过内容提供器获取相册中所有图片
  2. android 按比例缩放图片(适屏)
  3. android 文字或者图片生成.pdf文件
  4. Android 读取Assets中图片
  5. 一个Android实现图片的倒影效果的代码示例
  6. android 获取音乐文件的内置专辑图片
  7. Android通知栏图标显示网络图片
  8. 兼容android Q存图片到相册
  9. Android手机开发:图片的放大和缩小显示ImageView

随机推荐

  1. Android(安卓)控件之进度加载
  2. Android中如何移动图片
  3. 图片裁剪关于return-data
  4. mnn android 收集
  5. Error:warning: Ignoring InnerClasses a
  6. android 下获取apk的icon
  7. AsyncTask的使用 (二)图片下载,进度条
  8. Android系统的版本号与API的对应表
  9. exclude modules when config dependenci
  10. Android(安卓)Studio Tips Of the Day -