android 水印 添加 -适配多分辨率
- 核心代码
/**
* 给图片添加水印
*
* @param context
* @param canvas 画布
* @param width 宽
* @param height 高
*/
public static void drawTextToBitmap(Context context, Canvas canvas, int width, int height) {
//要添加的文字
String logo = "西北有高楼,上与浮云齐";
//新建画笔,默认style为实心
Paint paint = new Paint();
//设置颜色,颜色可用Color.parseColor("#6b99b9")代替
paint.setColor(Color.parseColor("#E5989898"));
//设置透明度
paint.setAlpha(80);
//抗锯齿
paint.setAntiAlias(true);
//画笔粗细大小
paint.setTextSize((float) SizeUtils.dp2px(16));
//保存当前画布状态
canvas.save();
//画布旋转-30度
canvas.rotate(-30);
//获取要添加文字的宽度
float textWidth = paint.measureText(logo);
int index = 0;
int aaa = 0;
//行循环,从高度为0开始,向下每隔80dp开始绘制文字
for (int positionY = -SizeUtils.dp2px(30); positionY <= height; positionY += SizeUtils.dp2px(80)) {
//设置每行文字开始绘制的位置,0.58是根据角度算出tan30°,后面的(index++ % 2) * textWidth是为了展示效果交错绘制
float fromX = -0.58f * height + (index++ % 2) * textWidth;
//列循环,从每行的开始位置开始,向右每隔2倍宽度的距离开始绘制(文字间距1倍宽度)
for (float positionX = fromX; positionX < width; positionX += textWidth * 2) {
//绘制文字
LogUtils.e(positionX + "----" + positionY);
canvas.drawText(logo, positionX, positionY, paint);
aaa++;
}
}
LogUtils.e(aaa+"");
//恢复画布状态
canvas.restore();
}
2. 使用
/**
* 添加水印
*/
public static void loadWaterView(final Context mContext, final ImageView mWaterViewOrder) {
try {
//确定上下左右间距
Bitmap bitmap = getViewGroupBitmap(mWaterViewOrder);
BitmapDrawable bitmapDrawable = new BitmapDrawable(bitmap);
bitmapDrawable.setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
bitmapDrawable.setDither(true);
mWaterViewOrder.setBackground(bitmapDrawable);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 截取viewGroup内容,生成图片
*
* @param viewGroup 容器控件
* @return 图片bitmap
*/
public static Bitmap getViewGroupBitmap(ImageView viewGroup) {
int h = ScreenUtils.getScreenHeight();
Bitmap bitmap;
// 创建相应大小的bitmap
bitmap = Bitmap.createBitmap(ScreenUtils.getScreenWidth(), h,Bitmap.Config.ARGB_4444);
final Canvas canvas = new Canvas(bitmap);
//获取当前主题背景颜色,设置canvas背景
canvas.drawColor(Color.parseColor("#00ffffff"));
//画文字水印,不需要的可删去下面这行
drawTextToBitmap(viewGroup.getContext(), canvas, ScreenUtils.getScreenWidth(), h);
//绘制viewGroup内容
viewGroup.draw(canvas);
return bitmap;
}
源码下载地址:https://download.csdn.net/download/hyyz3293/10845000
本文详细介绍了在Android应用中如何给图片添加文字水印,并提供了完整的代码实现。通过调整文字大小、透明度和旋转角度,可以实现不同效果的水印。此外,还展示了如何将水印应用于整个屏幕截图。

2212

被折叠的 条评论
为什么被折叠?



