基礎&応用力をしっかり育成!Androidアプリ開発の教科書 第2版 Java対応 なんちゃって開発者にならないための実践ハンズオン


基礎&応用力をしっかり育成!Androidアプリ開発の教科書 第2版 Java対応 なんちゃって開発者にならないための実践ハンズオン


翔泳社


著者:WINGSプロジェクト 齊藤新三
監修:山田祥寛


はじめに
本書の使い方

第1章 Androidアプリ開発環境の作成
1.1 Androidのキソ知識
1.1.1 Android の構造
1.1.2 Android.Studio
1.2 Android Studioのインストール
1.2.1 Windows の場合
1.2.2 macOS の場合
1.2.3 Android.Studio の初期設定を行う
1.2.4 アップデートを確認
1.2.5 追加の SDK をダウンロード

第2章 はじめてのAndroidアプリ作成
2.1 はじめてのAndroidプロジェクト
2.1.1 Android.Studio の HelloAndroid プロジェクトを作成する
2.1.2 Android.Studio プロジェクトの作成はウィザードを使う
2.1.3 プロジェクト作成情報
2.2 AVDの準備
2.2.1 AVD を作成する
2.2.2 AVD を起動して初期設定を行う
2.3 アプリの起動
2.3.1 アプリを起動する
2.4 Android Studioの画面構成とプロジェクトのファイル構成
2.4.1 Android.Studio の画面構成と Project ツールウィンドウのビュー
2.4.2 Android ビューのファイル構成
2.4.3 異なる画面密度に自動対応するための修飾子
2.5 Androidアプリ開発の基本手順
2.5.1 レイアウトファイルとアクティビティ
2.5.2 strings.xml の働き
2.5.3 Android アプリ開発手順にはパターンがある

第3章 ビューとアクティビティ
3.1 ビューの基礎知識
3.1.1 ラベルを画面に配置する
3.1.2 レイアウトファイルを編集する「レイアウトエディタ」
3.1.3 画面部品の配置を決めるビューグループ
3.1.4 画面部品そのものであるビュー
3.1.5 画面構成はタグの組み合わせ
3.1.6 画面部品でよく使われる属性
3.2 画面部品をもう1つ追加する
3.2.1 入力欄を画面に配置する
3.2.2 アプリを手軽に再実行する機能
3.2.3 入力欄の種類を設定する属性
3.3 レイアウトエディタのデザインモード
3.3.1 デザインモードでの画面各領域の名称
3.3.2 デザインモードのツールバー
3.4 デザインモードで部品を追加してみる
3.4.1 デザインモードでの画面作成手順
3.4.2 デザインモードでボタンを画面に配置する
3.4.3 XML がどうなったか確認してみる
3.5 LinearLayoutで部品を整列する
3.5.1 LinearLayout を入れ子に配置する
3.5.2 レイアウト部品を入れ子にした場合の画面構成
3.6 他のビュー部品──ラジオボタン/選択ボックス/リスト
3.6.1 単一選択ボタンを設置する──ラジオボタン
3.6.2 複数の RadioButton は RadioGroup で囲む
3.6.3 選択ボックスを設置する── Spinner
3.6.4 リストデータは string-array タグで記述する
3.6.5 リストを表示する── ListView
3.6.6 余白を割り当てる layout_weight 属性
3.6.7 一定の高さの中でリストデータを表示する ListView

第4章 イベントとリスナ
4.1 アプリ起動時に実行されるメソッド
4.1.1 画面を作成する
4.1.2 アクティビティのソースコードを確認する
4.1.3 リソースを管理してくれる R クラス
4.2 イベントリスナ
4.2.1 イベントとイベントハンドラとリスナ
4.2.2 Android でリスナを設定する手順
4.2.3 リスナクラスを作成する
4.2.4 リスナクラスは専用のインターフェースを実装する
4.2.5 イベントハンドラメソッドに処理を記述する
4.2.6 アクティビティ内で画面部品を取得する処理
4.2.7 入力文字列の取得と表示
4.2.8 リスナを設定する
4.2.9 リスナインターフェースに対応したリスナ設定メソッド
4.3 ボタンをもう1つ追加してみる
4.3.1 文字列とボタンを追加する
4.3.2 追加されたボタンの処理を記述する
4.3.3 id で処理を分岐

