「findViewById」にイラつくことがなくなりそうなプラグイン「Android Layout ID Converter」
Androidデベロッパーのみなさん、「findViewById」にイラっとくることありませんか?
そんなイライラをライブラリなしですっきり解決する Android Studio プラグイン「Android Layout ID Converter」のご紹介をします。
プラグイン導入
なにはともあれ、プラグインをインストールしましょう。
Preferences... > Plugins > Browse Repositories... とたどっていき検索するとプラグインが表示されるので、[install plugin]ボタンを押します。
いつも通り Android Studio を再起動しろと言われて「は?」っと思いながらも再起動するとプラグインが有効化されます。
レイアウトXML
レイアウトのXMLファイルを作り、それぞれにidを付けます。
とりあえずこんな感じにしてみました。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context=".MyActivity"> <TextView android:id="@+id/text_label" android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editText" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Button" android:id="@+id/button" /> <SeekBar android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/seekBar" /> <RatingBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/ratingBar" /> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New RadioButton" android:id="@+id/radioButton" /> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New CheckBox" android:id="@+id/checkBox" /> <Spinner android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/spinner" /> <ToggleButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New ToggleButton" android:id="@+id/toggleButton" /> <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/progressBar" /> </LinearLayout>
ここからが本番
さあ、ここからがこのプラグインの本領発揮です。
手順 その1
レイアウトXML上で[control + alt + A]を入力する。
javaに変換するルールを選択して[OK]。
そうすると、画面右上に「クリップボードにコピーしましたよ!」ってでます。
手順 その2
おもむろにActivityに貼付ける。
Before
After
ごらんいただけるように、わずか2ステップで全ての「findViewById」の入力をこなしてくれました!
まとめ
こんな感じで、入力が非常に面倒な「findViewById」を簡単にアシストしてくれます。
prefixの有無や、フォーマットを選べるのは嬉しいですね。(ButterKnifeもあるんですね。。)
また、idにアンダースコアを含めていてもうまいことフィールド名をつくってくれます。
実際のところ、何を変換するか選択できればいいなあとも思いますがとりあえずidを付けなければ変換されないので、そこらへんは適宜調整といったところでしょうか。
Viewの数が多い場合なんかに一発でjavaに変換できるところは魅力的だと思います。
「findViewById」にイラついたら是非お試し下さい。