1.生成图片背景

public class WaterMarkUtil {private DensityUtil densityUtil;// 声明单例private volatile static WaterMarkUtil mInstance = null;public static WaterMarkUtil getInstance() {if (mInstance == null) {synchronized (SpUtils.class) {if (mInstance == null) {mInstance = new WaterMarkUtil();}}}return mInstance;}//设置背景public void setWaterMarkTextBg(View view, Context gContext, String gText) {view.setBackground(drawTextToBitmap(gContext, gText));}/*** 生成水印文字图片*/public BitmapDrawable drawTextToBitmap(Context gContext, String gText) {gText = gText + " ";Bitmap waterMarkBitmap = ACache.get(gContext).getAsBitmap(gText);if (waterMarkBitmap != null && !waterMarkBitmap.isRecycled()) {BitmapDrawable drawable = new BitmapDrawable(waterMarkBitmap);drawable.setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);drawable.setDither(true);return drawable;}try {Bitmap bitmap = Bitmap.createBitmap(AppTools.dip2px(420), AppTools.dip2px(400), Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(bitmap);canvas.drawColor(getColorPrimary(gContext));Paint paint = new Paint();paint.setColor(Color.LTGRAY);paint.setAlpha(80);paint.setAntiAlias(true);paint.setTextAlign(Paint.Align.LEFT);paint.setTextSize(AppTools.dip2px(70));Path path = new Path();path.moveTo(AppTools.dip2px(0), AppTools.dip2px(300));path.lineTo(AppTools.dip2px(210) * 2, AppTools.dip2px(0));canvas.drawTextOnPath(gText, path, AppTools.dip2px(0), AppTools.dip2px(50), paint);//            canvas.save(Canvas.ALL_SAVE_FLAG);canvas.save();canvas.restore();ACache.get(gContext).put(gText, bitmap);BitmapDrawable drawable = new BitmapDrawable(bitmap);drawable.setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);drawable.setDither(true);return drawable;} catch (Exception e) {}return null;}public int getColorPrimary(Context context){TypedValue typedValue = new TypedValue();context.getTheme().resolveAttribute(R.attr.colorPrimary, typedValue, true);return typedValue.data;}
}

2.代码使用

//获取对象
WaterMarkUtil instance = WaterMarkUtil.getInstance();
//设置名字 以及 手机号后4位
instance.setWaterMarkTextBg(relWatermark, getContext(), user.name  + "  " +   user.telephone.substring(user.telephone.length() - 4));

3.布局使用

<RelativeLayoutandroid:id="@+id/rel_watermark"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_below="@id/header"><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/recyclerView"android:layout_width="match_parent"android:layout_height="match_parent"android:clipToPadding="false"android:overScrollMode="never"android:paddingBottom="@dimen/home_tab_widget_height"android:background="@color/transparent"android:scrollbars="none" /></RelativeLayout>

