我是语言学家,不是程序员。借助示例,几本书和这个论坛,我为少数民族语言创建了一个自定义键盘,并设法将背景从丑陋的黑色变为自定义颜色。
现在,我注意到键盘上的字母键(例如“ a”,“ǝ”,“ b”)看起来模糊了。而且我只是注意到,因为“特殊键”上的符号看起来非常清晰。因此,请在下面查看我的屏幕截图:
我还没有对按键上的“文本”做任何技巧。我没有提供特殊字体;我猜我的键盘应用程序正在应用默认系统字体,例如Noto。对于此语言,所有“特殊字符”(例如ɖ,Ɖ,ŋ,Ŋ,ǝ,Ǝ,ɛ,Ɛ,ɩ,Ɩ,ɔ,Ɔ,ʊ,Ʊ)均可用,它们呈现良好(仅模糊)。我在这里列出它们,以说明为什么这种语言确实需要自定义键盘。这个问题仅与数千名WhatsApp以及Facebook和Android用户有关。
[这里是“普通”手机的屏幕截图:没有特殊的系统字体,没有生根,普通的Android 6.0,屏幕分辨率1280 x 720,内置工具拍摄的屏幕截图,然后在GIMP中缩放为您的400%(没有任何当然是插值),并另存为无损PNG。
[请注意,“特殊符号”在需要的地方(圆角和对角线)如何具有合理的抗锯齿,以及“ŋ”,“ q”和“ 1”的垂直向下笔划如何表明存在不需要anti-aliasing(?)应用于所有字母。此行为在整个键盘上是一致的:all字母为blurred,而all符号为crisp。
[我可以在几种不同的电话(真实的硬件)上重现此问题,例如,在具有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)
我准备引用更多代码并回答您的后续问题。请帮助我进一步解决问题。谢谢。
好,我找到了答案。
在键盘视图xml中放入android:shadowRadius =“ 0.0”
<android.inputmethodservice.KeyboardView
...
android:shadowRadius="0.0" />