安卓圆形图像
2016-03-30 14:42
176 查看
**请大家关注下我的微信公众号:哦哦猿
QQ群:552123831**
在开发中,我们会遇见很多问题,比如我现在说的这个问题,就是经常遇见的。
那就是圆形图像,做图像的时候,我就会遇见,还有一些显示图片的时候
![](https://img-blog.csdn.net/20160330150515200)
废话不说,直接代码。
新建一个类,我们取名字叫做:CircularImage.java
然后在新建一个类叫做:MaskedImage.java
然后在布局代码中引用:
在到你的Activity里面去绑定控件:
//这个里面写你的控件,包名字就是你新建CircularImage.java的包名。
就几步,很简单,有什么不懂的可以来QQ群找我
**请大家关注下我的微信公众号:哦哦猿
QQ群:552123831**
QQ群:552123831**
在开发中,我们会遇见很多问题,比如我现在说的这个问题,就是经常遇见的。
那就是圆形图像,做图像的时候,我就会遇见,还有一些显示图片的时候
废话不说,直接代码。
新建一个类,我们取名字叫做:CircularImage.java
package com.ooyuan.myview; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.RectF; import android.util.AttributeSet; public class CircularImage extends MaskedImage { public CircularImage(Context paramContext) { super(paramContext); } public Circu 4000 larImage(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; } }
然后在新建一个类叫做:MaskedImage.java
package com.ooyuan.myview; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.Xfermode; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.widget.ImageView; 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); } } }
然后在布局代码中引用:
<com.ooyuan.myview.CircularImage android:layout_width="30dp" android:layout_height="30dp" android:id="@+id/zuozhe_ima" />
在到你的Activity里面去绑定控件:
//绑定作者图像 zuozhe_ima1 = (CircularImage) findViewById(R.id.zuozhe_ima1); //给图像设置图片 zuozhe_ima1.setImageResource(R.drawable.你的图片);
//这个里面写你的控件,包名字就是你新建CircularImage.java的包名。
就几步,很简单,有什么不懂的可以来QQ群找我
**请大家关注下我的微信公众号:哦哦猿
QQ群:552123831**
相关文章推荐
- 打狗棒法之:Cknife(C刀)自定义模式秒过安全狗(二)
- 同时完成“训练和测试”(3000fps)
- CentOS6.7环境下SVN搭建与客户端链接
- hdoj2019
- EditText中监听内容个数的变化
- SM35/BDC Record / Log 导出
- 【bzoj2301】[HAOI2011]Problem b 莫比乌斯反演+线性筛法+数论分块
- maven私服nexus-bundle的安装和启动
- YTK的高级使用
- 第五周项目1.1-三角形雏类(改善)
- 面试题62:表示数值的字符串
- 【poj 3176】 Cow Bowling 递推dp
- Duplicate entry '0' for key 'PRIMARY'
- Java内存分配
- IntelliJ配置在新开窗口打开项目
- Python安装其它库的步骤和问题解决方案汇总
- 设计模式之代理模式学习demo
- poj 2251 Dungeon Master(BFS)
- TCP/IP协议原理
- c和指针详解------函数