返回顶部
首页 > 资讯 > 精选 >Android中如何给任何view添加全屏倾斜水印
  • 469
分享到

Android中如何给任何view添加全屏倾斜水印

android 2023-05-30 19:05:56 469人浏览 八月长安
摘要

小编给大家分享一下Android中如何给任何view添加全屏倾斜水印,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!如果要实现如下效果目前有两种思路:先画出带有水平

小编给大家分享一下Android中如何给任何view添加全屏倾斜水印,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

如果要实现如下效果

Android中如何给任何view添加全屏倾斜水印

目前有两种思路:

先画出带有水平文字的照片,然后再和原图合成即可

旋转画布,然后直接画布写字即可

两种方案都差不多,这里讲解的第二种方案。

但是两种方案都存在问题,就是文字需要完全覆盖,那么就需要我们的画布要比图片大,其实只要把画布移动到原图的外切图即可。

为了简单分析问题,我们取最长的边,把原图当成正方形,外切正方形的边长即为对角边。如下图

Android中如何给任何view添加全屏倾斜水印

从上图我们可以看出,我们需要旋转45度然后平移回来,平移的距离,从下图可以分析出为两边的差值。

Android中如何给任何view添加全屏倾斜水印

Android中如何给任何view添加全屏倾斜水印

具体代码如下,注释也比较详细,就不再展开说了

 public static Bitmap getMarkTextBitmap(Context GContext, String gText, int width, int height, boolean is4Showing){//  Bitmap bitmap = ACache.get(gContext).getAsBitmap(gText);//  if (is4Showing && bitmap != null){//   return bitmap;//  }  float textSize;  float inter;  if (is4Showing){   textSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 18, gContext.getResources().getDisplayMetrics());   inter = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 25, gContext.getResources().getDisplayMetrics());  } else {   textSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 54, gContext.getResources().getDisplayMetrics());   inter = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 75, gContext.getResources().getDisplayMetrics());  }  int sideLength;  if (width > height) {   sideLength = (int) Math.sqrt(2*(width * width));  } else {   sideLength = (int) Math.sqrt(2*(height * height));  }  Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);  Rect rect = new Rect();  paint.setTextSize(textSize);  //获取文字长度和宽度  paint.getTextBounds(gText, 0, gText.length(), rect);  int strwid = rect.width();  int strhei = rect.height();  Bitmap markBitmap = null;  try {   markBitmap = Bitmap.createBitmap(sideLength, sideLength, Bitmap.Config.ARGB_4444);   canvas canvas = new Canvas(markBitmap);   //创建透明画布   canvas.drawColor(Color.TRANSPARENT);   paint.setColor(Color.BLACK);   paint.setAlpha((int) (0.1*255f));   // 获取跟清晰的图像采样   paint.setDither(true);   paint.setFilterBitmap(true);   //先平移,再旋转才不会有空白,使整个图片充满   if (width > height) {    canvas.translate(width - sideLength - inter, sideLength - width + inter);   } else {    canvas.translate(height - sideLength - inter, sideLength - height + inter);   }   //将该文字图片逆时针方向倾斜45度   canvas.rotate(-45);   for (int i =0; i <= sideLength; ){    int count = 0;    for (int j =0; j <= sideLength; count++){     if (count % 2 == 0){      canvas.drawText(gText, i, j, paint);     } else {      //偶数行进行错开      canvas.drawText(gText, i + strwid/2, j, paint);     }     j = (int) (j + inter + strhei);    }    i = (int) (i + strwid + inter);   }   canvas.save(Canvas.ALL_SAVE_FLAG);//  ACache.get(gContext).put(gText, markBitmap);  } catch (OutOfMemoryError e) {   Util.LOGD(TAG, e);   if(markBitmap != null && !markBitmap.isRecycled()){    markBitmap.recycle();    markBitmap = null;   }  }  return markBitmap; }
  public static Drawable getMarkTextBitmapDrawable(Context gContext, String gText, int width, int height, boolean is4Showing){  Bitmap bitmap = getMarkTextBitmap(gContext, gText, width, height, is4Showing);  if (bitmap != null){   BitmapDrawable drawable = new BitmapDrawable(gContext.getResources(), bitmap);   drawable.setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);   drawable.setDither(true);//   Drawable drawableFinal = drawable.getConstantState().newDrawable();//   if(!bitmap.isRecycled()){//    bitmap.recycle();//    bitmap = null;//   }//   return drawable;  }  return null; }

以上是“Android中如何给任何view添加全屏倾斜水印”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Android中如何给任何view添加全屏倾斜水印

本文链接: https://lsjlt.com/news/220517.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android中如何给任何view添加全屏倾斜水印
    小编给大家分享一下Android中如何给任何view添加全屏倾斜水印,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!如果要实现如下效果目前有两种思路:先画出带有水平...
    99+
    2023-05-30
    android
  • 如何用nodejs给图片添加半透明水印
    本文小编为大家详细介绍“如何用nodejs给图片添加半透明水印”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何用nodejs给图片添加半透明水印”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起...
    99+
    2024-04-02
  • Java如何在Excel中添加水印
    这篇文章主要介绍了Java如何在Excel中添加水印,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示...
    99+
    2023-06-14
  • Java如何实现给Word文件添加文字水印
    这篇文章主要为大家展示了“Java如何实现给Word文件添加文字水印”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java如何实现给Word文件添加文字水印”这篇文章吧。方法思路在给Word每一...
    99+
    2023-06-29
  • 如何使用canvas实现给图片添加平铺水印
    小编给大家分享一下如何使用canvas实现给图片添加平铺水印,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!最近项目中遇到一个需求,需要把一张图片加上平铺的水印类似...
    99+
    2023-06-09
  • golang中如何实现给gif、png、jpeg图片添加文字水印
    小编给大家分享一下golang中如何实现给gif、png、jpeg图片添加文字水印,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!什么是golanggolang 是Google开发的一种静态强类型、编译型、并发型,并具有垃圾...
    99+
    2023-06-14
  • python如何在人物图中添加水印
    这篇文章给大家分享的是有关python如何在人物图中添加水印的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pillow;...
    99+
    2023-06-14
  • 计算机中文件水印如何添加
    小编给大家分享一下计算机中文件水印如何添加,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!文件水印的添加方法:首先打开wps软件,并导入需要加水印的文件;然后找到“插入”并且单击;接着点击“自定义水印”,并设置内容、大小、字...
    99+
    2023-06-14
  • Android NDK开发之如何实现FFmpeg视频添加水印
    这篇文章主要介绍Android NDK开发之如何实现FFmpeg视频添加水印,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言Android也是利用FFmpeg命令行的形式(混编),进行视频转码压缩。1.F...
    99+
    2023-06-22
  • 如何添加或删除PDF文件中的水印
    这篇文章将为大家详细讲解有关如何添加或删除PDF文件中的水印,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、怎样添加水印步骤一:在电脑中找到并打开我们需要使用的迅捷PDF编辑器,进入软件后把需要添加水印...
    99+
    2023-06-05
  • 如何在Android中动态添加一个view
    如何在Android中动态添加一个view?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。<xml version="1.0" ...
    99+
    2023-05-30
    android view
  • Android源码分析——View是如何被添加到屏幕的?
    我们看到R.id.content确实是存在的,并且它是一个FrameLayout。到这里我们来看下现在前面这些具体做了哪些? 如下图所示,到...
    99+
    2022-06-06
    view Android
  • 如何在大数据报表中添加文字水印
    如何在大数据报表中添加文字水印,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。开源报表工具(比如 birt、ireport 等)基本上都得通过背景图变相实现水印,...
    99+
    2023-06-03
  • 大数据报表中如何添加动态文字水印
    大数据报表中如何添加动态文字水印,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。水印是把一些标识信息嵌入到信息载体中,在不影响原载体内容使用的同时,为原作者提供识...
    99+
    2023-06-04
  • 如何给Android中的按钮添加图片功能
    在layout中建一个my_login.xml文件 代码如下 <?xml version="1.0" encoding="utf-8"?> ...
    99+
    2022-06-06
    图片 按钮 Android
  • 如何在PHP项目中实现图片处理和水印添加?
    如何在PHP项目中实现图片处理和水印添加?近年来,随着互联网的快速发展,图片的使用在网页设计和应用开发中扮演了越来越重要的角色。为了满足用户对高质量图片的需求,我们需要在PHP项目中实现图片处理和水印添加的功能。本文将介绍一种简单而有效的方...
    99+
    2023-11-02
    图片处理 PHP项目 水印添加
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作