前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一线开发者本周复盘

一线开发者本周复盘

作者头像
AndroidTraveler
发布2019-04-25 15:17:14
2940
发布2019-04-25 15:17:14
举报
文章被收录于专栏:AndroidTravelerAndroidTraveler

时间:2019.03.18~2019.03.22

Android Paint setFlags

背景

我们知道电商 APP,比如天猫,一般产品上面有两个价格。

一个是当前价格,一个是原价。

原价一般都会用删除线标识。

Android TextView 实现:

代码语言:javascript
复制
tvPrice.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);

可以看到就是设置一个 FLAG 就可以了。

需求

产品看了之后说有锯齿,需要解决。

开发

我看了一下,既然是 paint 设置 FLAG,结合之前画图的经验,分分钟反锯齿给你加上,因此代码版本一出现:

代码语言:javascript
复制
TextPaint paint = tvPrice.getPaint();paint.setAntiAlias(true);paint.setFlags(Paint.STRIKE_THRU_TEXT_FLAG);

一运行发现没解决?

解决问题:

既然问题出现了,那就解决吧。

一般有两种思路:

第一种就是直接利用搜索引擎,看看有没有其他人踩过坑。

第二种就是直接看源码。

本着这个是小问题,而且看源码可能解决起来比较快,我们就看下源码。

点击 setAntiAlias 可以看到源码的部分注释如下:

代码语言:javascript
复制
Helper for setFlags(), setting or clearing the ANTI_ALIAS_FLAG bit

可以看到本质上它也是通过设置标志位来达到去锯齿效果。

点进去 setFlags 可以看到源码的部分注释如下:

代码语言:javascript
复制
* Set the paint's flags. Use the Flag enum to specific flag values.** @param flags The new flag bits for the paint

可以看到是设置标志的值。

因此我们上面的代码后面设置的删除线标志值把反锯齿标志位清除了。

那可能你想颠倒下顺序看看是不是反锯齿会把删除线清除,你修改代码如下:

代码语言:javascript
复制
TextPaint paint = tvPrice.getPaint();paint.setFlags(Paint.STRIKE_THRU_TEXT_FLAG);paint.setAntiAlias(true);

结果发现删除线还在?

其实这是因为 setAntiAlias 并不是直接进行设置 Flag 操作。注释上面说了只是对 ANTI_ALIAS_FLAG 这个位做处理。

我们修改代码如下,就能够看到你期望的效果了。

代码语言:javascript
复制
TextPaint paint = tvPrice.getPaint();paint.setFlags(Paint.STRIKE_THRU_TEXT_FLAG);paint.setFlags(Paint.ANTI_ALIAS_FLAG);

那么现在我们既要反锯齿又要删除线,怎么办?

只需要设置一次 Flag 即可,然后通过位运算 | 将多个标志位连接起来。

代码语言:javascript
复制
tvPrice.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG);

这样期望的效果就达到了。

其实读者应该发现了,上面二脸懵逼误打误撞的代码其实也是另一种解决方法,不过要注意顺序,还要对方法有所了解,所以还是推荐上面的解决方法哈~

单词本

curly braces 花括号

underscore 下划线

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 安卓小煜 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档