気が向いたらなんか書く

そんな感じです

Viewの拡張による独自属性と埋め込みフォント

TextViewなんかを拡張して、ついでに端末組み込みフォント以外のフォントも使っちゃおう的な話です。あわせて以下の資料も見ると多分大丈夫です

http://developer.android.com/intl/ja/training/custom-views/create-view.html

既存Viewを拡張したカスタムビューをXMLベースで構築する場合、そのコンポーネントの属性を予めresourcesで設定しておく必要があります。

上記のように、利用するカスタムビューに対して設定可能な属性名と属性フォーマットを定義します。

次にLayoutファイル上で、カスタムビューを設定します。ここで必要なのは独自に設定した属性は名前空間を別途明記しておく必要があるということです。

xmlns:app="http://schemas.android.com/apk/res/org.misty.rc.testproject"

上記のようにapp(NamespaceNameはなんでもいいです)と定義することで、その属性値に

app:text

という形でアクセスできるようになります。最後はカスタムビューの実装です。

コンストラクタで渡されたAttributeSetから独自の属性値を引っ張ってきたものをTypedArrayに格納します。配列内の値は

R.styleable.TestView_color

のようにINDEX参照可能なので、引いた値をsetします。サンプルは単純に独自属性の値を既存ビューの属性にセットしてるだけですが、コンストラクタ内で独自属性値を参照しておけば、overrideした関数内でいろんな処理が可能になります。

最後にassetManagerを利用して、assetsディレクトリ内に保存したフォントを利用してビューで表示されるフォントを変更します。createFromAssetを利用して新しいTypefaceを作成し、それをsetすれば変更可能です。