最近在做的是一个语音连麦项目,里面有公屏聊天,之前的聊天背景是自己shape画的纯色或者渐变色,但是新需求是让用上UI妹子设计的各种各样气泡比如这样
然后拉伸的,这种图片是不放在本地的,要后台返回链接,自己加载。
经过调研发现其他家的用的是一张png图片,我就很好奇这怎么拉伸,于是我把他们的链接图片下载下来果然可以拉伸,好神奇啊。
在我的印象里面安卓只有.9图才能拉伸啊,于是跟ios讨论,发现人家更吊,代码设置就可以拉伸图片,研究吧。
把图片放到studio里面,看不出来啥啊,打开图片详情信息也看不出来啊,崩溃了,UI妹子还问我要什么图,要设计了怎么办!
在群里赶紧咨询大佬才知道原来就是.9图, 只不过是转成png了,大佬直接一个链接甩过来啥都看明白了,果然我只是代码的搬运工。
首先把UI妹子的图片在studio或者工具绘制成.9图片,然后用sdk里面的 aapt工具转换
简单说一下.9图的四条线
.9图分为拉伸区域和内容区域
左边的黑线和顶部的黑线表示拉伸区域
右边的黑线和底部的黑线表示文字内容区域
使用Glide默认加载亲测会拉伸变形,末尾给出加载方式!
在Android Studio配置里面找到SDK的详情路径然后打开
上图
进入到 build-tools 随便选一个版本 我选的是 28.0.3
然后输入命令
/aapt s -i xxx.9.png -o xxx.png
-i 后面接要转换图片的路径 -o 后面是新图片输入路径
就这样搞定了!
又学到了
使用Glide加载亲测会拉伸变形,放上加载文件方式
Glide.with(context).downloadOnly().load(chatRoomData.bubbleUrl).listener(new RequestListener<File>() {@Overridepublic boolean onLoadFailed(@Nullable GlideException e, Object o, Target<File> target, boolean b) {return false;}@Overridepublic boolean onResourceReady(File file, Object o, Target<File> target, DataSource dataSource, boolean b) {textChatViewHolder.mTvChatContent.setBackground(BitmapDrawable.createFromPath(file.getAbsolutePath()));if (!TextUtils.isEmpty(chatRoomData.bubbleColor)) {try {textChatViewHolder.mTvChatContent.setTextColor(Color.parseColor(chatRoomData.bubbleColor));} catch (Exception e) {MyLogs.d("", "修改气泡文字颜色失败");}} else {textChatViewHolder.mTvChatContent.setTextColor(Color.WHITE);}return false;}}).preload();