android - 如何在画布绘图期间忽略 Android 中的高对比度辅助功能选项?
问题描述
我有一个自定义视图,我想要有彩色文本。但是当high contrast
启用该选项时,画布会忽略所有绘画的颜色设置并将文本绘制为黑白(drawText
重载)
有可能检测是否启用了此选项(通过反射等)。对于某些观点,有没有办法忽略它?
PS我知道设置中的开关,这不是解决方案。
解决方案
我的解决方法如下所示:
public void drawTextWithoutHighContrastEffects(Canvas canvas, String text, float x, float y, Paint paint)
{
if (isHighContrastTextEnabled)
{
Path path = new Path();
paint.getTextPath(text, 0, text.length(), x, y, path);
canvas.drawPath(path, paint);
} else {
canvas.drawText(text, x, y, paint);
}
}
请注意,这是一个简化的解决方案,例如,path
不应为每个绘制操作重新创建实例,创建一次然后重用它。还应paint
正确设置对象的FILL
样式,以使使用绘制的文本drawPath
看起来与绘制的相同drawText
。
flag的值isHighContrastTextEnabled
来自这里:Detect if 'High contrast' is enabled in Android accessibility settings
推荐阅读
- webrtc - Kurento WebRTC 连接在约 30% 的情况下失败
- r - 在数据表中选择单元格时读取单元格包含的值
- c# - 如何将字符串数组拆分为新的字符串数组并删除重复项
- redux - 更新动态深度嵌套reducer
- node.js - 为什么 Express onError 处理程序只处理“监听”错误?
- python-3.x - 构建kivy时调用的类的参数
- c# - EF Core 查询在真实数据库中运行良好,但测试失败
- mqtt - 如何将 IoT 中心消息发送到 MQTT 代理?
- python - python连接到sql server
- ios - 在图像上绘制以标记特定对象并保存到照片库