Подтвердить что ты не робот

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

Итак, я недавно переключился на 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

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

4b9b3361

Ответ 1

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

Ответ 2

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

TextView bigText = (TextView) findViewById(R.id.bigtext);
bigText.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

Ответ 3

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

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

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

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

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