今すぐできる! Android 7.0の新機能「マルチウィンドウ」をアプリ開発で活用する方法 (1/2)|翔泳社の本

今すぐできる! Android 7.0の新機能「マルチウィンドウ」をアプリ開発で活用する方法

2016/11/28 07:00

 翔泳社が11月17日に刊行した『ほんきで学ぶAndroidアプリ開発入門 第2版』より、Android 7.0の新機能「マルチウィンドウ」をアプリ開発で活用する方法を解説した「LESSON37 マルチウィンドウ機能を使う」を紹介します。

※『ほんきで学ぶAndroidアプリ開発入門 第2版 Android Studio、Android SDK 7対応 ダウンロード』より抜粋(記事に合わせ一部変更)。使用しているサンプルプロジェクトはこちらからダウンロードできます。

 Android 7.0(Nougat)で追加されたマルチウィンドウについて学習します。最新OSではマルチウィンドウ機能をOS上でサポートしているため、マルチウィンドウに対応する・しないどちらにせよ、アプリを正しく動作させるためにどういう対処が必要か知っておく必要があります。

 まず手を動かして手法を掴みたい方は下記「実習」から、先にマルチウィンドウについて詳しく知りたい方は次ページの「講義」から読み進めてみてください。

実習 マルチウィンドウの画面分割を体験する

1 サンプルプロジェクトをインポートする

 サンプルプロジェクト「Chapter09/Lesson37/before」をインポートします。[Welcome to Android Studio]画面から[Import project (Eclipse ADT, Gradle,etc.)]を選択します(図1(1))。[ファイル選択]ダイアログが表示されるので、インポートしたいプロジェクトのフォルダ(Lesson37/before)を選択して(2)、[OK]ボタンをクリックします(3)。読み込みが完了するとプロジェクトを開いた状態になるので、[Android]から[Project]に変更しておきます(4)。

図1 サンプルプロジェクトのインポート
図1 サンプルプロジェクトのインポート

2 MainActivityのレイアウトを編集する

 app/src/main/res/layout/activity_main.xmlを開いて、リスト1のように編集してください。

リスト1 activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<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:orientation="vertical"
  android:padding="16dp"
  tools:context="com.kayosystem.honki.chapter09.lesson37.MainActivity">

  <Button
    android:id="@+id/launch_activity"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="16dp"
    android:text="@string/launch_second_activity" />
  <Button
    android:id="@+id/launch_activity_new_window"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="16dp"
    android:text="@string/launch_second_activity_new_window" />

  <fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/loglist_fragment"
    android:name="com.kayosystem.honki.chapter09.lesson37.LogListFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="16dp"
    android:background="@android:color/white" />
</LinearLayout>

3 アプリ内で使用する文字列を編集する

 app/src/main/res/values/strings.xmlを開いて、リスト2のように編集してください。

リスト2 strings.xml
<resources>
  <string name="app_name">Lesson37</string>
  <string name="name_second_activity">これはSecondActivityです</string>
  <string name="launch_second_activity">SecondActivityを起動</string>
  <string name="launch_second_activity_new_window">SecondActivityを別ウィンドウで起動</string>
</resources>

4 MainActivityのJavaプログラムを編集する

 app/src/main/java/(Company Domain名)/MainActivity.javaを開いて、リスト3のように編集してください。

リスト3 MainActivity.java
(省略)
import android.content.res.Configuration;
import android.util.Log;

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  findViewById(R.id.launch_activity).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
      Intent intent = new Intent(MainActivity.this, SecondActivity.class);
      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      startActivity(intent);
    }
  });
  findViewById(R.id.launch_activity_new_window).setOnClickListener(newView.OnClickListener() {
    @Override
    public void onClick(View view) {
      Intent intent = new Intent(MainActivity.this, SecondActivity.class);
      intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT | Intent.FLAG_ACTIVITY_NEW_TASK);
      startActivity(intent);
    }
  });
}
(省略)

5 SecondActivityを追加する

 app/src/main/java/(Company Domain名)/MainActivity.javaを右クリックし(図2(1))、メニューから[New](2)→[Activity](3)→[Empty Activity]を選択します(4)。[Configure Activity]画面が表示されるので「ActivityName」を「SecondActivity」に変更し(5)、[Generate LayoutFile]のチェックを外して(6)、[Finish]ボタンをクリックします(7)*。

*SecondActivityのレイアウトファイルは事前に準備しています。

図2 [Empty Activity]を選択
図2 [Empty Activity]を選択

6 SecondActivityのJavaプログラムを編集する

 app/src/main/java/(Company Domain名)/SecondActivity.javaを開いて、リスト4のように編集してください。

リスト4 SecondActivity.java
(省略)

public class SecondActivity extends LogActivity {
  @Override
  public int getActivityLayoutId() {
    return R.layout.activity_second;
  }
}

7 AndroidManifest.xmlを編集する

 app/src/main/AndroidManifest.xmlファイルを開いて、リスト5のように編集してください。

リスト5 AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.kayosystem.honki.chapter09.lesson37">
  <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
      android:name="com.kayosystem.honki.chapter09.lesson37.MainActivity"
      android:label="@string/app_name">
      <intent-fi lter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-fi lter>
    </activity>
    <activity
      android:name=".SecondActivity" />
  </application>
</manifest>

8 アプリを実行する

 アプリを実行すると図3のようなメイン画面が表示されます。オーバービューボタンを長押しすると画面が分割するので(1)、[SECONDACTIVITYを別ウィンドウで起動]ボタンをクリックすると(2)、SecondActivityが画面下半分に表示されます(3)。メイン画面とSecondActivityには、それぞれのライフサイクルが表示され、画面をクリックするとアクティブになるのでライフサイクルの変化を確認してください。

図3 マルチウィンドウの実行画面
図3 マルチウィンドウの実行画面
ほんきで学ぶAndroidアプリ開発入門 第2版

Amazon   SEshop   その他

ほんきで学ぶAndroidアプリ開発入門 第2版
Android SDK 7/Android Studio 2.X対応

著者:株式会社Re:Kayo-System
発売日:2016年11月17日(木)
価格:3,024円(税込)

本書について

本書は、はじめてAndroidアプリを作成する開発者を対象とした入門書です。楽しみながら新機能をしっかり学べるミニアプリを元にLESSON形式で学べます。また練習問題が章末についていますので、学習効果を自分で確認できます。