logo header
logo header
logo header
logo header
  • 2017.04.28
  • 技術ブログ開発

Android アプリ開発奮闘記2 - string-arrayとListView

Android word cloud
Android アプリ開発奮闘記シリーズの2回目となる今回は、文字列配列(string-array)について取り上げてみたいと思います。

Androidアプリ開発奮闘記とは

INDETAILの社内教育の一環として行われている『アプリ開発研修』の振り返りの一環として、「北海道をテーマにした小説アプリ」をテーマに、初心者向けAndroidアプリ開発の手順をご紹介している連載です。

前回の記事

Androidアプリ開発奮闘記1 - アクティビティとstrings.xml

 

前回は「Hello World!」の文字列を「ようこそ北海道へ!」と変更しましたが、今回は小説の舞台となる5つの都市が表示されるところまで完了させたい思います。

string-array

まずstrings.xml内にstring-arrayタグを追加し、その中に配列として都市名を格納します。

 

strings.xml

赤枠内のようにstring-arrayタグを使用して個人的に住んだことのある街とプラス1都市を定義してみました。

ついでに「物語の舞台を選んでください」というガイダンスとなる文字列も追加しています。

ListView

次に下記のようにacvtivity_main.xml内でListViewタグを使用して、先ほど定義した都市の文字列配列を関連付けます。

 

activity_main.xml

オブジェクトのサイズを調整するには、android:layout_widthandroid:layout_height 属性を使用しますが、次の指定方法があります。

match_parent

表示可能な領域をフルに使用します。

wrap_content

適度なサイズに自動調整します。

dp

density-independent pixelsの略で、密度非依存ピクセルのこと。直接、値を指定してサイズを調整します。

 

以上、簡単に説明しましたが、Androidは端末によって画面の解像度が大きく異なるため、レイアウト調整が大変だと聞いたことがあります。しかし今回は研修での自習を通して開発しているため、その辺に関しては特に気にせず進めることにします。

(レイアウトに関しては後日詳細を調べ、あらためて記事にする予定です)

それでは実行してみます。

 

このように、表示はされましたが、各オブジェクトが重なってしまい、レイアウトの修正が必要な状況のようです。

そのような場合のために、Android Studioにはデザイナーモード機能が備わっており、下図のようにactivity_main.xmlを開いた状態で、赤枠内の[Design]をクリックするとデザインモードへ遷移できます。

 

都市名を表示させる文字列配列が画面いっぱいに広がっていたため、左半分まで縮小させ、2つの文字列を右側に寄せてみました。マウスで調整できるので便利ですね。

それではここで再度実行してみます。

 

すっきりしましたね。このような配置は画面デザインのセンスとして疑問もありますが、今回は小説を載せるアプリをイメージしているため、シンプルかつ地味なデザインのままで進めていきたいと思います。

トースト表示機能

最後に、トースト表示機能というものがあることがわかり、試してみようと思いました。

「ようこそ北海道へ!」という文字列をアプリ起動時にトースト表示される機能を実装するためには、次のコードをMainActivity.javaファイルに追加します。

Toast.makeText(this, "ようこそ北海道へ!", Toast.LENGTH_LONG).show();

 

無事、トースト表示がされました。

また、Toast.LENGTH属性で表示時間を調整できますが、Toast.LENGTH_LONGと指定すると約5秒間、Toast.LENGTH_SHORTと指定した場合は約2秒間表示されることを確認できました。

今回のまとめ

今回で小説の舞台となる各都市のリストを表示することはできました。通常であればレイアウトのデザイン等も必要かと思いますが、ゲームアプリのような手の込んだアプリを目指しているわけではないため、まず都市を選択すると小説が表示されるところまで実現させることを目標にしています。

連載の後半ではレイアウトおよび各機能について細部まで勉強し、スキルを深めていきたいと考えています。

ともに世界をアップグレードできる、そんな日を夢見て。
Upgrade the World!