我最近发现,在{strong> 1.0 - 1.49 范围内缩放时,Android上的TextView
呈现模糊/模糊。
我不确定为什么会发生这种情况,但是当视图在此范围内的XY轴上缩放时,看起来好像使用了未缩放版本的栅格版本。但是,如果视图缩放比例的值大于 1.5 (150%),则问题消失。请以完整分辨率检查所附的屏幕快照拼贴:https://i.imgur.com/A31ZC1N.png
附带的屏幕截图来自运行Android 7.1.2(API级别25)的真实设备。
我也在运行Android 9(API级别28)的仿真器上对此进行了测试,结果是相同的。但是,在我的另一台设备(OnePlus 6,Android 9)上,此问题不存在,一切都可以很好地扩展,而且没有模糊性。
对我来说,一种解决方法是禁用当前活动的硬件加速:
<activity android:hardwareAccelerated="false" />
另一种解决方法是在要缩放的视图的父级上设置软件层:
((View) mScaleValueTextView.getParent()).setLayerType(View.LAYER_TYPE_SOFTWARE, null);
这两种方法都将导致TextView
的缩放而没有提到的问题,但是这些方法都有缺点,我注意到的第一个方法是{{1} }}属性未绘制。
为了演示默认行为,我创建了示例应用程序,在其中添加了TextView
和elevation
来控制比例,范围从100%到200%。
通过这种方法缩放视图:
TextView
您可以获取整个示例应用here。
由于同一代码在不同设备上的行为不同,并且该问题仅发生在上述比例范围之间,因此我认为这是较低级别性能优化的结果,该性能优化可能在某些设备上实现,也可能未实现。
是否有任何方法可以以干净的方式禁用或解决此问题,而不会产生有害的副作用?