ResデータをJavaから使う(テキスト・色・サイズ) – Android

[PR]

基本的なことだけど、動的なレイアウトを使うならJava側だから値をJavaファイルで管理してたこともあったけど、なんだかんだゆうて結局XMLで管理するのがいいな!って思ったので。

EclipseのリネームもいつからかXMLタグの要素名をいじれるようになっているので間違っても楽々修正!

 String

 strings.xml → テキストを管理

<resources>
    <string name="yes">はい</string>
    <string name="no">いいえ</string>
	<string name="kaigyo">改行するよ!\n改行したよ!</string>

	<string name="top">%1$sの1トップ</string>
	<string name="second_top">%1$sと%2$sの2シャドー</string>
</resources>

 Java

String top = getResources().getString(R.string.top, "興梠慎三");
String second_top = getResources().getString(R.string.second_top, "ポンテ", "山田暢久");

Color

colors.xml → 色を管理

<resources>
    <color name="transparent">#00000000</color>
    <color name="white">#ffffffff</color>
    <color name="black">#ff000000</color>
</resources>

Java

setBackgroundColor(getResources().getColor(R.color.white));

Dimen

dimens.xml → サイズ

<resources>
    <dimen name="text_s">10sp</dimen>
    <dimen name="text_m">14sp</dimen>
    <dimen name="text_l">18sp</dimen>

    <dimen name="mg_s">8dp</dimen>
    <dimen name="mg_m">16dp</dimen>
    <dimen name="mg_l">24dp</dimen>
</resources>

Java

// テキストサイズ
tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, getResources().getDimension(R.dimen.text_m));

// サイズとかマージンとかの指定
LLLP.setMargins(0, 0, 0, (int)getResources().getDimension(R.dimen.mg_m));

そんなこんな。

たぶんだけど、Javaで管理すると解像度に合わせた計算が面倒なサイズ周りは、解像度とかをいい感じにしてくれてるっぽい。