23

そのため、最近android 3.0(honeycomb)に切り替えましたが、ハードウェアレンダリングに問題があります。特に、フォントサイズ200を使用してテキストを表示する特定のカスタムビューで問題が発生しています。

残念ながら、ログに表示されるエラーを考えると、openGLRendererはそのようなかなり大きなフォントサイズをあまり好まないようです。

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

希望のフォントサイズでテキストを表示できるように、これを回避する方法(または修正する方法)はありますか?

4

3 に答える 3

33

これは、ハードウェア アクセラレーション モジュール内の Android OS のバグです。大きなサイズのテキストを含む TextView で HW アクセラレーションを回避するようにシステムに依頼するのが最善の方法だと思います。そのためには、次のコードを追加するだけです。

TextView bigText = (TextView) findViewById(R.id.bigtext);
bigText.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
于 2012-09-11T14:16:01.787 に答える
8

ちょっとしたアイデア: おそらくPaint.getTextPath(...)を使用してフォントをアウトラインに変換し、このパスを使用してテキストをレンダリングできます。これにより、必要に応じてパスのサイズを変更できます。

于 2011-07-01T00:43:55.560 に答える
4

このsetLayerType方法は便利ですが、残念ながらAPI> =11でのみサポートされています。API=8以下で開発すると、使用できなくなります。

可能であれば、簡単な解決策は、問題を引き起こしているアクティビティのためだけにハードウェアアクセラレーションを無効にすることです。私はこの非常に問題を抱えていて、このように解決しました:

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

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

このソリューションは、ハードウェアアクセラレーションを必要としないアクティビティや、大きなテキストを表示できないアクティビティに対してのみハードウェアアクセラレーションを無効にします。

于 2012-10-23T20:22:20.767 に答える