Android仿企业微信/钉钉通信录水印背景
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仿企业微信/钉钉通信录水印背景相关推荐
- Android 实现企业微信自动打卡任务同时支持钉钉急速打卡模式
前言 之前公司一直是弹性工作制 以工作任务为目标 自由上下班 日子过的不亦乐乎 自从人事来了以后 就颁布了第一条法令 看到这个无疑的痛苦的 对于一个几年没有打卡散人来说!!! 同时公司的财务小姐姐和其 ...
- delphi 企业微信消息机器人_消息通知支持企业微信、钉钉机器人,MeterSphere v1.4.0发布...
2020年10月27日15:00,MeterSphere v1.4版本发布说明会,现已开启官网报名. 10月27日,MeterSphere开源持续测试平台正式发布v1.4.0版本.在该版本中,Mete ...
- CabloyJS一站式助力微信、企业微信、钉钉开发 - 钉钉篇
前言 现在软件开发不仅要面对前端碎片化,还要面对后端碎片化.针对前端碎片化,CabloyJS提供了pc=mobile+pad的跨端自适应方案,参见:自适应布局:pc = mobile + pad 在这 ...
- zabbix配置步骤、操作及使用个人邮箱、企业微信、钉钉报警的配置
一.监控端配置 步骤: 1.去官网下载包,从而有zabbix.repo,更新yum源 2.yum安装zabbix-server-mysql zabbix-web-mysql zabbix-agent ...
- CabloyJS一站式助力微信、企业微信、钉钉开发 - 企业微信篇
前言 现在软件开发不仅要面对前端碎片化,还要面对后端碎片化.针对前端碎片化,CabloyJS提供了pc=mobile+pad的跨端自适应方案,参见:自适应布局:pc = mobile + pad 在这 ...
- CabloyJS一站式助力微信、企业微信、钉钉开发 - 微信篇
前言 现在软件开发不仅要面对前端碎片化,还要面对后端碎片化.针对前端碎片化,CabloyJS提供了pc=mobile+pad的跨端自适应方案,参见:自适应布局:pc = mobile + pad 在这 ...
- android微信下拉出现小程序,Android 仿新版微信的小程序下拉栏
Android 仿新版微信的小程序下拉栏 上周微信更新到了 6.6.1 版本,加入了微信小游戏.朋友圈都在玩跳一跳.而且现在微信把最近用过的小程序放到了首页顶部,轻轻下拉就可以快速访问了.可以看下效果 ...
- android仿微信红包动画,Android仿打开微信红包动画效果实现代码
首先看下效果: 实现原理: 准备3张不同角度的图片,通过AnimationDrawable帧动画进行播放即可 代码实现: 1.编写动画xml文件: 根标签为animation-list,其中onesh ...
- android支付宝支付微信支付封装,Android仿支付宝微信支付密码界面弹窗封装dialog...
一,功能效果 二,实现过程 1,先写xml文件:dialog_keyboard.xml 注意事项 (1),密码部分用的是一个线性布局中6个TextView,并设置android:inputType=& ...
最新文章
- 手机上有android,android-在不同智能手机上的Videoview行为(具有...
- Java 编程下使用 Class.forName() 加载类
- 前端开发--播放页面评论区业务逻辑初步
- python 螺旋数组_LeetCode54,螺旋矩阵,一题学会一个重要技巧
- CF Edu54 E. Vasya and a Tree DFS+树状数组
- tomcat J2EEApplication=none,J2EEServer=none
- 计算机科学与技术专业大学排名2020,2020计算机科学与技术专业最好大学排名:160余所大学上榜...
- jmeter自动生成测试报告
- linux的vi详细命令
- 【Xamarin.iOS】使用iOS 11进行大型游戏
- python显示1000以内的斐波拉契数列_Python 实现斐波那契数列方法及其优化总结
- 持续集成CI, 持续部署CD, 持续交付CD要点
- DSSM模型的原理简介,预测两个句子的语义相似度
- 游戏后台管理工具帮助文档
- uos打包——公网deb包转uos的deb包
- 我的世界服务器查延迟指令,服务器新手服主必看指令
- Radio Userland已更新,版本号未更改...
- 【目标检测】YOLO v5 吸烟行为识别检测
- SayLove表白墙微信小程序
- 雷军回应 “小米手机都是中低端”
热门文章
- 【小程序】wx.reLaunch()、wx.showModal()
- 《图解HTTP》--fiddler的使用<二>
- 数据库中session与process的区别与联系
- WPS 题注0.1 而不是章节号.1 解决办法
- iphone iPhone拍照/摄像软件开发实例
- this.$confirm提示框
- 【ZMK】CFnet目标跟踪算法Matlab代码运行指南
- String类型转 Map
- restTemplate 发送post请求
- 多智能体强化学习论文——HAMA(AAAI 2020)