- 1. AndroidでViewBindingを使ってみる
- 2. 【Jetpack Compose】変数宣言の方法とViewを更新する方法
- 3. 【kotlin】CoroutineContextとは(自分用メモ)
- 4. AndroidでRecyclerViewの縦方向の自動拡大、縮小
- 5. スマートウォッチをリマインダ代わりにバイブレーションさせる
- 6. INMO AIRの開発者向けオプションを有効にする
- 7. JetpackComposeでSnackbarの実装方法
- 8. Androidで設定画面を作ってみる
- 9. AndroidでRoomを使ってデータベース
- 10. Android Studio内のみで完結させるパッケージ名の変更
- 11. Androidでスプラッシュ・スクリーンを出してみる
- 12. Flutter入門 サイト
- 13. Androidで色々なDialogを出してみる
- 14. AndroidでASP.NET Coreを動かす
- 15. ActionBarをカスタマイズしてみる
- 16. 近年変化しつつあるアプリ開発者とプラットフォーマーの関係
- 17. Jetpack ComposeのPreviewにある便利な機能
- 18. AndroidでHTMLの…のように名前と値を対比してSpinnerを表示する
- 19. Jetpack Compose で ripple を丸にする
- 20. Android Jetpack の Navigationを使ってみた
AndroidでViewBindingを使ってみる
# ViewBindingとは・・・?なんじゃんねぇ?
AndroidではLayout xmlとJavaかkotlinのソースが別々で、Layout xmlでは各Viewにidを振ります。
“`xml
android:id=”@+id/xxxbutton”
“`
それをJavaかkotlinのソース側から
“`kotlin
val button = findViewById(R.id.xxxbutton)
“`
といった風に参照します。AndroidではkotlinだとViewBindingという方法が使えます。参考:
公式Android developers [ビューバインディング](https://developer.android.com/topic/libraries/view-binding)
# ViewBindingのメリットは?
findViewById と ViewBindingを比較した場合のメリットは
* null の安全性が高まる。
* 無効なビュー ID によって NullPointerException が発生することがない。findView
【Jetpack Compose】変数宣言の方法とViewを更新する方法
## 概要
Jetpack Compose を使う上で基本となる、 View の状態を表す変数の宣言方法とそれを使った View の更新方法について説明します。詳しい仕組みについては他の方が書かれていますので、あくまで個人的な備忘録として残したいと思います。
## 環境
Android Studio version: Android Studio Dolphin 2021.3.1 Patch 1
kotlin version: 1.7.10
compose version: 1.3.1## 内容
Jetpack Compose を使って作成した View は Compose によってその状態を常に監視されており、状態が変化すると変化した部分を再描画する処理が行われます。
これを再コンポーズといい、Jetpack Compose で作成した View を更新する手段となっています。View の状態監視には “`State“` 型または “`MutableState“` 型の変数が用いられます。
この変数の宣言方法は大きく分けて3パターン存在し、定義方法に応じて V
【kotlin】CoroutineContextとは(自分用メモ)
# はじめに
今回は 前回に引き続きCoroutine内のCoroutineContextについて勉強したものを自分用のメモがわりに記事にしていきます# CoroutineContextとは
CoroutineContext とは、コルーチンの状態を表す値の集まりの事。
“Job”や “CoroutineDispatcher” などの要素を使い動作を行うことができます。要素を以下にまとめました
# CoroutineContext要素表
|要素|内容|
|:—|:—|
|job|コルーチンのライフサイクルを制御する|
|CoroutineDispatcher|適切なスレッドに処理を送信する|
|CoroutineName|コルーチンの名前、デバッグに役立つ|
|CoroutineExceptionHandler|キャッチされない例外を処理する|# 参考
[図で理解する Kotlin Coroutine](https://qiita.com/kawmra/items/d024f9ab32ffe0604d39)
[Developers](https://develop
AndroidでRecyclerViewの縦方向の自動拡大、縮小
# RecyclerViewの上下にViewを挟んだ場合のRecyclerViewの縦方向のサイズ
RecyclerViewが真ん中にあります。その上下にView(例えばTextView)を配置して、そのViewのvisibilityをView.GONEにした場合、RecyclerViewの縦サイズが自動拡大するかどうかをやってみました。例えば、こんな画面を作ります。
真ん中がRecyclerView。
RecyclerViewの上にTextViewを2個配置。
RecyclerViewの下にTextViewを2個配置。
レイアウトエディタで見ると、こうなっています。
![Screenshot_20221127_204957.png](https://qiita-image-store.s3.ap-northeast-1.
スマートウォッチをリマインダ代わりにバイブレーションさせる
題名みても、よくわからないような気がしますが、やりたいことは、普段つけているスマートウォッチ「Xiaomi Mi Band 3」に、自分で好きなメッセージを、自分の好きな時に通知して、スマートウォッチをバイブレーションさせます。
で、特にXiaomi Mi Band 3である必要はなく、一般的なスマートウォッチでよいです。
私は、LINEとXiaomi Mi Band 3を連携させているので、LINE通知が来ると、Xiaomi Mi Band 3がバイブレーションするようになっていますが、LINEとは関係なく、自分で好きなメッセージを、自分の好きな時にバイブレーションさせようというのが今回の趣旨です。
対象のスマホはAndroidです。もろもろのソースコードは以下のGitHubに上げてあります。
poruruba/NotificationManager
https://github.com/poruruba/NotificationManager
# 対象のスマートウォッチ
適用可能なスマートウォッチは、アプリ連携できるアプリを選べるスマートウォッチです。
おそらく、たいて
INMO AIRの開発者向けオプションを有効にする
INMO AIRは、それ単体で動作するスマートグラスの中でも軽量で普通のメガネの見た目にかなり近く、一般的なメガネ屋さん(筆者はメガネスーパーを利用しました)で処方レンズに変えることができるデバイスです。
通常のAndroidの機能は隠蔽されていますが、開発者向けオプション(Developer options)を有効にすることで、(非公式ですが)通常のAndroid 10デバイスのように開発することが可能です。![処方レンズを取り付けたINMO AIR](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43450/65a38c51-a1cc-ad24-b7bc-74206a36335f.jpeg)
## 注意事項
本手順は、公式に提供されているものではなく、操作ミスなどにより通常の機能が利用できなくなる可能性があります。何らかの不具合が発生しても対応できませんので、自己責任で操作を行ってください。また、開発元や販売元に問い合わせることもご遠慮ください。
## 手順
1. まず、本体の言語を英語に変更しま
JetpackComposeでSnackbarの実装方法
JetpackComposeの知識を深めるために、今回はSnackbarを実装を試してみたいと思います。
# リファレンス
https://foso.github.io/Jetpack-Compose-Playground/material/snackbar/
# 実装方法
“`SnackbarView.kt
@Composable
fun SnackbarView() {
Column {
val snackbarVisibleState = remember { mutableStateOf(false) }
Button(modifier = Modifier.padding(16.dp),
onClick = { snackbarVisibleState.value = true }) {
Text(“スナックバー表示”)
}
if (snackbarVisibleState.value) {
Snackbar(
Androidで設定画面を作ってみる
# Andoroidでシステム設定のような設定画面を作ってみる
Androidのアプリで設定画面を持っているものが有ります。AndroidX Preference Libraryを使って、Andoroid OSのシステム設定のような設定画面をアプリ内に作ってみましょう。参考URL
本家Android develpers [設定](https://developer.android.com/guide/topics/ui/settings?hl=ja)
# どんな設定画面を作るか?
とりあえず、こんな設定画面を作ってみましょう。
設定値として色々な型が可能ですが、
* 文字列(何でも入力可)
* 文字列(数値のみ)
* リスト形式
* チェックボックス形式
* スィッチ形式(ON/OFF、YES/NO、True/False)
AndroidでRoomを使ってデータベース
# AndroidでRoomを使ってデータベースを実現
Androidでは色々なデータの管理方法があります。単純なファイル、key-valueストア、等など。ちょっと複雑な処理になると単純なテキストファイル、key-valueストアではすぐ限界になってしまいます。
Androidでは以前からRDBとしてSQLiteが使用可能でしたが、roomは更にそれらを抽象化して使いやすくしています。ORマッパーと同じ概念です。公式ホームページでは
> Room 永続ライブラリは SQLite 全体に抽象化レイヤを提供することで、データベースへのスムーズなアクセスを可能にし、SQLite を最大限に活用できるようにします。特に、Room には次のようなメリットがあります。
>
> ・SQL クエリのコンパイル時検証。
> ・繰り返しが多く間違いを犯しやすいボイラープレート コードを最小限に抑える便利なアノテーション。
> ・効率的なデータベース移行パス。
>
> こうしたことから、SQLite API を直接使用するのではなく、Room を使用することを強くおすすめします。と書かれています。
Android Studio内のみで完結させるパッケージ名の変更
# はじめに
個人開発中のアプリでFirebaseと接続させるときに適当なパッケージ名でプロジェクトを作成してしまっていたので変更させました。
結構面倒だったので記しておきます。## 直接ファイル内部を弄る場所
– appレベルのbuild.gradleのapplicationId
– Android Manifestのpackage
– settings.gradleのrootProject.name
-> Gradle Sync## 一括変更場所
![スクリーンショット 2022-11-26 13.33.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501570/54cfe17e-ff75-448f-08a4-678dfeea3204.png)AndroidStudio左上のTabからAndroidを選択
– com.example.application のapplication部分の変更
java以下のフォルダを右クリックして
Refactor -> Rename -> Do
Androidでスプラッシュ・スクリーンを出してみる
# スプラッシュ・スクリーンって?
スプラッシュ・スクリーンとはAndroidのアプリを起動して、アプリが完全に起動するまでの間、別な画面を表示するアレです。よくあるのはゲーム等で「Now loading…」とか「起動中です・・・」とか表示するやつです。
Android12かはら標準で、アプリアイコンがスプラッシュ・スクリーンになっていますが、それ以前は自前で組み込まないといけません。ここではAndroid11で自前で組み込む方法を説明します。参考URL:
本家Android Develppers[スプラッシュ画面](https://developer.android.com/guide/topics/ui/splash-screen?hl=ja) (Android11まで)
[Splash画面を実装する方法](https://qiita.com/karass/items/bcb50607c0b9fc21f183)まず、やり方には2通りあって
* Activityのテーマを変更する方法
* 別なActivityを用意する方法があります。ゲームのようなより複雑、動きのある
Flutter入門 サイト
https://udemy.benesse.co.jp/development/app/flutter-intro.html
https://zenn.dev/kazutxt/books/flutter_practice_introduction/viewer/01_chapter0_aboutme
https://qiita.com/mkosuke/items/7957e71968aefc6558be
https://qiita.com/ekzemplaro/items/3c57e66460f76a664e87
Androidで色々なDialogを出してみる
# Androidで色々なDialogって何があるの?
AndroidでDialogをだすとなると、AlertDialogが一般的ですが他にも色々あります。
参考URL
本家Android Developpers:[ダイアログ](https://developer.android.com/guide/topics/ui/dialogs?hl=ja)
# AlertDialog
一般的なこんなやつです。アクションボタンに3つの選択肢があります。
| アクションボタン | 意味 |
|:-:|:-:|
| setPositiveButton | アクションを受け入れて続行する場合に使用します(「OK」アクション)。 |
| setNegativeButton | アクションをキャンセルする場合に使用します。 |
| setNeutralButton | どちらでもない。後で、とか。 |# はじめに
AndroidにはTermuxというLinuxのターミナルエミュレーターがあります。
今回はこの子にPRoot経由でUbuntuをインストールして、そのうえでASP.NET Coreを動かしてみようと思います。# Termux と F-Droid
[最新版のTermux](https://f-droid.org/packages/com.termux/)は[F-Droid](https://f-droid.org/)で配信されています。
PlayストアでもTermuxは配布されていますが、2020年ごろに更新が停止され現在は一部機能が動作していません。
F-Droidは非公式ストアになるため、不明なアプリのインストールに許可する必要があるので注意してください。インストールが完了すると次のようなターミナルが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36535/736a9edf-002f-5a8a-1b16-a7d875bb34ff.png)
ActionBarをカスタマイズしてみる
# ActionBarって表示されるだけど、正直利用価値ない
AndroidのActivityのクラスでAppCompatActivityを継承すると自動的に実行時のアプリの上部にActionBarが表示されますが、アプリケーション名が表示されているだけで、何の飾りもありません。消すこともできるんですが、このActionBarをカスタマイズして、もっと色々なことにつかえるようにしてみましょう。
参考:
公式ホームページ:[アプリバーの追加](https://developer.android.com/training/appbar?hl=ja)
# どんなカスタマイズをするか?
* ActionBarの色がデフォルトで紫色なので色を変えてみます。
* ActionBarに表示されているタイトルを自由な文字列に変えてみます。
*
近年変化しつつあるアプリ開発者とプラットフォーマーの関係
# はじめに
ここ数年アプリ業界では大きな変化が色々とありました。
今まで絶対的なルールを課していたAppleとGoogleというプラットフォーマーが、近年は少しずつ規制を緩めたり撤廃したりと相次いでいます:open_mouth:その流れを今回は大まかにまとめてみました!
# まずアプリ課金の手数料っていくら?
課金の種類と仕組み、手数料などはAppleとGoogleでほぼ同じです。課金の種類は大きく分けると2種類あり、微妙に手数料に違いがあります。
## 購入型
ゲームなどでよくあるタイプの課金。手数料は以下の通り
・「年間収益が100万ドル以内の小規模事業者」は15%(おもに企業規模で)
・それ以外は30%## サブスクリプション
その名の通り定期購入のタイプ。コンテンツを閲覧するだけの「リーダーアプリ」でよくあるやつ。手数料は以下の通り
### Apple
・最初の1年間は30%
・サブスクリプション登録者の有料サービスの日数が1年分累積されると、それ以降は15%
・初日から15%# 安くなったり規制が緩和されたのは20
Jetpack ComposeのPreviewにある便利な機能
# 初めに
今回は、Jetpack Composeで絶対に使う@Previewにある便利な機能について紹介していきます
### 本文
早速紹介していきます。
`name`にはプレビュー表示している左上にどのパーツなのかが分かりやすいように表示することができる名前です。
`device`は`Devices`の中にある端末から表示させたい端末を選択することができます。
`showSystemUi`はプレビュー内にステータスバーとアクションバーを表示することができます。
`showBackground`は本来プレビューは透明の背景が適応されてますが、背景を表示することができるようになります。
背景色を変えたい場合は`backgroundColor`に対してARGBの値を代入することで変更することができます。
“`kotlin
@Preview(
name = “画面名”,
device = Devices.PIXEL,
showSystemUi = true,
showBackground = true,
)
“`
### 最後に
他にも便利なのはたくさん
AndroidでHTMLの
# Androidのドロップダウンリストって名称しか持てないの?
Androidのドロップダウンリスト(spinner)は普通に書くと名称しかドロップダウンリストに持てません。
ドロップダウンリストから選択すると上の例だと「ひとつめ」、「ふたつめ」、「みっつめ」、「よっつめ」のいずれかがリスナAdapterView.OnItemSelectedListener#onItemSelectedに渡されます。ここでやりたいのはHTMLの\
Jetpack Compose で ripple を丸にする
そもそも ripple 効果は丸なのですが、この記事では ripple 効果が Composable の全体ではなくて円形で見えることを目指します。
# 領域を無視する方法
Jetpack Compose の ripple は `indication` に `rememberRipple` を指定することでカスタマイズできます。(指定する場合 `InteractionSource` も同時に指定する必要があります)
領域外までに ripple 効果を見せるには `rememberRipple` の `bound` を false にすることでできます。
“`kotlin
Box(
modifier = Modifier
.clickable(
interactionSource = remember { MutableInteractionSource() },
indication = rememberRipple(bounded = false),
enabled = true
Android Jetpack の Navigationを使ってみた
Androidで画面をたくさんある場合、その画面の数分layout.xmlとFragmentを作成することになるが、どのFragmentからどのFramgmentへ、何の条件のときに遷移するかを制御するのがコードでベタベタになってしまいます。
Android Jetpack の Navigationを使うとその辺がスッキリします。
# 参考URL
[本家Android developers](https://developer.android.com/guide/navigation?hl=ja)
[[Android] 10分で作る、Navigationによる画面遷移](https://qiita.com/tktktks10/items/7df56b4795d907a4cd31)
[Navigation Componentの使い方(概要〜画面遷移〜データの受け渡し編)](https://qiita.com/naoi/items/8384561d30111c8704b3)簡単に手順だけ説明しますので詳細はgitHubに上がっているソースを見てください。
[gitHub](https