自定义键盘上的字母按键模糊,而特殊键则非常清晰

问题描述 投票:2回答:1

我是语言学家,不是程序员。借助示例,几本书和这个论坛,我为少数民族语言创建了一个自定义键盘,并设法将背景从丑​​陋的黑色变为自定义颜色。

现在,我注意到键盘上的字母键(例如“ a”,“ǝ”,“ b”)看起来模糊了。而且我只是注意到,因为“特殊键”上的符号看起来非常清晰。因此,请在下面查看我的屏幕截图:

我还没有对按键上的“文本”做任何技巧。我没有提供特殊字体;我猜我的键盘应用程序正在应用默认系统字体,例如Noto。对于此语言,所有“特殊字符”(例如ɖ,Ɖ,ŋ,Ŋ,ǝ,Ǝ,ɛ,Ɛ,ɩ,Ɩ,ɔ,Ɔ,ʊ,Ʊ)均可用,它们呈现良好(仅模糊)。我在这里列出它们,以说明为什么这种语言确实需要自定义键盘。这个问题仅与数千名WhatsApp以及Facebook和Android用户有关。

[这里是“普通”手机的屏幕截图:没有特殊的系统字体,没有生根,普通的Android 6.0,屏幕分辨率1280 x 720,内置工具拍摄的屏幕截图,然后在GIMP中缩放为您的400%(没有任何当然是插值),并另存为无损PNG。

[请注意,“特殊符号”在需要的地方(圆角和对角线)如何具有合理的抗锯齿,以及“ŋ”,“ q”和“ 1”的垂直向下笔划如何表明存在不需要anti-aliasing(?)应用于所有字母。此行为在整个键盘上是一致的:all字母为blurred,而all符号为crisp

screenshot scaled to 400%

[我可以在几种不同的电话(真实的硬件)上重现此问题,例如,在具有800 x 480 px屏幕的Android 4.4.2上,它看起来更糟。

更新1:从用户评论中,我被提示去查看我的“特殊字符”,例如大写锁定和键盘隐藏(如屏幕截图所示)。我很惊讶地发现这些文件只是png文件,而我在drawable-子文件夹中有很多文件,例如drawable-xhdpi,格式为24x24px到96x96px。许多星期前,我从一些公开的Google图标集中获得了它们。因此,似乎如果我不愿意为6种不同屏幕尺寸的每种4 x 39键制作清晰的png图像(对于那些无法弄清这一点的读者来说,这是936个文件)至少是一种蛮力的解决方法,但实际上并不是对“哪里以及为什么邪恶变得模糊?”的答案。

“ Going bitmap”在Android世界中,第一部手机(我相信它在Android 8中可用)终于获得了矢量可绘制对象,这感觉不对。谁知道,可能会有一些屏幕在那些24x24px或96x96px PNG上变成僵尸,并且渲染得比我在硬件上看到的还要糟糕...:1 etadpU

现在我将提供我的数据,如果您想了解更多,请大声喊叫。

从我的文件\ app \ src \ main \ res \ xml \ qwerty.xml中,我给您显示在屏幕快照中的行以及简介:

<?xml version="1.0" encoding="utf-8"?>

<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
    android:keyWidth="10%p"
    android:horizontalGap="0px"
    android:verticalGap="0px"
    android:keyHeight="@dimen/key_height"
>


<Row>
    <Key android:codes="119" android:keyLabel="w" android:keyEdgeFlags="left"/>
    <Key android:codes="331" android:keyLabel="ŋ" android:popupKeyboard="@xml/keyboard_popup_template" android:popupCharacters="ŋɲ"/>
    <Key android:codes="99,231" android:keyLabel="c" android:popupCharacters="cç©" android:popupKeyboard="@xml/keyboard_popup_template"/>
...
</Row>

<Row>
    <Key android:codes="-1" android:keyIcon="@drawable/baseline_keyboard_capslock_black_24"
            android:keyWidth="15%p" android:isModifier="true"
            android:isSticky="true" android:keyEdgeFlags="left"/>
    <Key android:codes="113" android:keyLabel="q"/>
...   
</Row>

<Row android:rowEdgeFlags="bottom">
    <Key android:codes="-3" android:keyIcon="@drawable/baseline_keyboard_hide_black_24"
            android:keyWidth="15%p" android:keyEdgeFlags="left"/>
    <Key android:codes="-2" android:keyLabel="123" android:keyWidth="10%p"/>

</Row>

这是我的\ app \ src \ main \ res \ layout \ input.xml

<?xml version="1.0" encoding="utf-8"?>

<org.gasana.android.aniikeyboard.LatinKeyboardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/keyboard"
    android:layout_alignParentBottom="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:keyBackground="@drawable/samplekeybackground"
    android:keyTextColor="#000000"
    android:popupLayout="@layout/popup"
/>

我的背景不是位图,而是xml定义的,这是您在屏幕快照中应用的“普通”(未按下)文件\ app \ src \ main \ res \ drawable \ normal.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:width="1dp" android:color="#A1B7F7" />
    <solid android:color="#C7D4FA"/>
</shape>

我在另一个问题中看到,模糊可能与抗锯齿和对齐有关。因此,现在我需要帮助,请检查这是否是我在Android上下文中的问题,它的发生位置以及如何解决此问题:

Blurred bitmap/embedded text when scrolling in TextField? (Flash/AS3)

我准备引用更多代码并回答您的后续问题。请帮助我进一步解决问题。谢谢。

android android-softkeyboard text-rendering
1个回答
0
投票

好,我找到了答案。

在键盘视图xml中放入android:shadowRadius =“ 0.0”

<android.inputmethodservice.KeyboardView 
...
android:shadowRadius="0.0" />
© www.soinside.com 2019 - 2024. All rights reserved.