Android Studio最速入門~効率的にコーディングするための使い方

第3回 はじめましてのAndroidアプリケーション

この記事を読むのに必要な時間:およそ 7 分

はじめてのAndroid開発

いくら筆者がAndroid開発未経験とはいえ,プロジェクトを作って,何もせず実行してみただけではあんまりなので,ちょっとだけプログラムを修正してみましょう。プロジェクトの初期状態では1つのアクティビティ MainActivity.javaと,それに対応するレイアウトactivity_main.xmlがあります。

Projectツールウィンドウから見たプロジェクト構造は図13のとおりです。

図13 プロジェクト構造

図13 プロジェクト構造

このプロジェクトに次の修正をしてみましょう。

  • 新しいレイアウトactivity_second.xmlを作成する(レイアウトにはテキストラベルとボタンを配置する)⁠
  • 新しいレイアウト用にアクティビティSecondActivity.javaを作成し,処理を記述する
  • 既存のレイアウトactivity_main.xmlにテキストフィールドとボタンを追加する
  • 既存のアクティビティMainActivity.javaを修正してボタンを押された処理を追加する

画面遷移として図示すると図14のようになります。最初の画面のテキストフィールドに入力した値を次の画面に表示する,といったごく簡単なものです。

図14 修正後の画面遷移イメージ図

図14 修正後の画面遷移イメージ図

新しいレイアウトの作成

ProjectツールウィンドウからレイアウトディレクトリMyFirstApp/MyFirstApp/src/main/res/layoutを選択して,メニューバーの「File→New...」を実行します。図15のような「Newポップアップ」が表示されるので,そこからLayout resource fileを選び,新しいレイアウトリソースactivity_second.xmlを作成します(入力した値は表5を参照)⁠

図15 新しいレイアウトリソースの作成(クリックすると操作の動きがわかります)

表5 新しいレイアウトリソースの入力値

項目入力値
File nameactivity_second
Root elementLinearLayout

Android Studio(およびJetBrains系IDE)の特徴なのですが作りたいファイルは,作りたい場所で作成を指示します」⁠他のIDEによくある「新規作成」⁠⁠ウィザードで問い合わせ」⁠⁠然るべき場所に然るべきファイルができる」という類いの操作はほとんどありません。この「Newポップアップ」も呼び出した場所によってメニューの内容が異なります。

レイアウトリソースを作成すると,そのファイルを開き,図16のようなデザイナ画面になります。このデザイナ画面が,Android Studioの目玉機能のひとつのようです。

図16 レイアウトのデザイナ画面

図16 レイアウトのデザイナ画面

それでは,画面左側のPaletteから「Large Text」⁠Button」をレイアウトにドラッグ&ドロップしてレイアウトを完成させましょう図17)⁠

図17 レイアウトへ部品を配置す(クリックすると操作の動きがわかります)

部品のプロパティは,画面右側の「Properties」で確認や変更ができます。レイアウト上の部品をダブルクリックすると,頻繁に使うであろう「text」「id」を直接編集することができます図18)⁠

図18 レイアウト上の部品からtext/idを確認する(クリックすると操作の動きがわかります)

idを確認する` &title=`図18 レイアウト上の部品からtext/idを確認する` &width=`400` />

今回,それぞれの部品のidはデフォルトのままとしますが,せっかくなのでButtonのラベル(text)のみ外部化してみましょう。レイアウト上のButton部品を選択し,⁠text」「…」ボタンを押します。⁠Resources」画面が表示されますが,該当するリソース名はまだ存在していませんので,画面下の「▼New Resource」ボタンを押し「New String Value...」を選択します。⁠New String Value Resource」ダイアログが表示されるのでリソース情報を登録します図19表6)⁠

図19 Buttonのラベル名を外部化する(クリックすると操作の動きがわかります)

表6 Buttonラベルのリソース情報

項目設定した値
Resource nameback
Resource valueGo Back

これで新しいレイアウトの準備が整いましたので,次はそれを扱うアクティビティを作ってみましょう。

新しいアクティビティの作成

それでは,先ほど作ったレイアウトactivity_second.xmlを扱うアクティビティSecondActivity.javaを作成してみましょう。アクティビティはJavaのプログラムなので,既存のアクティビティMainActivity.javaと同じ場所MyFirstApp/MyFirstApp/src/main/java/com/example/myfirstappに作成します。

レイアウトの時と同様に,Projectツールウィンドウで作成したい場所を選んでから作成指示を出しますが,今回は趣向を変えてコンテキストメニューから作成してみましょう。⁠Newポップアップ」との違いは,コンテキストメニューに展開されてるくらいでしかありません。どちらを好んで使うかは人それぞれです図20表7)⁠

図20 アクティビティの新規作成(クリックすると操作の動きがわかります)

表7 アクティビティの新規作成の入力値

項目入力した値
NameSecondActivity
KindActivity
Label@string/app_name

この連載の読者にIntelliJユーザはそれほど多くないと思うので説明しますと,通常Javaのソースコードを作成する場合は「New」メニューから「Java Class」を選ぶのですが,アクティビティなどのAndroid用コンポーネントの場合はAndroid Compomentから作成してください。こちらから作成したコンポーネントは,もれなくマニフェストAndroidManifest.xmlにも情報が登録されるので何かと便利です。

先ほどの図20を見てもわかるように「Label」部分には入力補完が効きませんでした。レイアウトリソース作成の時は「Root Element(ルート要素)⁠に入力補完が効いて便利だっただけに,少々残念です(今後に期待しましょう)⁠

作成したアクティビティのコードはあまり深く考えず,リスト1を丸ごとコピペして書き換えましょう(コーディングのコツやテクニックは,次回以降でちゃんと説明しますので,もうしばらくお待ちください)⁠

リスト1 SecondActivity.java

package com.example.myfirstapp;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import static android.view.View.OnClickListener;

public class SecondActivity extends Activity {
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);

    TextView textView = (TextView) findViewById(R.id.textView);
    textView.setText(getIntent().getStringExtra("inputText"));

    findViewById(R.id.button).setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View view) {
        Intent intent = new Intent(SecondActivity.this, MainActivity.class);
        startActivity(intent);
      }
    });
  }
}

[コラム]レイアウトとアクティビティの関連付け

今のところ,Android Studioでアクティビティから対応するレイアウトにジャンプする機能は無いようです。その代わりSecondActivity.javaのソースコードが完成した時点でactivity_second.xmlのデザイン画面を開くと図21のようにアクティビティへ関連付けすることができます。

図21 レイアウトからアクティビティへの関連付け(クリックすると操作の動きがわかります)

これを行う事で,レイアウトから関連付けしたアクティビティにジャンプできます。関連付けの実体はactivity_second.xmlのルート要素(LinearLayout)tools:context属性でしたリスト2)⁠

リスト2 activity_second.xml(一部)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              tools:context=".SecondActivity">

これが便利なのかどうか,いまいち判断が付きづらいのですが,参考までに。

著者プロフィール

今井勝信(いまいまさのぶ)

システムエンジニア。日本ユニシス株式会社所属。仙台在住。

Android開発はまったくやったことがないけれどIntelliJ IDEAが大好き。

Twitter: @masanobuimai