android 图片圆角处理
来源:互联网 发布:电信运营商大数据应用 编辑:程序博客网 时间:2024/04/25 17:26
在Android中可以很容通过图像叠加的规则为图片添加圆角效果。正常情况下,在已有的图像上绘图时将会在其上面添加一层新的图形。如果绘图时使用的Paint是完全不透明的,那么它将完全遮挡住下面的图像,如果Paint是部分透明的,那么它将会对重叠部分图像的颜色叠加处理。通过PorterDuffXfermode规则可以设置绘制图像时的叠加规则。PorterDuffXfermode是非常强大的转换模式,使用它可以设置图像叠加的Porter-Duff规则,来控制Paint如何与Canvas上已有的图像进行叠加。下面列举了常用的12条Porter-Duff规则及其表示的含义:
PorterDuff.Mode.CLEAR 清除画布上图像 PorterDuff.Mode.SRC 显示上层图像 PorterDuff.Mode.DST 显示下层图像 PorterDuff.Mode.SRC_OVER上下层图像都显示,下层居上显示 PorterDuff.Mode.DST_OVER 上下层都显示,下层居上显示 PorterDuff.Mode.SRC_IN 取两层图像交集部分,只显示上层图像 PorterDuff.Mode.DST_IN 取两层图像交集部分,只显示下层图像 PorterDuff.Mode.SRC_OUT 取上层图像非交集部分 PorterDuff.Mode.DST_OUT 取下层图像非交集部分 PorterDuff.Mode.SRC_ATOP 取下层图像非交集部分与上层图像交集部分 PorterDuff.Mode.DST_ATOP 取上层图像非交集部分与下层图像交集部分 PorterDuff.Mode.XOR 取两层图像的非交集部分 下面使用PorterDuff.Mode.SRC_IN规则来给图片添加圆角效果,主要的思路是先绘制一个圆角矩形,然后在上面绘制图像,取图像与圆角矩形的交集部分,只保留图像。
import android.app.Activity;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.PorterDuff;import android.graphics.PorterDuffXfermode;import android.graphics.Rect;import android.graphics.RectF;import android.os.Bundle;import android.widget.ImageView;public class MainActivity extends Activity { private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView = (ImageView) findViewById(R.id.img); imageView.setImageBitmap(getRoundedBitmap()); } //图片圆角处理 public Bitmap getRoundedBitmap() { Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.frame); //创建新的位图 Bitmap bgBitmap = Bitmap.createBitmap(mBitmap.getWidth(), mBitmap.getHeight(), Config.ARGB_8888); //把创建的位图作为画板 Canvas mCanvas = new Canvas(bgBitmap); Paint mPaint = new Paint(); Rect mRect = new Rect(0, 0, mBitmap.getWidth(), mBitmap.getHeight()); RectF mRectF = new RectF(mRect); //设置圆角半径为20 float roundPx = 20; //给Paint加上抗锯齿标志。然后将Paint对象作为参数传给canvas的绘制方法。 mPaint.setAntiAlias(true); //先绘制圆角矩形 mCanvas.drawRoundRect(mRectF, roundPx, roundPx, mPaint); //设置图像的叠加模式 mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); //绘制图像 mCanvas.drawBitmap(mBitmap, mRect, mRect, mPaint); return bgBitmap; }}
源码下载地址
http://download.csdn.net/detail/u012184853/9325235
1 0
- Android 图片缩放,图片圆角处理
- Android图片圆角处理
- Android图片圆角处理
- android 图片圆角处理
- android 圆角图片 处理
- android 圆角图片 处理
- android 圆角图片 处理
- android 图片圆角处理
- android 图片圆角处理
- android 图片处理(图片合成、图片圆角、图片翻转、图片缩放)
- android 图片处理之制作圆角图片
- Android:继承ImageView 实现 圆角图片,圆形图片处理。
- 图片圆角处理
- 图片圆角处理
- 图片圆角处理
- 圆角图片处理
- 图片圆角处理
- 图片圆角处理
- 485总线死锁与复位
- erlang源码分析
- iOS,由于图片原因导致tabbar图片点击发生zoom的现象
- Linux系统服务及其配置
- 初学LESS
- android 图片圆角处理
- web.xml的一些个配置
- git切换远程分支
- Dubbo架构设计详解
- app bootstrap font icon
- JS运动--分享到空间代码样式
- MongoDB安装
- 记忆碎片
- 使用Eclipse传项目到git上