API例えばIoT機器を買ってきて、セットアップが必要な場合、電源をいれてスマホからWifi経由で繋ぐというケースがある。Suggestionは使えない。SSIDのパターンや、BSSID(MACアドレス)のパターンを登録する。オブジェクトを組み立てる。「インターネット接続はいらない」といった設定を付与できる。APIを使って確認するだけ(ソースなし。)ベストプラクティス必要ないときは位置情報をとらない必要になったときに許可をとる位置情報取得の理由をユーザーに伝えようアプリ起動直後に「位置情報使うよ」のダイアログを出さないようにしようインクリメンタルに聞こう(バックグラウンドで取得する必要がでたら、そのときに聞こう)位置情報がとれないときの処理をちゃんと書こう。ユーザーはいつでも設定を変更できる。Studioを使い倒すためのセッション。何度も巻き戻しながら操作を確認したほうがよいです。youtu.be全編デモというなかなかにクレイジーなセッション。ウィンドウの大きさが変更できる。0(ゼロ)でデフォルトの大きさに電力(energy)プロファイラシステムイベントがとれる。Open/Closeできる。Windowsの場合はAlt+書かれてる数値Switcher(Ctrl+tab)を使うと、数値の書いてないツールウィンドウ(例えばGradle)もぱっと選べる。Shift+Escapeで最近開いたウィンドウを閉じれる。F12で直近のウィンドウに戻れる。Windows)で、すべてのウィンドウを隠す。Projectウィンドウとかで探したい文字列を直で入力すると、フィルタされる。これは結構使ってる人多そう。エディタで、隣のタブに行きたいときはalt+左右。これもすでに使ってる人多そう。レイアウトエディタのように、下にもタブがある場合はalt+shift+左右で切り替わる。エディタは上下左右に分割できる。タブの部分をドラッグすれば分割した別のとこに持っていくことも可能。everywhere)でunsplitを選べば戻せる。Windows)でファイルを探す。Ctrl+1でブックマーク1に飛ぶ。Ctrl+左右でカーソルを単語単位で移動。Shiftをつければ当然選択される。wordを使うモードがある。Windows)で、次のメソッド/前のメソッドに飛べる。Windows)で、最後に編集したところに飛べる。Windows)でtooltipを表示。メソッドの説明が欲しいときに。Windows)で、引数の説明を読んだりするモードになる。tabで次の引数に移動したりとかもできるようになる。Ctrl+spaceで基本的なコード補完。この時、引数名から推測して「この変数?」というのを提案してくれる。引数を書き換える時はEnterではなくtabを押そう。書かれた状態で、引数をいい感じにうめたい時はCtrl+Shift+Spaceでいい感じに候補を絞り込める(スマートタイプというらしい)。引数が2つかある場合、まとめて設定とかもできちゃう。Windows)でアクションを探せる。Ctrl+Shift+jで行を連結。Windows)で選択範囲を広げる。Windows)で選択してるのを複製。行を選択した状態でCommand+Shift+上下で持ち運べる。ブロックの中とか意識してくれる。Windows)で検索。Windows)で、選択してるのと同じものを選択範囲に追加。Windows)で、履歴からペースト。Windows)で、選択してたのを関数化。このとき似たようなのがあったら同時に関数を呼ぶスタイルに変更してくれる。Windows)で、ifで囲んだりtry-catchにしたり。Windows)で、現在のステートメントを完成させる。Windows)で、指定したものをメソッドの引数に移動させる。呼び出し側も変更される。Windows)で、定義に移動。書いた場合、alt+enterで戻り値のあるメソッドに変更してくれる。ように追加してあげると、if文に変更してくれる。alt+enterを使えば、if文の条件をひっくり返すことも可能。arrangeボタンを使うと、いい感じに整形してくれる。複数選択して、右クリックで別のナビゲーショングラフに移動させることができる。レイアウトエディタCommand+クリックでサンプルデータにも飛べる。Viewが重なってる時は、左側のツリーでドラッグで移動させるのも手。画像をレイアウトに放り込むと、ImageViewとして追加してくれる。レイアウトファイルをレイアウトに放り込むと、includeとして追加してくれる。上記2つの操作はXMLに対しても行える。配置されているImageViewに対し、別の画像を放り込んだ場合はsrcを書き換えてくれる。ImageViewで、選択後右側のAttributeのところでマージンの中央の左上(図でないとわからないな。)をクリックすると、アスペクト比を保持する設定が追加できる。まま使うことができる。名前も好き勝手に変更できる。すると、ビルド時のフォルダ指定ができる。高速なディスクを使いたい時とかに有効(かなりマニアックな気がする)。マルチモジュールで、ライブラリの依存関係をハードコードした場合、アップデートする時に全部手作業で直す必要があるので危険。ファイルをトップに作り、次のように記述する。以下はそのまま}こうすると、アプリ側とかのdependenciesが次のように書ける。StructureのDependenciesで確認できる。ビルド速度を高めよう。理想は修正なしでリビルドした場合、全タスクがUP-TO-DATEになること。buildConfigField()で、値に日付を使っちゃったりすると、毎回ビルド時に変更しないといけなくなっちゃう。Changesを使おう。runとは違うアプローチになっている。ブレークポイントでとめて、バグに気づいて修正。frameしてメソッド呼ぶ前に戻すと、なんとそこから再開できる。Studio使いこなそうシリーズを先に解説。Studioの使い方編。レイアウトエディタBlueprintModeを使ってみよう。コンテキストメニュー(右クリック)を使うと、例えば「中央に配置」といった制約の追加が簡単にできるよ。RecyclerViewは、中身を動的に作るのでレイアウトエディタではデフォルトではショボイ表示しか確認できない。