|
【カテゴリ】 モバイル開発
基礎&応用力をしっかり育成!Androidアプリ開発の教科書 第3版 Kotlin対応
|
WINGSプロジェクト 齊藤 新三/著
山田祥寛/監修
株式会社 翔泳社/発行
定価
3,135円
B5変版・
472ページ・
2色
ISBN 978-4-7981-7613-0
発刊日:
2023年1月24日
|
[お知らせ] 2023/05/11、Android Studio Flamingoによるサンプルへの影響について、PDFへまとめてサンプルに同梱しました。
本書の特徴
「Androidアプリ開発の基礎力」を習得しよう
本書は、Kotlin言語の学習者を対象として、ハンズオン形式でサンプルプログラムを作りながら、Androidアプリ開発に必要な基礎知識やSDKの機能、プログラミングテクニックを学ぶことができる書籍です。
最新の開発環境Android Studio Dolphin(2021.3.1)を利用します。
同シリーズ「基礎&応用力をしっかり育成!Androidアプリ開発の教科書 第3版 Java対応」と同じ構成でKotlinに対応させているため、KotlinとJavaを読み比べながら学んでいくことも可能です。
まとめて読んで 更にスキルアップのこんな書籍
- ・JavaでのAndroid開発を学びたいなら
- 「基礎&応用力をしっかり育成!Androidアプリ開発の教科書 第3版 Java対応」(翔泳社)
- ・Javaを使いこなすリファレンス
- 「改訂3版Javaポケットリファレンス」(技術評論社)
- ・Javaを基礎から学ぶなら
- 「独習Java 新版」(翔泳社)
- ・Kotlinの基礎をサクッと学ぶなら
- 「速習 Kotlin」(WINGSプロジェクト)
Contents |
- 第1章 Androidアプリ開発環境の作成
-
1.1 Androidのキソ知識
1.1.1 Androidの構造
1.1.2 Android Studio
1.1.3 Kotlin言語の正式サポート
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 リストビュータップのリスナはonItemClickListenerプロパティに代入
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 Intentの引き継ぎデータはBundleに格納されている
7.2.7 タップ処理をメソッドで記述できるonClick属性
7.2.8 戻るボタンの処理はアクティビティの終了
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値とwhen文
- 第9章 フラグメント
-
9.1 フラグメント
9.1.1 前章までのサンプルをタブレットで使うと
9.1.2 フラグメントによる画面構成
9.2 スマホサイズのメニューリスト画面のフラグメント化
9.2.1 メニューリスト画面をフラグメントで実現する
9.2.2 フラグメントはアクティビティ同様にXMLとKotlinクラス
9.2.3 表示画面の指定はコンストラクタを利用
9.2.4 フラグメントのライフサイクル
9.2.5 onViewCreated()の記述方法
9.2.6 フラグメントでのコンテキストの扱い
9.2.7 フラグメントのアクティビティへの埋め込み
9.3 スマホサイズの注文完了画面のフラグメント化
9.3.1 注文完了画面をフラグメントで実現する
9.3.2 フラグメントを利用した画面遷移
9.3.3 フラグメントを利用した遷移のキモはFragmentManager
9.3.4 フラグメントトランザクション
9.3.5 フラグメント間のデータ引き継ぎはBundle
9.3.6 バックスタックへの追加
9.3.7 バックスタックからポップ
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 タブレットサイズでの注文完了表示もreplace()
9.5.5 タブレットサイズでの戻るボタンは自分自身の削除
- 第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.2のポイント
11.4 Androidの非同期処理
11.4.1 非同期処理の基本コードを記述する
11.4.2 非同期処理の中心であるExecutor
11.4.3 非同期処理の実態はrun()かcall()メソッド内の処理
11.4.4 Callableではcall()の戻り値の型を指定
11.4.5 Callableを実行したsubmitの戻り値はFutureオブジェクト
11.4.6 アノテーションの追記
11.4.7 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 JSON解析の最終目標はgetString()
11.7 ワーカースレッドからの通知
11.7.1 ワーカースレッドからUIスレッドに通知を行うHandler
11.7.2 サンプルプロジェクトの作成
11.7.3 Handlerを利用したコードを追記する
11.7.4 スレッド間通信を行うにはHandlerのpost()メソッドを利用
11.7.5 Handlerオブジェクトの用意にはLooperが必要
11.7.6 JSON処理に関するコードを追記する
11.7.7 HandlerとCallableの相性は悪い
11.8 Kotlinコルーチンによる非同期処理
11.8.1 コルーチンとは
11.8.2 コルーチンとコルーチンスコープ
11.8.3 サンプルプロジェクトの作成
11.8.4 weatherInfoBackgroundRunner()メソッドのポイント
11.8.5 コルーチンに関するコードを記述する
11.8.6 Kotlinコルーチンには追加ライブラリが必要
11.8.7 ライフサイクルと一致したコルーチンスコープ
11.8.8 処理を中断させるにはsuspendを記述する
11.8.9 メソッド内の処理スレッドを分けるwithContext()関数
11.8.10 suspendの真の意味
11.8.11 Kotlinコルーチンのコードパターン
- 第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 メディアのループ設定はisLoopingプロパティ
- 第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 Androidストレージ内部のファイルはURIで指定する
15.2.3 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.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 リスナはインフレートした画面部品に対して設定する
- Note
-
Android Studioの動作環境
漢字表記のユーザー名に注意
HAXMのインストール
Android Studioの日本語化
Javaクラスの一意性
AVDのツールバーとジェスチャーナビゲーション
AVDの終了
Androidビューのファイル構成にならない場合
プロジェクトの閉じ方
プロジェクトの削除
単位
警告について
左右余白について
オーバーライド
AppCompatActivityクラス
Android Studioでクラスのインポートを行う
リスナインターフェース
インナークラスとオブジェクト式
onItemClick()の第2引数viewの利用例
コンテキスト
プロパティのセッタか通常のメソッドか
AndroidXライブラリのDialogFragment
AlertDialogのインポート
etCommentのテキスト位置
データを加工しながらListViewを生成するには
警告について
Intentのコンストラクタ引数
apply関数
ログレベル
xmlns:app属性のインポート
app:showAsActionとandroid:showAsAction
メニューの入れ子
トランザクション
DialogFragmentはフラグメント
フラグメントでオプションメニューを使うには
開発中はアプリをアンインストールする
Android内データベースの主キーは_id
非同期でデータベース接続オブジェクトの取得
rawQuery()でバインド変数を使う方法
SQL文を使わない方法
Room
UIスレッドとワーカースレッド
AsyncTask
HTTP接続がPOSTの場合
スレッドセーフ
ViewModel
WebView
音声ファイルはなぜURI指定か?
onPrepared()とonCompletion()の引数
通知設定
PagingIntentとバックスタック
URLエンコーディング
カメラアプリの起動
リスト15.3でコンパイルエラー
アプリのテーマ指定
elevationの値
アクションバーサイズのアプリバーのサブタイトルは非推奨
- コラム
-
Android Studioの設定ファイルの格納先
ソフトウェアキーボードの選択
ビルド失敗とBuildツールウィンドウ
Welcome画面でのアップデートの表示
Structureツールウィンドウ
プロジェクトのzipファイルを作成する
Android公式ドキュメント
タイムゾーンの設定
|
|