Android学习笔记之详细讲解画圆角图片
2013-11-19 11:02
351 查看
[java]
view plaincopyprint?
package xiaosi.RoundConcer;
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.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.os.Bundle;
import android.widget.ImageView;
public class RoundConcerActivity extends Activity
{
/** Called when the activity is first created. */
private ImageView roundImage = null;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
roundImage = (ImageView)findViewById(R.id.roundconcer);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.a);
roundImage.setImageBitmap(getRoundCornerImage(bitmap, 50));
}
public static Bitmap getRoundCornerImage(Bitmap bitmap, int roundPixels)
{
//创建一个和原始图片一样大小位图
Bitmap roundConcerImage = Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getHeight(), Config.ARGB_8888);
//创建带有位图roundConcerImage的画布
Canvas canvas = new Canvas(roundConcerImage);
//创建画笔
Paint paint = new Paint();
//创建一个和原始图片一样大小的矩形
Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
RectF rectF = new RectF(rect);
// 去锯齿
paint.setAntiAlias(true);
//画一个和原始图片一样大小的圆角矩形
canvas.drawRoundRect(rectF, roundPixels, roundPixels, paint);
//设置相交模式
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
//把图片画到矩形去
canvas.drawBitmap(bitmap, null, rect, paint);
return roundConcerImage;
}
}
android 画图之setXfermode
setXfermode设置两张图片相交时的模式
我们知道 在正常的情况下,在已有的图像上绘图将会在其上面添加一层新的形状。 如果新的Paint是完全不透明的,那么它将完全遮挡住下面的Paint;
而setXfermode就可以来解决这个问题
一般来说 用法是这样的
[java]
view plaincopyprint?
Canvas canvas = new Canvas(bitmap1);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(mask, 0f, 0f, paint);
Canvas canvas = new Canvas(bitmap1); paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); canvas.drawBitmap(mask, 0f, 0f, paint);
就是在图片bitmap1上面绘制图片mask时 处理两者相交时候显示的问题
canvas原有的图片 可以理解为背景 就是dst
新画上去的图片 可以理解为前景 就是src
Mode的值 如下图
相关文章推荐
- Android学习笔记之详细讲解画圆角图片
- Android学习笔记之详细讲解画圆角图片
- Android学习笔记之详细讲解画圆角图片
- Android学习笔记之详细讲解画圆角图片
- Android学习笔记之详细讲解画圆角图片
- Android学习笔记之详细讲解画圆角图片
- javascript图片与加载处理基础详细讲解几种方法实现
- 前端图片延迟加载详细讲解
- Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传
- Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传GOOD
- 前端图片延迟加载详细讲解
- Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传
- Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传
- 图片不间断滚动的特效代码详细讲解
- Android图片开源库:最全面、详细的Picasso讲解
- Shape—自定义图片(详细讲解)
- VS2010程序打包操作(结合图片详细讲解)
- 前端图片延迟加载详细讲解
- 详细使用Transformations实现圆角或圆形图片
- 详细讲解Android图片下载框架UniversialImageLoader之内存缓存(三)