bitmap元素的 tileMode 属性来创建一种模式,属性值如下:
● clamp :复制源位图的边缘像素
● repeat:源位图会在横向和纵向重复地平铺
● mirror:源位图会重复地进行平铺,但按照源位图和镜像位图交替的方式平铺
代码示例:
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/checkers"
android:tileMode="repeat"/>
制作遮罩效果:圆角图
//创建并加载图片(通常是不可修改的)
Bitmap source = BitmapFactory.decodeResource(getResources(),R.drawable.dog);
//创建一个供修改的图片,然后加上 Canvas
Bitmap result = Bitmap.createBitmap(source.getWidth(), source.getHeight(),Config.ARGB_8888);
Canvas canvas = new Canvas(result);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
//首先创建并绘制圆角矩形“遮罩”
RectF rect = new RectF(0,0,source.getWidth(),source.getHeight());
float radius = 25.0f;
paint.setColor(Color.BLACK);
canvas.drawRoundRect(rect, radius, radius, paint);
//用转换模式转化并绘制原图
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(source, 0, 0, paint);
paint.setXfermode(null);
iv.setImageBitmap(result);
制作任意遮罩图形:
//创建并加载图片(通常是不可修改的)
Bitmap source = BitmapFactory.decodeResource(getResources(),R.drawable.dog);
Bitmap mask = BitmapFactory.decodeResource(getResources(),R.drawable.triangle);
//创建一个供修改的图片,然后加上 Canvas
Bitmap result = Bitmap.createBitmap(source.getWidth(), source.getHeight(),Config.ARGB_8888);
Canvas canvas = new Canvas(result);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
//先画上遮罩图片,然后用转换模式绘制源图
canvas.drawBitmap(mask, 0, 0, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(source, 0, 0, paint);
paint.setXfermode(null);
iv.setImageBitmap(result);
网友评论