第5章 リストビューとダイアログ
5.1 リストタップのイベントリスナ
5.1.1 画面を作成する
5.1.2 リストをタップしたときの処理を記述する
5.1.3 リ.ストビュータップのリスナはOnItemClickListener インターフェースを実装する
5.1.4 お手軽にメッセージを表示できるトースト
5.1.5 リストビュータップのリスナは setOnItemClickListener() メソッドで登録
5.2 アクティビティ中でリストデータを生成する
5.2.1 アクティビティ中でリストを生成するサンプルアプリを作成する
5.2.2 リストビューとリストデータを結びつけるアダプタクラス
5.3 ダイアログを表示する
5.3.1 ダイアログを表示させる処理を記述する
5.3.2 Android のダイアログの構成
5.3.3 ダイアログを表示するには DialogFragment を継承したクラスを作成する
5.3.4 ダイアログオブジェクトの生成処理はビルダーを利用する
5.3.5 ダイアログのボタンタップは which で分岐する

第6章 ConstraintLayout
6.1 ConstraintLayout
6.1.1 Android.Studio のデフォルトレイアウト
6.1.2 ConstraintLayout の特徴
6.2 制約の設定には制約ハンドルを使う
6.2.1 TextView が 1 つだけの画面を作成する
6.2.2 設定された制約の確認
6.3 ConstraintLayoutにおける3種類のlayout_width/height
6.3.1 「名前」のラベルと入力欄を追加する
6.3.2 ConstraintLayout では独特の layout_width/height
6.3.3 残りの部品を追加する
6.4 横並びとベースライン
6.4.1 横並びに変更も簡単
6.4.2 ベースラインを揃える
6.5 ガイドラインを利用する
6.5.1 「名前」入力欄と「メールアドレス」入力欄の左端を揃える
6.5.2 制約の設定先として利用できるガイドライン
6.6 チェイン機能を使ってみる
6.6.1 ボタンを 3 つ均等配置する
6.6.2 複数の画面部品をグループ化できるチェイン機能

第7章 画面遷移とIntentクラス
7.1 2行のリストとSimpleAdapter
7.1.1 定食メニューリスト画面を作成する
7.1.2 柔軟なリストビューが作れるアダプタクラス SimpleAdapter
7.1.3 データと画面部品を結びつける from-to
7.2 Androidの画面遷移
7.2.1 画面遷移のコードと新画面のコードを記述する
7.2.2 画面を追加する 3 種の作業
7.2.3 Android の画面遷移は遷移ではない
7.2.4 アクティビティの起動とインテント
7.2.5 引き継ぎデータを受け取るのもインテント
7.2.6 タップ処理をメソッドで記述できる onClick 属性
7.2.7 戻るボタンの処理はアクティビティの終了
7.3 アクティビティのライフサイクル
7.3.1 アクティビティのライフサイクルとは何か
7.3.2 ライフサイクルをアプリで体感する
7.3.3 Android のログレベルと Log クラス
7.3.4 ログの確認は Logcat で行う
7.3.5 ライフサイクルコールバックをログで確認する

第8章 オプションメニューとコンテキストメニュー
8.1 リストビューのカスタマイズ
8.1.1 IntentSample アプリと同じ部分を作成する
8.1.2 リストビュー各行のカスタマイズはレイアウトファイルを用意するだけ
8.2 オプションメニュー
8.2.1 オプションメニューの例
8.2.2 オプションメニュー表示を実装する
8.2.3 オプションメニュー表示は XML とアクティビティに記述する
8.2.4 オプションメニュー選択時処理を実装する
8.2.5 オプションメニュー選択時の処理は ID で分岐する
8.3 戻るメニュー
8.3.1 戻るメニューを実装する
8.3.2 戻るメニュー表示は onCreate() に記述する
8.4 コンテキストメニュー
8.4.1 コンテキストメニューを実装する
8.4.2 コンテキストメニューの作り方はオプションメニューとほぼ同じ
8.4.3 コンテキストメニュー選択時の処理を実装する
8.4.4 コンテキストメニューでも処理の分岐は id の R 値と switch 文