Android仿企业微信/钉钉通信录水印背景相关推荐

  1. Android 实现企业微信自动打卡任务同时支持钉钉急速打卡模式

    前言 之前公司一直是弹性工作制 以工作任务为目标 自由上下班 日子过的不亦乐乎 自从人事来了以后 就颁布了第一条法令 看到这个无疑的痛苦的 对于一个几年没有打卡散人来说!!! 同时公司的财务小姐姐和其 ...

  2. delphi 企业微信消息机器人_消息通知支持企业微信、钉钉机器人,MeterSphere v1.4.0发布...

    2020年10月27日15:00,MeterSphere v1.4版本发布说明会,现已开启官网报名. 10月27日,MeterSphere开源持续测试平台正式发布v1.4.0版本.在该版本中,Mete ...

  3. CabloyJS一站式助力微信、企业微信、钉钉开发 - 钉钉篇

    前言 现在软件开发不仅要面对前端碎片化,还要面对后端碎片化.针对前端碎片化,CabloyJS提供了pc=mobile+pad的跨端自适应方案,参见:自适应布局:pc = mobile + pad 在这 ...

  4. zabbix配置步骤、操作及使用个人邮箱、企业微信、钉钉报警的配置

    一.监控端配置 步骤: 1.去官网下载包,从而有zabbix.repo,更新yum源 2.yum安装zabbix-server-mysql zabbix-web-mysql zabbix-agent ...

  5. CabloyJS一站式助力微信、企业微信、钉钉开发 - 企业微信篇

    前言 现在软件开发不仅要面对前端碎片化,还要面对后端碎片化.针对前端碎片化,CabloyJS提供了pc=mobile+pad的跨端自适应方案,参见:自适应布局:pc = mobile + pad 在这 ...

  6. CabloyJS一站式助力微信、企业微信、钉钉开发 - 微信篇

    前言 现在软件开发不仅要面对前端碎片化,还要面对后端碎片化.针对前端碎片化,CabloyJS提供了pc=mobile+pad的跨端自适应方案,参见:自适应布局:pc = mobile + pad 在这 ...

  7. android微信下拉出现小程序,Android 仿新版微信的小程序下拉栏

    Android 仿新版微信的小程序下拉栏 上周微信更新到了 6.6.1 版本,加入了微信小游戏.朋友圈都在玩跳一跳.而且现在微信把最近用过的小程序放到了首页顶部,轻轻下拉就可以快速访问了.可以看下效果 ...

  8. android仿微信红包动画,Android仿打开微信红包动画效果实现代码

    首先看下效果: 实现原理: 准备3张不同角度的图片,通过AnimationDrawable帧动画进行播放即可 代码实现: 1.编写动画xml文件: 根标签为animation-list,其中onesh ...

  9. android支付宝支付微信支付封装,Android仿支付宝微信支付密码界面弹窗封装dialog...

    一,功能效果 二,实现过程 1,先写xml文件:dialog_keyboard.xml 注意事项 (1),密码部分用的是一个线性布局中6个TextView,并设置android:inputType=& ...

最新文章

  1. 手机上有android,android-在不同智能手机上的Videoview行为(具有...
  2. Java 编程下使用 Class.forName() 加载类
  3. 前端开发--播放页面评论区业务逻辑初步
  4. python 螺旋数组_LeetCode54,螺旋矩阵,一题学会一个重要技巧
  5. CF Edu54 E. Vasya and a Tree DFS+树状数组
  6. tomcat J2EEApplication=none,J2EEServer=none
  7. 计算机科学与技术专业大学排名2020,2020计算机科学与技术专业最好大学排名:160余所大学上榜...
  8. jmeter自动生成测试报告
  9. linux的vi详细命令
  10. 【Xamarin.iOS】使用iOS 11进行大型游戏
  11. python显示1000以内的斐波拉契数列_Python 实现斐波那契数列方法及其优化总结
  12. 持续集成CI, 持续部署CD, 持续交付CD要点
  13. DSSM模型的原理简介,预测两个句子的语义相似度
  14. 游戏后台管理工具帮助文档
  15. uos打包——公网deb包转uos的deb包
  16. 我的世界服务器查延迟指令,服务器新手服主必看指令
  17. Radio Userland已更新,版本号未更改...
  18. 【目标检测】YOLO v5 吸烟行为识别检测
  19. SayLove表白墙微信小程序
  20. 雷军回应 “小米手机都是中低端”

热门文章

  1. 【小程序】wx.reLaunch()、wx.showModal()
  2. 《图解HTTP》--fiddler的使用<二>
  3. 数据库中session与process的区别与联系
  4. WPS 题注0.1 而不是章节号.1 解决办法
  5. iphone iPhone拍照/摄像软件开发实例
  6. this.$confirm提示框
  7. 【ZMK】CFnet目标跟踪算法Matlab代码运行指南
  8. String类型转 Map
  9. restTemplate 发送post请求
  10. 多智能体强化学习论文——HAMA(AAAI 2020)