Android icon取消蒙版,拯救强迫症,让你的应用图标和谐统一:Materialize 靓晒

想必了解 Android 发展进程的人都知道,在 App Store 兴盛后才逐步跟上的 Android 应用市场上,有不少应用都是先有 iOS 版再有 Android 版本。节约成本等原因,不少应用不仅 Android 版界面照搬 iOS 版,而且连应用图标也是原封不动地拿过来了。

但这样一来,符合 Android 设计规范的应用图标和照搬来的放在一起的时候,就显得格格不入,这样的状况在 Material Design 推出后更加明显。最初不少国产 ROM 团队想出了这么个办法,给所有应用的图标添加统一的蒙板,这样能让所有的图标都有一层相近的「壳」。但这样会让不规则的图标在强制的蒙板下变得难看,于是他们开始重新绘制应用图标以统一风格,但这样依旧没法覆盖所有的应用,只能惠及大部分人。

自由选择变化,简单实现 Material Design 化

没有重新绘制图标的小众应用要怎样变得好看呢?难道只能接受无法选择的统一蒙板吗?「Materialize」,中文名「靓晒」给出了新的选择,这个简洁的小应用专注于一件事:让图标的快捷方式变得好看,符合 Material Design。先看一下作者提供的 GIF:

b1490451e52f8153c01434dde632cf99.gif

▲ 选取应用,调整样式,之后新的图标便出现在启动器上

进入应用,直接展示出来的便是设备上已经安装的应用列表,点击任意应用就可以开始选择图标改造的方案:可以是圆形,也可以是带些许圆角的方形,也能调整原有图标和蒙板的边距,让新图标也不那么突兀。

最为实用的,还是智能填充选项,在默认的白色蒙板颜色之外,提供了基于应用原有图标的蒙板颜色,轻轻松松就能生成和重新绘制相近的效果。

a5002ab00b48e09aa344f16211920845.png

3d78e1866a1b176b49334bfb0c3030bd.png

细致整理,美观统一的图标唾手可得

87ce3124d7693719b21377e8fce40be4.png

e5f1e72e42597daa68f622e2d2e38ac7.png

0a03408007805e202b2a6d2b8072d1b8.png

▲ 原版 · 方形 · 圆形

我从应用市场选择了排名前 30 的应用,并使用「靓晒」生成了圆形方形图标和原版图标进行对比。通过大图可以很清楚的看到,定制后的图标,在符合 Material Design 的蒙板和阴影改造之后,相比原版图标的不统一,变得风格一致。

不足和展望

「靓晒」作为一个诞生不久的应用,还有着一些不足:

提供的蒙板形状只有方与圆,变化太少。好在从开发者在微博上来看,很快就会有更多的蒙板可供选择;

智能填充蒙板颜色功能,还没法很好适应颜色多样的图标和透明背景的图标。像是使用透明背景的 Flyme 桌面,使用智能填充就会变成一整块蓝色。

但「靓晒」已经足以在现在,作为图标美化应用常驻设备了,整齐和谐的图标也一定能让心情变得更好。就如同这个来自粤语的中文名一样,的的确确让图标好看多了。作者 XiNGRZ 还在 Github 开源了这个项目,动手能力强的朋友也能很方便地定制属于自己的「靓晒」。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将透明蒙版应用于 cv::Mat,可以使用 cv::Mat 的 alpha 通道。以下是一些基本步骤: 1. 读取图像和蒙版图像,并确保它们都有 alpha 通道。如果没有 alpha 通道,可以使用 cv::cvtColor() 函数将其转换为带有 alpha 通道的图像。 2. 将蒙版图像的 alpha 通道与目标图像的 alpha 通道相乘,以创建一个新的 alpha 通道。可以使用 cv::split() 和 cv::merge() 函数来完成此操作。 3. 将蒙版图像的 RGB 通道与目标图像的 RGB 通道相乘,以创建一个新的 RGB 通道。 4. 将新的 alpha 通道和 RGB 通道合并为一个 cv::Mat。 以下是一个示例代码: ```c++ cv::Mat src = cv::imread("source_image.png", cv::IMREAD_UNCHANGED); // 读取源图像,需要 alpha 通道 cv::Mat mask = cv::imread("mask_image.png", cv::IMREAD_UNCHANGED); // 读取蒙版图像,需要 alpha 通道 // 确保两个图像的大小相同 cv::resize(mask, mask, src.size()); // 将 alpha 通道从蒙版图像中提取出来 std::vector<cv::Mat> channels; cv::split(mask, channels); cv::Mat alpha = channels[3]; // 将蒙版图像的 RGB 通道与源图像的 RGB 通道相乘 cv::Mat result; cv::multiply(src, mask, result, 1.0 / 255.0); // 创建新的 alpha 通道 cv::Mat new_alpha; cv::multiply(alpha, result, new_alpha, 1.0 / 255.0); // 合并新的 alpha 通道和 RGB 通道 cv::Mat channels4[] = {result, new_alpha}; cv::merge(channels4, 2, result); // 显示结果 cv::imshow("Result", result); cv::waitKey(0); ``` 请注意,这只是一个基本示例。实际应用中可能需要更复杂的处理来获得更好的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值