第9章 フラグメント
9.1 フラグメント
9.1.1 前章までのサンプルをタブレットで使うと
9.1.2 フラグメントによる画面構成
9.2 スマホサイズのメニューリスト画面のフラグメント化
9.2.1 メニューリスト画面をフラグメントで実現する
9.2.2 フラグメントはアクティビティ同様に XML と Java クラス
9.2.3 フラグメントのライフサイクルと onCreateView() メソッド
9.2.4 フラグメントでのコンテキストの扱い
9.2.5 フラグメントのアクティビティへの埋め込み
9.3 スマホサイズの注文完了画面のフラグメント化
9.3.1 注文完了画面をフラグメントで実現する
9.3.2 様々なところで登場する所属アクティビティ
9.4 タブレットサイズ画面を作成する
9.4.1 メニューリスト画面を 10 インチに対応する
9.4.2 画面サイズごとに自動でレイアウトファイルを切り替えてくれる layout-##
9.4.3 10 インチの画面構成
9.5 注文完了フラグメントのタブレット対応
9.5.1 スマホサイズとタブレットサイズの処理の違い
9.5.2 注文完了フラグメントをタブレットに対応する
9.5.3 画面判定フラグがキモ
9.5.4 フラグメントトランザクション
9.5.5 Intent の引き継ぎデータは Bundle に格納されている
9.5.6 フラグメント間のデータ引き継ぎも Bundle

第10章 データベースアクセス
10.1 Androidのデータ保存
10.2 Androidのデータベース利用手順
10.2.1 カクテルのメモアプリを作成する
10.2.2 Android のデータベースの核となるヘルパークラス
10.2.3 データベース処理を追加する
10.2.4 データベースヘルパークラスの作り方
10.2.5 ヘルパーオブジェクトの生成、解放処理
10.2.6 データ更新処理
10.2.7 データ取得処理

第11章 非同期処理とWeb API連携
11.1 AndroidのWeb連携
11.1.1 Android の Web 連携の仕組み
11.1.2 OpenWeather の利用準備
11.1.3 OpenWeather の Web.API 仕様
11.2 非同期処理
11.2.1 Java 言語のメソッド連携は同期処理
11.2.2 非同期処理の必要性
11.3 サンプルアプリの基本部分の作成
11.3.1 お天気情報アプリを作成する
11.3.2 リスト 11.3 のポイント
11.4 Androidの非同期処理
11.4.1 非同期処理の基本コードを記述する
11.4.2 非同期処理の中心である Executor
11.4.3 非同期処理の実態は Runnable 実装クラスの run() メソッド内の処理
11.4.4 UI スレッドとの連携
11.4.5 Handler と Looper を利用したコードを追記する
11.4.6 非同期処理を UI スレッドに戻す Handler
11.4.7 確実に UI スレッドに処理を戻すには Looper が必要
11.4.8 アノテーションの追記
11.4.9 UI スレッドとワーカースレッドを保証してくれるアノテーション
11.5 HTTP接続
11.5.1 天気情報の取得処理を記述する
11.5.2 Android のインターネット接続は HTTP 接続
11.5.3 HTTP 接続の許可
11.5.4 HttpURLConnection クラスのその他のメソッド
11.6 JSONデータの扱い
11.6.1 JSON データの解析処理の追記
11.6.2 コンストラクタを利用して UI スレッドにデータを渡す
11.6.3 JSON 解析の最終目標は getString()

第12章 メディア再生
12.1 音声ファイルの再生
12.1.1 メディア再生アプリを作成する
12.1.2 メディア再生のコードを記述する
12.1.3 音声ファイルの再生は MediaPlayer クラスを使う
12.1.4 メディアの再生と一時停止
12.1.5 MediaPlayer の破棄
12.1.6 MediaPlayer の状態遷移
12.2 戻る・進むボタン
12.2.1 戻る・進む処理のコードを記述する
12.2.2 再生位置を指定できる seekTo()
12.3 リピート再生
12.3.1 リピート再生のコードを記述する
12.3.2 .スイッチ変更検出用リスナはOnCheckedChangeListener インターフェース
12.3.3 メディアのループ設定は setLooping() メソッド

第13章 バックグラウンド処理と通知機能
13.1 サービス
13.1.1 サービスサンプルアプリを作成する
13.1.2 サービスに関するコードを記述する
13.1.3 サービスは Service クラスを継承したクラスとして作成
13.1.4 サービスのライフサイクル
13.2 通知
13.2.1 通知とは
13.2.2 通知を実装する
13.2.3 通知を扱うにはまずチャネルを生成する
13.2.4 通知を出すにはビルダーとマネージャーが必要
13.3 通知からアクティビティを起動する
13.3.1 通知からアクティビティを起動する処理を実装する
13.3.2 通知からアクティビティの起動は PendingIntent を使う
13.3.3 通知と連携させるためにサービスをフォアグラウンドで実行す. .

