TypedArray.recycle

TypedArrayは、使い終わったらrecycleする必要がある模様。

TypedArray  |  Android Developers

以前のmixedarray取得で、ログやデバッガでrecycle前後の違いを見てみる。
MainActivity.javaで、

こんな感じでどうなるか。

before
before

before。

こうなっている
こうなっている

こうなっている。

after
after

after。

変わった。
変わった。

変わった。

ログはこんな感じで出てた
ログはこんな感じで出てた

ログはこんな感じで出てた。

Sample/android/TypedArray/recycle/src/TypedArray at master · bg1bgst333/Sample · GitHub

Resources.obtainAttributes

Resources.obtainAttributesで、CustomViewの独自属性の値を取得する。

Resources  |  Android Developers

activity_main.xmlは、

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
     
	<com.bgstation0.android.sample.resources_.CustomView
	    android:id="@+id/customview1"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    app:custom_data="ABCDE"
	    app:custom_number="1" />

</LinearLayout>

app:custom_dataを"ABCDE"、app:custom_numberを1とする。
attrs.xmlを追加し、

こう定義する。
あとは、CustomView.javaで、

res.obtainAttributesでaを取得し、a.getStringでmCustomData、a.getIntでmCustomNumberを取得、あとはmCustomDataを描画テキストの文字列、mCustomNumberを文字の大きさを決定する要素にする。

この状態では、

ABCDEで1の場合
ABCDEで1の場合

ABCDEで1なのでこうなる。

VWXYZで2だと、

こうなる
こうなる

こうなる。
テキストも変わってサイズも変わる。

Sample/android/Resources/obtainAttributes/src/Resources at master · bg1bgst333/Sample · GitHub

TypedArray.getColor

TypedArray.getColorで、指定されたインデックスの値を色コード16進数整数として取得。

TypedArray  |  Android Developers

とはいえ、ただのintとして返される。
activity_main.xmlで、

idにtextview1と付けて、
MainActivity.javaで、

2番目の色cをtextview1.setTextColorでセット。

ログ出力ではこうなってる
ログ出力ではこうなってる

ログ出力ではこうなってる。

textview1にセットした色は赤
textview1にセットした色は赤

textview1にセットした色は赤。

Sample/android/TypedArray/getColor/src/TypedArray at master · bg1bgst333/Sample · GitHub

TextView.setTextColor

TextView.setTextColorで、TextViewのテキストの色をセットできる。

TextView  |  Android Developers

MainActivity.javaで、

tv.setTextColorでColor.REDをセット。
Color.REDなどの色はint値。

上のテキストが赤くなってる
上のテキストが赤くなってる

上のテキストが赤くなってる

Sample/android/TextView/setTextColor/src/TextView at master · bg1bgst333/Sample · GitHub

TypedArray.getString

TypedArray.getStringで、指定されたインデックスの値を文字列として取得。

TypedArray  |  Android Developers

MainActivity.javaで、

0番目の整数値に加えて、1番目の文字列も取得。

1番目の&quot;ABC&quot;を取得出来てる
1番目の"ABC"を取得出来てる

1番目の"ABC"を取得出来てる。

Sample/android/TypedArray/getString/src/TypedArray at master · bg1bgst333/Sample · GitHub

TypedArray.getInt

TypedArray.getIntで、指定されたインデックスの値をint値として取得。

TypedArray  |  Android Developers

arrays.xmlは、

整数、文字列、色。
MainActivity.javaは、

mixedarray.getIntで0番目を取得し、ログ出力。

123を取得出来てる
123を取得出来てる

0番目の123を取得出来てる。

Sample/android/TypedArray/getInt/src/TypedArray at master · bg1bgst333/Sample · GitHub

TypedArray

TypedArrayは、型情報付きの配列オブジェクト。
中身どうなってるかもうちょっとみる。

TypedArray  |  Android Developers

arrays.xmlを、

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array name="mixedarray">
        <item>123</item>
        <item>456</item>
        <item>789</item>
    </array>
</resources>

とすると、

123, 456, 789が見える
123, 456, 789が見える

123と456と789が、少し間隔を開けて、見える。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array name="mixedarray">
        <item>123</item>
        <item>ABC</item>
        <item>789</item>
    </array>
</resources>

とすると、

ABCはどこへ行ったのだろうか
ABCはどこへ行ったのだろうか

ABCはどこへ行ったのだろうか。

3つ目を16進数の赤色表現に。

-65536ってのが赤色表現かな
-65536ってのが赤色表現かな

-65536ってのが赤色表現かな。
整数にできるやつは残ってる。

Sample/android/TypedArray/TypedArray/src/TypedArray at master · bg1bgst333/Sample · GitHub