android 水印 添加 -适配多分辨率

android 水印 添加 -适配多分辨率

  1. 核心代码
/**
 * 给图片添加水印
 *
 * @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

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值