Размер шрифта слишком большой, чтобы соответствовать кешу

17

Итак, я недавно переключился на Android 3.0 (сотовый), и у меня возникли некоторые проблемы с аппаратным рендерингом, особенно в определенном пользовательском представлении, которое я написал, где я использую размер шрифта 200 для отображения некоторого текста.

К сожалению, кажется, что openGLRenderer не очень любит такие довольно большие размеры шрифта, учитывая ошибку, которую я получаю в журнале:

06-06 16:22:00.080: ERROR/OpenGLRenderer(2503): Font size to large to fit in cache. width, height = 97, 145

Существуют ли способы (или способы его устранения), чтобы я мог получить текст, отображаемый с требуемым размером шрифта?

    
задан MrJre 06.06.2011 в 16:28
источник

3 ответа

7

Просто идея: возможно, вы можете преобразовать шрифт в контур, используя Paint.getTextPath (...) и используйте этот путь для визуализации текста. Это должно позволить вам изменить размер пути по мере необходимости.

    
ответ дан Stefan Mücke 01.07.2011 в 02:43
источник
29

Это действительно ошибка в ОС Android внутри модулей аппаратного ускорения. Я думаю, что лучший способ - попросить систему избежать ускорения HW в TextViews, содержащих большой размер текста. Для этого просто добавьте в код:

TextView bigText = (TextView) findViewById(R.id.bigtext);
bigText.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    
ответ дан Shaish81 11.09.2012 в 16:16
источник
3

Метод setLayerType полезен, но, к сожалению, он поддерживается только для API & gt; = 11. Разработка для API = 8 или менее становится непригодной.

Если вы можете, простое решение отключает аппаратное ускорение только для активности, которая создает проблемы. У меня была эта проблема и она была решена так:

<application
    android:...
    android:hardwareAccelerated="true" >
    <activity ...>
        ...
    </activity>

    <activity
        ...
        android:hardwareAccelerated="false">
        ...
    </activity>
</application>

Это решение отключит аппаратное ускорение только для действий, в которых вам это не нужно, и где вы не можете отображать большие тексты.

    
ответ дан marzapower 23.10.2012 в 22:22
источник