第14章 地図アプリとの連携と位置情報機能の利用
14.1 暗黙的インテント
14.1.1 2 種のインテント
14.1.2 暗黙的インテントサンプルアプリを作成する
14.1.3 地図アプリとの連携に関するコードを記述する
14.1.4 暗黙的インテントの利用はアクションと URI
14.2 緯度と経度の指定で地図アプリを起動するURI
14.2.1 緯度と経度で地図アプリと連携するコードを記述する
14.3 位置情報機能の利用
14.3.1 位置情報取得のライブラリ
14.3.2 FusedLocationProviderClient の利用準備
14.3.3 位置情報機能利用コードの追記
14.3.4 位置情報利用の中心は FusedLocationProviderClient
14.3.5 第 2 引数のコールバッククラスの作り方
14.3.6 第 3 引数はコールバック処理を実行させるスレッドの Looper オブジェクト
14.3.7 第 1 引数は位置情報更新に関する設定を表す LocationRequest オブジェクト
14.4 位置情報利用の許可設定
14.4.1 . 位置情報機能利用の許可とパーミッションチェックのコードを記述する
14.4.2 アプリの許可はパーミッションチェックが必要
14.4.3 .パーミッションダイアログに対する処理は.onRequestPermissionsResult() メソッド

第15章 カメラアプリとの連携
15.1 カメラ機能の利用
15.1.1 カメラ機能を利用する 2 種類の方法
15.1.2 カメラ連携サンプルアプリを作成する
15.1.3 カメラアプリを起動する暗黙的インテント
15.1.4 アプリに戻ってきたときに処理をさせる
15.2 ストレージ経由での連携
15.2.1 ストレージ経由でカメラアプリと連携するように改造する
15.2.2 ストレージ利用許可を与える
15.2.3 Android ストレージ内部のファイルは URI で指定する
15.2.4 URI 指定でカメラを起動する

第16章 マテリアルデザイン
16.1 マテリアルデザイン
16.1.1 マテリアルデザインとは
16.1.2 Android のマテリアルデザイン
16.1.3 Android のマテリアルテーマの確認
16.1.4 マテリアルデザインの 4 色
16.2 ScrollView
16.2.1 ツールバーサンプルアプリを作成する
16.2.2 画面をスクロールさせたい場合には ScrollView を使う
16.3 アクションバーより柔軟なツールバー
16.3.1 ツールバーを導入する
16.3.2 ツールバーを使うにはアクションバーを非表示に
16.3.3 テーマの設定値の適用は ?attr/ で
16.3.4 ツールバーの各種設定はアクティビティに記述する
16.4 ツールバーのスクロール連動
16.4.1 スクロール連動サンプルアプリを作成する
16.4.2 スクロール連動のキモは CoordinatorLayout
16.4.3 アクションバー部分を連動させる AppBarLayout
16.4.4 CoordinatorLayout 配下でスクロールするには NestedScrollView を使う
16.4.5 enterAlways モードでのスクロール連動のまとめ
16.5 CollapsingToolbarLayoutの導入
16.5 CollapsingToolbarLayout の導入
16.5.1 CollapsingToolbarLayout を導入する
16.5.2 AppBarLayout のサイズを変更するには CollapsingToolbarLayout を使う
16.6 CollapsingToolbarLayoutにタイトルを設定する
16.6.1 CollapsingToolbarLayout にタイトルを設定する
16.6.2 CollapsingToolbarLayout は通常サイズと縮小サイズで文字色を変えられる
16.7 FloatingActionButton(FAB)
16.7.1 FAB を追加する
16.7.2 FAB は浮いたボタン
16.8 Scrolling Activity

第17章 リサイクラービュー
17.1 リストビューの限界
17.2 リサイクラービューの使い方
17.2.1 リサイクラービューサンプルアプリを作成する
17.2.2 リサイクラービューに関するソースコードを記述する
17.2.3 リサイクラービューにはレイアウトマネージャーとアダプタが必要
17.2.4 リストデータの見え方を決めるレイアウトマネージャー
17.2.5 リサイクラービューのアダプタは自作する
17.2.6 ビューホルダはアイテムのレイアウトに合わせて作成する
17.2.7 アダプタにはアイテムの生成とデータ割り当て処理を記述する
17.3 区切り線とリスナ設定
17.3.1 区切り線とリスナ設定のコードを記述する
17.3.2 区切り線は手動で設定する
17.3.3 リスナはインフレートした画面部品に対して設定する

索引
著者紹介・監修紹介