Java
Android
AndroidStudio
android開発
Java11

2年目ポケモントレーナー系SEのandroidアプリ開発まとめ〜1日目〜

はじめに

本当は「Fラン文系でもわかるプログラミング」シリーズとして書いていきたかったのですが、
1. 記事一つあたりに費やすエネルギーが尋常じゃないこと
2. 記事を書くために調べるより、開発するために調べたことで記事を書くほうが有意義だと思ったこと
3. ちょっとずつじゃないと続かないと気づいたこと

以上の3点の理由により、今日から新シリーズ「2年目ポケモントレーナー系SEのandroidアプリ開発まとめ」シリーズで記事を書いていきたいと思います。

下記URLのInstagramCloneAppを進めていく上で初めて知ったこと、つまづいたこと単位でまとめていきたいと思っています。
https://www.youtube.com/channel/UCoNZZLhPuuRteu02rh7bzsw
なお、すでに40パートほど進めてあります。

LayoutInflaterクラス

xmlファイルを対応するViewオブジェクトにインスタンス化するために使用される。
Inflatingとは、レイアウトを記述するxmlファイルを読み込み、
それに対応する実際のオブジェクトを作成し、オブジェクトをandoroidアプリ内で可視化することを意味する。

参考:https://code.i-harness.com/ja/q/350fae

xmlファイルからViewを生成する時にLayoutInflater#inflate()を使用する。
関数呼び出しのパターンと解説は以下の通り。

1. inflate(int resource, ViewGroup root)
   Inflate a new view hierarchy from the specified xml resource.

2. inflate(XmlPullParser parser, ViewGroup root)
   Inflate a new view hierarchy from the specified xml node.

3. inflate(XmlPullParser parser, ViewGroup root, boolean attachToRoot)
   Inflate a new view hierarchy from the specified XML node.

4. inflate(int resource, ViewGroup root, boolean attachToRoot)
   Inflate a new view hierarchy from the specified xml resource.

調べたところ、「指定したxmlのレイアウト(View)リソースを利用できる仕組み」というのが一番しっくりきた。
xmlをViewに変換して表示させるために使用するみたい。

"Inflate"って単語はこの業界じゃ結構ポピュラーな言葉なのかしら?
android特有のクラスかと思っていたら、java標準のクラスだったので、覚えておいたほうが良さそう。
android特有のクラスでした。。。
リファレンスはこちら。
https://developer.android.com/reference/android/view/LayoutInflater
ちなみに僕がみていたのはこちら。
http://cr.openjdk.java.net/~iris/se/11/latestSpec/api/java.base/java/util/zip/Inflater.html
Inflater自体は他でも存在していることがわかったので結果オーライ。

ちなみに使用しているコードはこんな感じ。

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.dialog_confirm_password, container,false);
    mPassword = view.findViewById(R.id.confirm_password);

    TextView confirmDialog = (TextView) view.findViewById(R.id.dialogConfirm);
    -------以下略-------

今回は他の画面からパスワード入力用のダイアログを表示する際にinflaterを渡してあげて、それを使ってダイアログのViewを取得してます。

LayoutInflater#inflate

ビューを定義するres/layout/*.xmlファイルをアプリケーションのソースコードで使用可能な実際のViewオブジェクトに変換する手段を提供する。
実際にレイアウトをオブジェクト化しているのがこの関数のよう。

Viewクラス

Viewクラスは、ビューの土台となる機能を持っているクラス。
ビューとなるクラスは、このクラスを継承する。
参考:https://mitoroid.com/category/android/android_view_class.php

レイアウトに配置した色々なwidget(TextViewやImageView)が入ってくる。
スーパークラスで受け皿として使うことが多そう。

まとめ

今日はLayoutInflaterViewについて。
これからちょっとずつ記事の質をあげていきます。
お疲れ様でした。