1

重複の可能性:
Android-カスタムフォントの使用

Androidアプリケーションでフォントをカスタマイズするための最良または効率的な方法は何ですか?TextviewsとEdittextsをカスタマイズしようとしていますが、カスタムフォントを使用していて、大量のメモリを使用し、場合によってはクラッシュするため、アプリケーションが少し遅くなります。

4

1 に答える 1

4

アプリケーションの速度が遅いのは、カスタムフォントを使用した結果だと私は真剣に疑っています。それはおそらくあなたがそれらを適用している方法です。通常、アクティビティでは次のようなことを行います。

//Get an instance to the root of your layout (outermost XML tag in your layout
//document)
ViewGroup root = (ViewGroup)findViewById(R.id.my_root_viewgroup);

//Get one reference to your Typeface (placed in your assets folder)
Typeface font = Typeface.createFromAsset(getAssets(), "My-Font.ttf");

//Call setTypeface with this root and font
setTypeface(root, font);

public void setTypeface(ViewGroup root, Typeface font) {
    View v;

    //Cycle through all children
    for(int i = 0; i < root.getChildCount(); i++) {
        v = root.getChildAt(i);

        //If it's a TextView (or subclass, such as Button) set the font
        if(v instanceof TextView) {
            ((TextView)v).setTypeface(font);

        //If it's another ViewGroup, make a recursive call
        } else if(v instanceof ViewGroup) {
            setTypeface(v, font);
        }
    }
}

このようにして、書体への参照を1つだけ保持し、ビューIDをハードコーディングする必要はありません。

これをのカスタムサブクラスに組み込むこともできActivityます。その後、Activityを拡張するだけでなく、すべてのActiviteにカスタムActivityを拡張させることができます。その後、このコードを1回記述するだけで済みます。

于 2012-09-17T15:08:31.587 に答える