Androidアプリを開発する #2

# はじめに
* 今回も始めていきます.
前回の記事はこちらから

https://qiita.com/sekkenn1102/items/0de90e952f6dee081d66

### 前回発覚した課題点に関して
* #1のおわりにで端末ごとに見え方が変わってしまう現象を調査しないと…という記載をしていた件に関して、Android 10 (API レベル 29)以降で端末側にダークテーマという設定が実装されたようです.これは端末側で一部アプリなどの見え方を暗くすることで、節電などの効果をもたらす機能のようですが、#0時点でアプリが初期設定であったため、バックグラウンドカラーを明示的に指定していなかったたことで、端末側でダークモード時のカラーが適応されたと思われます.
原因が特定できたのとレイアウトが崩れるわけではなさそうなので今回はいったん対応せずに進めます.

https://developer.android.com/guide/topics/ui/look-and-feel/darktheme?hl=ja

# 登録画面の機能をつめていく
* 前回は登録画面のレイアウト配置をざっくり行いました.
ボタンが左寄りにずれてたり、配置がそろってなかったりしたので前回の最後から以下のように修正してます.

* 前回の最後
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1700794/a6cae77a-0d55-3882-449a-93229a18f84a.jpeg" width="393">

* 修正後
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1700794/449ce4eb-ecff-2071-3d8b-cbf0191e5460.jpeg" width="393">

* 今回の作業の話に移りますが、前回作ったのはGUIだけなので、裏ではいろいろエラーが出ている状態です.なのでそれを片付けていきます.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1700794/17dfac4c-ce85-1608-83ad-cd337965024f.png)
* 赤で囲った部分に赤や黄色のアイコンがついているのがわかります.いうまでもなくすべてエラーやそれに類しているので直していきます.
アイコンを押すと画面下のほうに画像のようなタブが出てくるのでエラー文に沿って直していくか、fixボタンもあるのでそこを押して簡単に治せるものは直していきます.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1700794/aa5c853b-3974-b5dd-2a4a-2ba272a42c5d.png)

* また、warningで「Hardcoded text」と出ているので、表示テキストをres/values/string.xmlにまとめてそこから呼び出すようにします.
例えば一番上の「タスク／スケジュールを入力…」はこんな感じで記載します.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1700794/7327af69-8d21-107e-868f-979b49f538c1.png)

string.xmlの中身はこんな感じです.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1700794/d963bab1-ac5f-53b3-3258-950a36c461a3.png)

* 配置した要素のidが初期設定のままだったので、このタイミングでidも変えていきます.
idの変更は右のタブの項目「id」から変更できます.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1700794/14217869-a64b-5019-fc3b-2b5fd827313a.png)

* エラー内容が、「target size too small」(テキストエリアの高さが足りない)と上記の「hardcoded text」だったのでこれでエラーはほぼ解消できました.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1700794/d03c0c7a-806f-6250-1d4f-560b0d2fc538.png)

# 一覧画面を仮置きする
* File/New/Activity/Empty Activityから新しい画面を作っていきます.今回は一覧画面を作りたいのでListActivityとします.ほかの項目は「Generate a layout file」にチェックが入っていれば自動補完されるのでそのままfinishを押下します.
※デフォルトはkotlinファイルが生成されるので、javaにしたい場合は適宜変更してください

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1700794/54a68026-466b-edeb-52af-b411964046ca.png)

生成が終わったら下の画像の２ファイルが追加されています.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1700794/bf5ca595-686f-8391-abce-e9416f322dc2.png)

* activity_list.xmlを開いてButtons/FloatingActionButtonを追加しました.設置した瞬間にボタンのデザインを聞かれるのでしっくりくるものを選択します.このボタンから先ほどの登録ボタンへ遷移する想定です.


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1700794/ff072646-82e5-5351-467a-b24f1cb8a738.png)

※上記のボタン設定だと以下のようなwarningが出るようです.「その色設定だと見えにくくない？」みたいな注意のようですが、後々のデザインで色は変える可能性が高いことと、正常に見えている（と思っている）のでこのまま進めます.
```
The image's contrast ratio is 1.77. This ratio is based on an estimated foreground color of #FFFFFF and an estimated background color of #03DAC5. Consider increasing this ratio to 3.00 or greater.
```

https://support.google.com/accessibility/android/answer/7158390?hl=ja


# 起動時の画面を変更する
* 一覧画面（仮）ができましたが、このままだと実機で起動したときにどこにもつながっていないため画面を表示させることができません.
* また、起動後の動作としては、

  一覧画面　→　+ボタン押下 →　登録画面 

  を想定しているため、起動時の画面を変更していきます.
app/manifests/AndroidManifest.xmlに下記の記述があります.

```AndroidManifest.xml
        <activity
            android:name=".ListActivity"
            android:exported="false" />
        <activity
            android:name=".MainActivity"
            android:exported="true" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
```
intent-filterのタグが.MainActivity下にあるため、.ListActivity下に移動させます.

```AndroidManifest.xml
        <activity
            android:name=".MainActivity"
            android:exported="false" />
        <activity
            android:name=".ListActivity"
            android:exported="true" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
```

この状態でビルドしなおして実機で起動してみます.

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1700794/611956ea-5079-05ea-925f-81e5e926653c.jpeg" width="393">

現時点でボタンに機能を付けていないため登録画面へ遷移はしないですが、無事起動画面が変わりました.



# おわりに
* 長くなってきたのでここまでにします.
今回はエラーの解消と一覧画面の仮置きを行いました.
次回は画面遷移をメインに行っていく予定です.余力があればDBの準備ぐらいまで行いたい.

# 参考資料まとめ
* ダークテーマに関する挙動

https://developer.android.com/guide/topics/ui/look-and-feel/darktheme?hl=ja

* コントラストの注意事項

https://support.google.com/accessibility/android/answer/7158390?hl=ja

* 起動時の画面変更

https://qiita.com/okhiroyuki/items/8410433493c83ff6b4ca