Android関連のことを調べてみた

Android関連のことを調べてみた

【Bingで解説】「windowSoftInputMode」って何?

「windowSoftInputMode」とは何ですか?
小学生でも理解できるくらい丁寧に解説して頂けますか?

「windowSoftInputMode」とは、Androidアプリの画面において、キーボードが表示された際に、画面のレイアウトをどのように変更するかを指定する属性です。この属性を指定することで、キーボードが表示された際に、画面のレイアウトが崩れることを防ぐことができます。

例えば、adjustResizeという値を指定することで、キーボードが表示された際に、画面のレイアウトを自動的に調整して、キーボードが表示された状態でも画面全体を見ることができるようになります。

# 【引用】
Androidアプリでキーボードの上までスクロールできるようにする
https://qiita.com/hishida/items/e25dfa4d75caeabda9a3

AndroidアプリのEditTextを含む画面でキーボードを非表示にする
https://qiita.com/hishida/items/8bf1aa28ef62ef22a7f9

[Android]EditTextの

元記事を表示

KMP + Koin で DI (Dependency Injection)

今の時代、モジュール間は疎結合、ユニットテストはスタブを注入!💉💉💉

というのが定番みたいだし、実際にも開発しやすいので、
[KMP](https://www.jetbrains.com/kotlin-multiplatform/)[^1] でも Dependency Injection(以下DI)していきたいです。

KMP は開発言語が Kotlin なわけですが、
Android 向けに [Dagger Hilt](https://developer.android.com/codelabs/android-dagger-to-hilt?hl=ja#0) という DI フレームワークがありつつも、残念ながら KMP 非対応です。

じゃあ KMP の場合は何を使えば良いのか?

ということで、自分がいちばん慣れてる [Koin](https://insert-koin.io/) を使ってDIを実現してみます[^2]。

## ライブラリ追加

まず、これがないことには始まりませんので。
[ここ](https://insert-koin.io/docs/reference/koi

元記事を表示

【Bingで解説】「isLetter」って何?

「Jetpack Compose」に出てくる「isLetter」とは何ですか?
小学生でも理解できるくらい丁寧に解説して頂けますか?

「Jetpack Compose」は、AndroidアプリケーションのUIを構築するためのツールキットです。

imeActionは、テキストフィールドに表示されるソフトウェアキーボードの右下にあるボタンのことです。

このボタンをタップすると、キーボードが閉じられたり、次のテキストフィールドにフォーカスが移動したりします。例えば、ログインフォームで「パスワード」フィールドに入力が終わったら、imeActionを「Done」に設定することで、キーボードを閉じることができます¹²³。

また、isLetterは、Kotlinの標準ライブラリで提供されている関数の一つで、引数に渡された文字がアルファベットの場合にtrueを返す関数です⁴。例えば、以下のように使用することができます:

“`kotlin
val c = ‘a’
if (c.isLetter()) {
println(“$c is a letter”)
} else {
pr

元記事を表示

【Bingで解説】「imeAction」って何?

「Jetpack Compose」に出てくる「imeAction」とは何ですか?
小学生でも理解できるくらい丁寧に解説して頂けますか?

「Jetpack Compose」は、AndroidアプリケーションのUIを構築するためのツールキットです。

imeActionは、テキストフィールドに表示されるソフトウェアキーボードの右下にあるボタンのことです。

このボタンをタップすると、キーボードが閉じられたり、次のテキストフィールドにフォーカスが移動したりします。例えば、ログインフォームで「パスワード」フィールドに入力が終わったら、imeActionを「Done」に設定することで、キーボードを閉じることができます¹²³.

以上が、imeActionの簡単な説明です。¹²³¹: [ImeAction | Android Developers](https://developer.android.com/reference/kotlin/androidx/compose/ui/text/input/ImeAction)
²: [JetpackCompose KeyBoard Options

元記事を表示

【Android】launch(Dispatcher.Main.immediate) の呼び出し元も launch(Dispatcher.Main.immediate) だった場合、即時実行されない

:::note info
この記事では、簡単のため、[`CoroutineScope`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-coroutine-scope/) として [`GlobalScope`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-global-scope/) を使用する。
:::

## 要約

次のコードを実行すると、

“`Kotlin
GlobalScope.launch(Dispatchers.Main.immediate) {
launch(Dispatchers.Main.immediate) {
Log.i(“”, “in launch”)
}
Log.i(“”, “after launch”)
}
“`

期待に反して、[`lau

元記事を表示

【Bingで解説】「buildAnnotatedString」って何?

「Jetpack Compose」に出てくる「buildAnnotatedString」とは何ですか?
小学生でも理解できるくらい丁寧に解説して頂けますか?

「Jetpack Compose」は、AndroidアプリケーションのUIを構築するためのツールキットです。 「buildAnnotatedString」は、Jetpack Composeで使用されるテキストスタイルの一種で、テキストに注釈を付けるために使用されます¹。

例えば、以下のように使用できます:

“`kotlin
buildAnnotatedString {
pushStyle(MaterialTheme.typography.body1.copy(color = MaterialTheme.colors.primary).toSpanStyle())
append(“this is a link”)
pop()
}
“`

上記の例では、テキストの一部をリンク化しています。この場合、リンクは通常、`pushStringAnnotation`と一緒に使用されます。これは、注釈を取得するた

元記事を表示

Kotlin Parcelableの使用ケースについて

Androidのアプリケーション開発をしているとParcelableというものが出てきます。

## Parcelableとは?
Androidにおけるシリアライズ、デシリアライズするためのインターフェースです。
Parcelableを実装することで、オブジェクトの状態を保持できます。つまり、値を受け渡しを可能にします。

## どんなシナリオで使われるか?
**アクティビティやフラグメントが一時停止したり再開する場合**
onSaveInstanceStateおよびonRestoreInstanceStateメソッドでParcelableを使用してオブジェクトの状態を保存および復元します。
以下のような感じです。

“`kotlin
private val SAVE_KEY = “save_key”

//保存する
override fun onSaveInstanceState(outState: Bundle) {
outState.putParcelable(SAVE_KEY, myDataObject)
super.onSaveInstanceState(o

元記事を表示

jetpack composeのktlint導入メモ

[litintを実装する時の参考ドキュメント](https://pinterest.github.io/ktlint/latest/install/integrations/)

## 導入
まずbuild.gradle.ktsを書き換えます
“` build.gradle.kts(app)
val ktlint by configurations.creating

dependencies {
ktlint(“com.pinterest.ktlint:ktlint-cli:1.0.1”) {
attributes {
attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL))
}
}

}

val ktlintCheck by tasks.registering(JavaExec::class) {
group = LifecycleBasePlugin.VERIFICATION_GROUP
descri

元記事を表示

Android Notification

# 基本的なNotificatationを作成する
## 基礎知識
### Verごとの動作の違いについて
・Android 8.0(API26)以下 ⇨ 通知チャンネルの作成は必要なし
・上記以上 ⇨ 通知チャンネルの作成が必要

・権限について
Android 13.0(API33)以上 ⇨ android.permission.POST_NOTIFICATIONSのパーミッションリクエストが必要

## 実装する
### 1.通知チャンネルの作成
“`kotlin
private fun createChannel(){
//通知チャンネルの名前を指定
val name = “Web notification”
//チャンネルの説明文を指定
val description = “this notification is notify when you access web site”
//通知の重要度を指定
val importance = NotificationManager

元記事を表示

.NET MAUI 環境構築に四苦八苦したときの備忘録

## 参考記事
https://learn.microsoft.com/ja-jp/dotnet/maui/get-started/installation?tabs=vswin

https://learn.microsoft.com/ja-jp/dotnet/maui/get-started/first-app?tabs=vswin&pivots=devices-android

https://learn.microsoft.com/ja-jp/xamarin/android/get-started/installation/android-emulator/device-manager?tabs=windows&pivots=windows

https://learn.microsoft.com/ja-jp/dotnet/core/tools/dotnet-workload-restore

https://learn.microsoft.com/ja-jp/visualstudio/install/update-visual-studio?view=vs-2022

##

元記事を表示

【Android】gradleに設定したライブラリはどこから取得されるのか

# はじめに
こんにちは。
Android開発者が何気なく使っているライブラリですがどこから取得しているかすごく調べる機会があったので備忘録として。
前提としてbuild.gradleのdependenciesブロックにimplementationを追加すれば外部ライブラリを取得するということは知っているのですが(おそらく大半のAndroidエンジニアはわかっていると思いますが。。)ただ、ビルド時にライブラリがどこのコードでどのように取得されるのかは、詳しく理解していませんでした。
なので、流石にAndroidエンジニアを名乗るのに知っておかなければということで調べたことをまとめることにしました。

# 用語のおさらい
前提として知っておくといい用語をいくつか書いておきます。
### Gradle
高度なビルドツールキットのことで本来は「Gradle Build Tool」でありそれを略してGradleとのことAndroidとして使用されているのはGroovyそして最近はKotlinですね。

https://docs.gradle.org/current/userguide/user

元記事を表示

【自分用メモ】「setContentView(R.layout.activity_main)」は「家の全体の設計書」

【先輩Androidエンジニアから教えられたこと】

「setContentView(R.layout.activity_main)」は「家の全体の設計書」

「val spinner:Spinner = findViewById(R.id.spinner)」は「家のリビングをどこに置くか的な」

元記事を表示

【Bingで解説】「android:ems」って何?

以下のコードの「ems」とは何でしょうか?

小学生でも理解できるくらい丁寧に解説して頂けますか?

“`kotlin

“`

ーーーーーーーーーーーーーーーーーーーーーー

「ems」とは、テキストの幅を決めるための単位です。

小学生でも理解できるくらい丁寧に解説しますね。

まず、このコードは、Androidというスマートフォンやタブレットのためのシステムで使われるものです。

Androidでは、アプリの見た目や動きを決めるために、XMLという言語で書

元記事を表示

【Tips】「Design」で配置せずに「Code」で直接書こう【Android】

【先輩 Android エンジニアからのアドバイス】

「Design」で動かして配置するのはできる限り辞めた方がいい。

(「Design」で動かして配置するとだいたサイズに小数点が入っていまう。「width」や「height」等含めてdp値は【4の倍数】が良いと基本的に決まっているので、こは好ましくない。)

なので、「Split」で分割して「Code」で直接書きしながら「Design」を見て段階的に修正するべし。

元記事を表示

【Bingで解説】「Theme.MaterialComponents.DayNight.NoActionBar」と「Theme.MaterialComponents.DayNight.NoActionBar.Bridge」の違いって何?

「Theme.MaterialComponents.DayNight.NoActionBar」と「Theme.MaterialComponents.DayNight.NoActionBar.Bridge」の違いについて小学生でも理解できるくらい丁寧に解説して頂けますか?

ーーーーーーーーーーーーーーーーーーーーーー

「Theme.MaterialComponents.DayNight.NoActionBar」と「Theme.MaterialComponents.DayNight.NoActionBar.Bridge」の違いについて、小学生でも理解できるくらい丁寧に解説しますね。

まず、これらのテーマは、Androidというスマートフォンやタブレットのためのシステムで使われるものです。テーマとは、アプリの見た目や色などを決めるものです。

例えば、背景が黒いテーマと白いテーマがあったら、どちらが好きですか?テーマを変えると、アプリの雰囲気も変わりますよね。

さて、今回のテーマは、Material Componentsという名前がついています。
Material Component

元記事を表示

【Bingで解説】「@SuppressLint」って何?

Android開発で出てくる「@SuppressLint」とは何ですか?

小学生でも理解できるくらい丁寧に解説して頂けますか?

ーーーーーーーーーーーーーーーーーーーーーー

@SuppressLint とは、Android Lint というツールが使うアノテーションの一種です。

Android Lint というのは、コードに問題がないかチェックしてくれるツールで、例えば、アプリが落ちたり、動きが遅かったりする原因になるようなコードがないか、教えてくれます。

@SuppressLint というアノテーションをコードに書くと、Android Lint に対して、このコードには問題がないから、警告を出さないでね、という意味になります。

NewApi というのは、Android Lint がチェックする問題の種類の一つで、自分が作っているアプリが対応している最低限の Android のバージョンよりも新しい機能を使っていないか、確認してくれます。

例えば、自分が作っているアプリが Android 4.0 以上で動くように設定しているとします。
そのとき、Android 5.0 で

元記事を表示

Update this project to use a newer compileSdk of at least , for example 解決方法

エラー内容
Recommended action: Update this project to use a newer compileSdk of at least 34, for example 34.
推奨されるアクション このプロジェクトを更新して、少なくとも34(たとえば34)の新しいcompileSdkを使用してください。

解決法

Android Studio で以下のファイルを開く
C:\Users\<ユーザー名>\AndroidStudioProjects\<アプリケーション名>\app 内の build.gradle.kts (Module :app)

build.gradle.kts (Module :app) ファイルの androidの個所を編集する。

android {
namespace = “com.example.myapplication”
compileSdk = 34

※今回は事例として 34 にしたが今後新バージョンが出ると 35, 36,, と数字は更新されるので最新バージョンの番号は各自で要確認。2023年11月1

元記事を表示

【Bingで解説】「container」って何?

以下のコードの「container」とは何でしょうか?小学生でも理解できるくらい丁寧に解説して頂けますか?

“`kotlin
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
)
“`

https://e-words.jp/w/%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A.html。

例えば、貨物輸送に使われる金属製の箱もコンテナと呼ばれますが、これは物を入れて運ぶという入れ物の役割をしていますね

あなたが示したコードは、Androidアプリの開発に使われるKotlinというプログラミング言語で書かれています。

このコードは、onCreateViewという関数を定義しています。

関数とは、ある処理をまとめたもので、名前をつけて何度も呼び出すことができます。

この関数は、アプリの画面に表示する部品(ビュー)を作るときに呼び出されます

元記事を表示

【Bingで解説】「onCreateView」と「onViewCreated」の違いって何?

「onCreateView」と「onViewCreated」の違いを小学生も理解できるくらい丁寧に解説して頂けますか?

ーーーーーーーーーーーーーーーーーーーーーー

「onCreateView」と「onViewCreated」の違いを小学生も理解できるくらい丁寧に解説しますね。😊

まず、フラグメントというのは、画面の一部を別の部品として作ることができるものです。

例えば、スマホの画面に時計や天気予報やニュースなどが表示されているとします。それぞれの部分は、フラグメントとして作られています。
フラグメントは、画面の大きさや向きに合わせて、自動的にレイアウトを変えたり、別の画面に移動したりすることができます。

フラグメントは、自分のライフサイクルというものを持っています。ライフサイクルというのは、フラグメントが作られたり、表示されたり、消えたりするときに、どんなことをするかというルールのようなものです。

ライフサイクルには、いくつかの段階があります。

その中で、「onCreateView」と「onViewCreated」は、フラグメントのビューというものを作る段階です。

元記事を表示

【Bingで解説】「アクションバー」「ツールバー」「アプリバー」の違いって何?

「アクションバー」「ツールバー」「アプリバー」

それぞれの定義の違いについて小学生でも理解できるくらい丁寧に解説して頂けますか?

ーーーーーーーーーーーーーーーーーーーーーー

「アクションバー」「ツールバー」「アプリバー」とは、Androidというスマートフォンのシステムで使われるものです。

Androidでは、画面に表示されるものを「アクティビティ」という大きな部品に分けて管理しています。

例えば、電卓のアプリであれば、数字や記号を入力する部分と、計算結果を表示する部分とがそれぞれ「アクティビティ」になります。

これらの「アクティビティ」の上には、アプリの名前やメニューなどを表示するための帯状の部分があります。

これを「アプリバー」と呼びます。

「アプリバー」は、以前はAndroidで「アクションバー」と呼ばれていましたが、デザインが変わって「ツールバー」と呼ばれるようになりました。

「アクションバー」と「ツールバー」は、似ているようで違うものです。その違いは以下の通りです。

「アクションバー」は、Androidのシステムが用意してくれるもので、アプリの中で使える

元記事を表示

OTHERカテゴリの最新記事