『Android Kotlin Fundamentals』をやった(1)

Android Kotlin の基礎のための Codelab

と言いつつ、まだ途中(ノ∀`)
まだLesson4までしか終わってない。

『Welcome to Android Basics in Kotlin』と異なり、英文で内容もちょっと長いかな? あと若干前の内容っぽい。英文なので読むのに時間がかかるが、知りたいことというか途中で浮かんでくる疑問を即座に説明してくれてたりするので、読む価値はあると思う。

途中でこの内容(というかcodelab全般?)翻訳・公開しているサイトを発見したが、英文で読む方に慣れてしまったがためにそのまま英文で読み進めることにした。

最近、英文を全く読まなくなっているので少しは読まないといけない気がするし…

いつものように、やっている最中の適当なメモ書きや感想であり、勘違い、おま環由来の問題等々で大騒ぎしている記録である(ノ∀`)


thus far これまでに 今までに
terminology 用語
unambiguous 明確な
complicate 複雑にする, わかりにくくする
sheer 全く, 単なる 形容詞 純然たる, 全くの
the sheer number of の膨大な数
inevitably 必然的に
radically 根本的に
underneath 下に

なんでView groupでchild viewのhorizontal positionを一括指定出来ないんだろうか?

All the view IDs in your XML file must have this prefix..
ピリオドが一つ余計。

Use the findViewById() method to get a View reference for the view that you defined in the XML class.
この場合のclassって何を指してるんだろうか?
fileじゃいけないのか?

the duration to show the message.
先頭が大文字になっていない。

The show() method at the end displays the toast.
は<li>というか<ul>外に書くべき?


Android Kotlin Fundamentals 01.3: Image resources and compatibility

Step 1: Add the images

項番3と4が2から分かれていない。
previewタブはない?

performantなんて単語あるんだな…
と思ったが、よくよく考えてみると、importancetとimportantの語形変化と一緒だな(ノ∀`) performanceの形容詞形か。


性能[行為・パフォーマンス]の
〈俗〉《コ》高性能の、効率の良い

store the View object in a field.
Kotlinにはフィールドはないと言ってたけど、それは意味が違うのかな(´・ω・`)?


5. Task: Use a default image

項番4が3から分かれていない。

The tools namespace is used when you want to define placeholder content that is only used in the preview or the design editor in Android Studio. Attributes using the tools namespace are removed when you compile the app.

ふーむ、ふーむ(・∀・)
Tools名前空間をつけた値は開発時のプレースホルダーでコンパイル時には除去されるんだな。

Namespaces are used to help resolve ambiguity when referring to attributes that have the same name.

名前空間自体は名前衝突というかコンパイラが名前で迷わないためのプレフィックスってことでええんかな?


6. Task: Understand API levels and compatibility

Step 1: Explore API levels

項番1と2が分かれていない。

Step 3: Add compatibility for vector drawables

項番1と2が分かれていない。

The app namespace is for attributes that come from either your custom code or from libraries and not the core Android framework.

なるほど、app属性は自分のカスタムコードや標準(?)のAndroidフレームワーク以外のライブラリコード由来の属性の為のものなのか。


9.Summary

Summaryのところでもっと綺麗にまとめてあった(ノ∀`)

The tools namespace for design-time attributes:
Use the tools namespace in the Android layout file to create placeholder content or hints for layout in Android Studio. Data declared by tools attributes is not used in the final app.

The app namespace:
The app namespace in your XML layout file is for attributes that come from either your custom code or from libraries, not from the core Android framework.


Android Kotlin Fundamentals 01.4: Learn to help yourself

3. Task: Use project templates

最初間違えてempty Activityでプロジェクトを作ってしまい、一瞬戸惑う(ノ∀`)
次にBasicで作ったつもりだったが、なんか出来上がった画面が違うような…

フラグメントとボタンが使われていて、TextViewの文言もなんか違う。
バージョンによる違いかな?まあ大した問題でもないからいいか。

color.xmlにcolorAccentがない?


4. Task: Learn from sample code

dagger.hilt.android.AndroidEntryPoint
なんだこのアノテーション…

Hilt は Android 用の依存関係インジェクション ライブラリです。これを使うことで、プロジェクトで依存関係の注入(DI)を手動で行うためのボイラープレートが減ります。手動で依存関係の注入を行うには、すべてのクラスとその依存関係を手作業で作成し、コンテナを使用して依存関係の再利用と管理を行う必要があります。

Hilt は、プロジェクト内のすべての Android クラスにコンテナを提供し、そのライフサイクルを自動で管理することで、アプリケーションで DI を行うための標準的な方法を提供します。Hilt は、よく知られた DI ライブラリである Dagger の上に構築されているため、コンパイル時の正確性、実行時のパフォーマンス、スケーラビリティ、Android Studio のサポートといった Dagger の恩恵を受けられます。詳細については、Hilt と Dagger をご覧ください。Hilt

Dagger is a fully static, compile-time dependency injection framework for Java, Kotlin, and Android.

ふーん(´・ω・`)
この場合の依存関係の注入って@AndroidEntryPointでGardenActivityに各Fragmentを結びつけてるのか…?
と思いきや、

@AndroidEntryPoint は、プロジェクト内の Android クラスごとに個別の Hilt コンポーネントを生成します。これらのコンポーネントは、コンポーネント階層で説明されているように、それぞれの親クラスから依存関係を受け取ることができます。

依存関係を注入したいコンポーネント全てに引っ付けるのかな?
まあ取り敢えずはこのくらいの理解でいいかw

Changing the launcher icon
項番4,5が改行されていない

日本語化してるから、その差分かもしれないがLegacyタブはなくてオプションタブだった。そもそもAPIバージョンをほぼ最新にしてるからその影響かもしれないがよくわからないw


Android Kotlin Fundamentals: LinearLayout using the Layout Editor

3. Task: Create the AboutMe Project

新規プロジェクト作成ダイアログに"This project will support instant apps"という項目がないな。


5. Task: Add a TextView using Layout Editor

Layout Editorの表示属性切り替えのアイコンってどれだ…
一応下までスクロールすると全属性が表示されるからまあいいか。

項番3,6,7が改行されていない。

Attributeでは大文字の"ID"だけどLayoutEditorだと"id"だな。
textColorの変更がよくわからなかったので@color/blackをGUIから選択した。
→後でstyles.xmlを直接編集したけど、GUIから指定する方法がわからなかったな(ノ∀`)


6. Task: Style your TextView

「Right/left versus start/end」の

Add "start" and end" in addition to "left" and "right".
For example, use both android:paddingLeft and android:paddingStart.

で一瞬悩む。これは"left"や"right"に"start"や"end"を追加するっていうんじゃなくて、"left"や"right"に加えて"start"や"end"も使えるよって話なのかな?

項番7の改行がない。

Step 3: Add a font

robotoフォントの追加手順は3,4を変えるべきでは?
画面配置が逆なので、非常に微妙ながらも逆流手順に思える。

A style is a collection of attributes that specify the appearance and format for a view.

スタイルはビューの外観やフォーマットを指定する属性のコレクションであると…φ(・ω・` )メモメモ…


7. Task: Add an ImageView

6.To rename the id of the ImageView, right-click on "@+id/imageView" and select Refactor > Rename.

の通りにするとThe resource name must start with a letterというエラーが出てリファクタリング出来ない。"@+id"は自動補完されるのか、除去して残りの"star_image"だけ入力すればいいのかな。

項番10でOKは二回クリックする必要があるか?

星マーク(アスタリスク?)2つは何を意味してるんだっけか…