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