android paint的抗锯齿效果

在实现自定义TextView功能时,发现通过Canvas.drawText绘制的字体与TextView显示的字体存在差异。通过查看TextView源码,发现TextView的Paint设置了抗锯齿属性。将自定义TextView中drawText的Paint也设置为抗锯齿,问题得到解决。了解并应用Paint的抗锯齿属性,可以提升图形显示质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前几天在做公司需求的时候用到自定义textview的功能。主是判断textview在显示完文字之后还有没有足够的空间用来显示一些图片和其他的文字,这里其他的文字是使用cavans.drawtext函数直接draw在textview上的。

功能完成之后看了下效果,发现用textview设置的字体跟draw出来的字体有些不同,

上面的是用textview直接设置的字体,下面是用draw显示的字体,发现这两种显示效果有些不一样。刚开始的时候还以为是字体的样式的问题,后来试着改变draw的paint的字体样式,也还是会有这个问题。

我刚开始看到这种效果的时候没有什么解决的思路,但是基本可以肯定的应该就是在draw的时候忘记设置paint的一些属性了。于是就去看textview的源码,看看textview中的paint是有那些属性的,看了textview的源码后发现有这么一句代码。mTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);textview为他的画笔paint设置了抗锯齿的属性。于是我也试着将自定义textview中drawtext的paint设置成抗锯齿的属性,发现问题就解决了。用textview设置的字体和draw出来的字体是一样的了。

上面的还是textview设置的字体效果,下面的是加了抗锯齿效果的自定义draw出来的字体。


这里既然用到了paint的抗锯齿这个属性,顺便也学习下这个属性的作用。

设置这个属性可以通过:paint.setAntiAlias(true);或者cavans.setDrawFilter(new PaintFlagsDrawFilter(0,Paint.ANTI_ALILAS_FLAG | Paint.FLITER_BITMAP_FLAG))等方式来设置,当然也可以在new paint的时候就加上这个属性。就像前面的那样。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值