- 1. Android+RetrofitでHTTP通信するアプリの作り方(その4)
- 2. 自用アプリ
- 3. 【Android】TextViewの自動サイズ調整に関する落とし穴
- 4. Unity AndroidのBuild時になるエラーについての対処
- 5. CircleCIとGitHubでAndroidの自動テスト環境を構築するためのメモ
- 6. IsarでMap型は取り扱えないので, IsarLinkを使った話
- 7. Jetpack Composeでパフォーマンスが良くない書き方を避ける
- 8. FlutterFlow GitHub経由でデプロイする際のエラー
- 9. Skip使ってみた
- 10. ScoopでインストールしたAndroidStudioのアップデート時エラーの対処法
- 11. Hiltで単体テスト
- 12. file_pickerでファイルを一つ選択して読み込む
- 13. Android Studio のコルーチンの概要
- 14. Kotlin のプレイグラウンドのコルーチンの概要
- 15. Hiltとは?ざっくり解説
- 16. HiltViewModelで始めるAndroidの依存性注入のお話
- 17. cameraXで撮影した画像が勝手に回転するんだけど!?って貴方に【Androidアプリ開発】
- 18. AppwriteにFlutterプロジェクトからAndroidエミュレータで接続する時の接続エラー
- 19. 【Android】Jetpack Composeでカウントアップアプリを作る
- 20. jetpack composeでキーボード入力完了時に特定の処理を行う
Android+RetrofitでHTTP通信するアプリの作り方(その4)
# UIの仮組みとViewModelの導入
[前回](https://qiita.com/aburagirio/items/abebf9a7fadf8ef94dce)の記事でHiltを活用できるようになりました。
それではここからアプリを組み上げていきましょう。
## 目次
– [UIの仮組みとViewModelの導入](#uiの仮組みとviewmodelの導入)
– [目次](#目次)
– [今回の作業内容](#今回の作業内容)
– [ViewModelを追加する](#viewmodelを追加する)
– [ViewModelの定義](#viewmodelの定義)
– [UIを追加する](#uiを追加する)
– [Sealed Interface](#sealed-interface)
– [通信状態に応じてUIを更新する機構を追加する](#通信状態に応じてuiを更新する機構を追加する)
– [MutaleState](#mutalestate)
– [Stateのhoist](#stateのhoist)
– [Mai
自用アプリ
https://1drv.ms/u/s!AgaGu1QzZN3fqD8-Sqwdvky-kmta
【Android】TextViewの自動サイズ調整に関する落とし穴
# はじめに
TextViewの自動サイズ調整、テキストが動的に変わる場合や少々長い文言を設定しなければならない場合などにおいて非常に便利ですよね。
ただし、この自動サイズ調整には設定を誤ると予期しない結果が生じる可能性がありますので、今回はその点を備忘録的にまとめておこうと思います。# 自動サイズ調整の落とし穴
まず、TextViewを以下のように設定しているとします。“`main.xml
“`
一見すると特に問題ないように見えますが、この実装では自動サイズ調整が機能しない
Unity AndroidのBuild時になるエラーについての対処
Unityで通常の実行ができるのに、AndroidでBuildができなかった時、確認すべきこととBuildするために行ったことを残しておく。
## まず確認すること
コンパイルする対象にEditor用のコードが含まれていないかを確認する。using UnityEditorを使用していたら注意。もしあればUnityのEditorフォルダに移動するか、#if UNITY_EDITOR のオプションを追加ってBuild時に影響がでないようにする。## アンドロイド関係のエラー
筆者自身もどうしてうまくいくようになるのか深く理解していない部分もあるので実施しするときには自己責任で。まずはなにはともあれExternal Dependency Managerを使う。Androidに必要なものを調整してくれるやつ
DLサイトhttps://github.com/googlesamples/unity-jar-resolver
external-dependency-manager-latest.unitypackageをGitHubからDLする。
Unity上ですでにDLしてあればま
CircleCIとGitHubでAndroidの自動テスト環境を構築するためのメモ
# CircleCIでAndroidの自動テスト
個人的な勉強でCircleCIとGitHubの連携を試した時のメモです。
おそらく、次回同じことをやろうとした時には忘れているのでメモを残します。
## 目次
– [CircleCIでAndroidの自動テスト](#circleciでandroidの自動テスト)
– [目次](#目次)
– [手順](#手順)
– [GitHubのリポジトリを用意する](#githubのリポジトリを用意する)
– [CircleCIのアカウントを作成する](#circleciのアカウントを作成する)
– [CircleCIとGitHubを連携させる](#circleciとgithubを連携させる)
– [鍵の作成](#鍵の作成)
– [公開鍵をGitHubへ保管する](#公開鍵をgithubへ保管する)
– [秘密鍵をCircleCIへ保管する](#秘密鍵をcircleciへ保管する)
– [スクリプトを修正する](#スクリプトを修正する)
– [circleci-project-setup
IsarでMap型は取り扱えないので, IsarLinkを使った話
# Isarとは
[Isar公式ドキュメント](https://isar.dev/tutorials/quickstart.html)曰く,**最もcoolなFlutterデータベース**とのこと。Flutter のために最適化された高速で軽量なオープンソースのデータベースエンジンであり, 他のモバイルデータベースエンジンと比べてはるかに高速で, あらゆるオブジェクトのデータを保存できます。
執筆時現在, Isarが対応している型は以下です。
– bool
– byte
– short
– int
– float
– double
– DateTime
– String
– List
– List
– List
– List
– List
– List
– List
– List残念ながらMap型には対応しておらず, 複雑なオブジェクトを取り扱う必要がある時に少し困ります。
# IsarLinkとは
`リンクは、例えばコメントの作成者(User)のようなオブジ
Jetpack Composeでパフォーマンスが良くない書き方を避ける
基本的には「**早すぎた最適化は避けましょう**」が前提にはあるのですが、パフォーマンス的に気をつけた方がいい書き方を紹介します。
## 0. Jetpack Compose の最新バージョンを使用する
書き方の前に、Jetpack Compose は新しいバージョンほどパフォーマンス改善が入っているので、極力新しいバージョンを使いましょう。
– Modifier の Node 化
– Compose 1.7.0 で入る strong skip mode## 1. derivedStateOf は必要以上に使わない
変更のバッファリングをするためコストがかかる処理なので、頻繁に値が変わるけど結果が変わらなくて recompose を避けたい時だけに使用しましょう。
単純な値変更による recompose で問題ない時は `derivedStateOf` を使う必要はないです。“`kotlin
tabs.forEachIndexed { index, tab ->
// ❌
val isSelected = remember {
deri
FlutterFlow GitHub経由でデプロイする際のエラー
## 初めに
### FlutterFlowについてFlutterFlowは、爆速モバイルアプリ開発を実現する、画期的なノーコードツールです。簡単なアプリなら本当にその日のうちにテストフライトまでが完了していると優れたツールです。
他のノーコードツールと違って書ける、Flutterアプリとして吐き出せる、という点が強みです。
Flutterでできることならなんだってできちゃいます。https://flutterflow.io/
### GitHubを使った開発が可能
FlutterFlowではコードをGitHubのレポジトリにボタンひとつでプッシュする機能が備わっています。また、それだけではなく、GitHub上のブランチを指定すると、そのブランチのコードを使ってデプロイまでしてくれます。
例えば、僕はFlutterFlowではどうしても修正できない箇所を修正・追加するためにこの機能を使っています。(具体的な手順は下の通り)
1. FlutterFlowからGitHubのレポジトリにプッシュ(flutterflowブランチが作成される)
1. プッシュされたコードをmai
Skip使ってみた
## Skipとは?
– Swift/SwiftUIを用いてAndroid開発も行えるプロジェクト
– 内部で,Swift/SwiftUIコードをKotlin/Composeコードへのトランスパイルが行われている
– 正確にはクロスプラットフォームではなくSwift/SwiftUIでAndroid開発ができる
– Xcodeへ導入することで使えるようになる(AndroidのためにAndroid Studioは必要)![スクリーンショット 2024-03-08 15.10.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3688344/bf469a88-afb1-8b4e-59f7-6889eeb431f3.png)
(引用:https://skip.tools/docs/)
## ここがすごい
– Swift Package Manager (SwiftPM) から Android Gradleへのプロジェクトコンバーターも同梱.パッケージ依存関係を自動的に保ってくれ
ScoopでインストールしたAndroidStudioのアップデート時エラーの対処法
# ScoopでインストールしたAndroidStudioのアップデート時エラーの対処法
一度アンインストールして再インストールするのが確実
* AndroidSDKはDeprecated, android-cltを利用する
1. Android関連アプリをアンインストール
“`
scoop uninstall android-studio android-clt gradle
“`
2. キャッシュを削除
“`
scoop/persist/android-studio
scoop/persist/android-clt
scoop/persist/gradle
~/android
C:\android
./AppData/Local/AndroidStudio
./AppData/Local/kotlin
./AppData/Roaming/AndroidStudio
“`
3. 再インストール
“`
scoop install android-studio android-clt gradle
“`
Hiltで単体テスト
Androidで、DIで注入した場合にそのメソッドを単体テスト(ユニットテスト)を実施することがあるのですが、情報が正確に記載されてる記事があまりなかったので、記事にしたいと思います。
本来は、Junit5を使いたいのですが、HiltがJunit4を前提にしているため使えませんでした。
そのための制約が色々ありました。### Gradle
* junit
“`@Rule“`を使用するために必要* androidx.junit
AndroidJUnit4::classを使用するために必要* robolectric
“`@Config“`を使用するために必要“`gradle
testImplementation(“junit:junit:4.13.2”)
testImplementation(“androidx.test.ext:junit-ktx:1.1.5”)
testImplementation(“org.robolectric:robolectric:4.11.1”)
testImplementation(“com.google.dagger:hilt-
file_pickerでファイルを一つ選択して読み込む
# はじめに
ファイルをインポートする処理を作りたく、ファイルを選択してやりたいなと思い調べたら、[file_picker](https://pub.dev/packages/file_picker)にたどり着きました。
Googleドライブからも読み込めるのでまさにやりたい子ができます。
なお、導入時に注意点があるようなので、[GithubのSetup](https://github.com/miguelpruivo/flutter_file_picker/wiki/Setup)を見ておいた方がよさそう。今回は、ファイルを一つ選んで読み込む処理を作井精しました。
現時点ではAndroidのみ。
ゆくゆくはiOSでも試すのでその時に記事をアップデートします。# 導入
導入は以下のコマンドでOK
“`
flutter pub add file_picker
“`
[GithubのSetup](https://github.com/miguelpruivo/flutter_file_picker/wiki/Setup)にAndroidの注意点が書いてありますが、特に何もしな
Android Studio のコルーチンの概要
# はじめに
コルーチンの学習として、[Android Studio のコルーチンの概要](https://developer.android.com/codelabs/basic-android-kotlin-compose-coroutines-kotlin-playground?hl=ja#0)という、タイマーアプリをサンプルとして作成しながら、具体的にコルーチンの基礎を学べるCodelabを進めて、コルーチンに対する理解を深めます。本文を記入しつつ、つまづいた部分や気になった部分は本文の間に挟む形で、メモ書き程度にここに記入していきます。
この記事がコルーチンの理解の手助けになれば幸いです。
# 1.始める前に
前の Codelab では、コルーチンについて学習しました。Kotlin プレイグラウンドを使用して、コルーチンで同時実行コードを記述しました。この Codelab では、Android アプリ内のコルーチンとそのライフサイクルに関する知識を利用します。新しいコルーチンを同時に起動するためのコードを追加し、それらのコルーチンをテストする方法を学習します。<前
Kotlin のプレイグラウンドのコルーチンの概要
# はじめに
コルーチンの学習として、[Kotlin のプレイグラウンドのコルーチンの概要](https://developer.android.com/codelabs/basic-android-kotlin-compose-coroutines-kotlin-playground?hl=ja#0)というAndroidアプリ開発におけるコルーチンの基礎を説明してそうなCodelabを進めて理解を深めます。今回は特に、launch, async awaitについて、自身でもサンプルコードを記載していきながら理解を深めることに重きを置きます。本文を記入しつつ、つまづいた部分や気になった部分は本文の間に挟む形で、メモ書き程度にここに記入していきます。
この記事がコルーチンの理解の手助けになれば幸いです。
# 1.始める前に
この Codelab では、優れたユーザー エクスペリエンスを提供するために Android デベロッパーが理解しておくべき重要なスキルである同時実行を紹介します。同時実行とは、アプリで複数のタスクを同時に行うことです。たとえば、アプリは、ユーザーの入力イベン
Hiltとは?ざっくり解説
# Hiltとは?ざっくり解説
HiltViewModelで始めるAndroidの依存性注入のお話
# はじめに
最近のAndroidアプリのアーキテクチャ設計において、依存性注入(DI)は必須のパターンとなっています。特に、ViewModelを使った設計ではDIがさらに重要な役割を果たします。**Googleが提供するHiltは、AndroidのためのDIライブラリとしてこの問題をスマートに解決してくれます。**
今回はHiltViewModelを使用して、ViewModelのDIを簡単に行う方法を紹介します。# Hiltとは?
Hiltは、DaggerをベースにしたAndroid用の依存性注入ライブラリです。設定が簡単で、アノテーションを利用するだけで依存性の管理が可能になります。
`@HiltViewModel`アノテーションを使用すると、ViewModelがHiltの管理下に入り、必要な依存関係がコンストラクタ経由で自動的に注入されます。
使用するメリットとしては以下のことが挙げられます。:::note info
– ViewModelのテストが容易になること
– 依存性の管理が明確になりとコードの可読性が向上すること
– コンパイル時に依存性の解決を行うため、安全性
cameraXで撮影した画像が勝手に回転するんだけど!?って貴方に【Androidアプリ開発】
“`
最終更新日: 20240304
“`
いざカメラアプリの開発を開始すると
縦撮影した画像が勝手に90°回転するなど厄介な問題が発生します(端末によるかも)
最終的には下記の公式ドキュメントを見たらすんなり解決したんですけど
ここ以外に望んだ情報はなかった気がするので本記事に残しておきますhttps://developer.android.com/training/camerax/configuration?hl=ja
https://developer.android.com/reference/androidx/camera/core/ImageCapture#setTargetRotation(int)
https://developer.android.com/training/camerax/orientation-rotation?hl=ja
# 要件
画面の向きを縦に固定した状態で
画像を回転したい# ソース
Java言語で書いています
事情あってソースコードを全部載せることができないのですが
雰囲気でわかると思います## 端末の回転
AppwriteにFlutterプロジェクトからAndroidエミュレータで接続する時の接続エラー
AppwriteにFlutterから接続する時、Androidエミュレータのときのみなぜか繋がらない問題が起きました。
(*dockerでローカルでAppwriteを起動しています。)下記がエラー
ClientException with SocketException: Connection refused (OS Error: Connection refused, errno = 111), address = 127.0.0.1, port = 33098,エミュレータをAndroid Studioから削除→再構築
など試してみましたがうまくいかず、youtubeで検索してたところなぜかこの方法で解決。
Appwriteに接続する時の接続先を
endPoint = ‘http://10.0.2.2/v1’;
のように、「10.0.2.2」にします。
こうするとうまくいきました。(なんで?)
参考Youtube動画
【Android】Jetpack Composeでカウントアップアプリを作る
## 概要
画面内に設置された画像をクリックするとカウントアップされ回数が表示されるアプリを実装します。## 画像を用意
今回使う画像はこの二つです。Star
![icon.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747809/e19fd109-2566-d9f3-7ad5-408235626e76.png)Triangle
![triangle.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747809/cc8148e4-40d0-bd61-c20b-daa6c28cab39.png)## クリック回数記憶変数定義
クリック回数を記憶する変数をそれぞれ初期値0で定義します。
Starクリック回数
“`
var countTapStar by remember{
mutableStateOf(0)
}
“`Triangleクリック回数
“`
jetpack composeでキーボード入力完了時に特定の処理を行う
# はじめに
今回はjetpack composeでキーボード入力完了時に特定の処理を行うを紹介していきます
### 本文
TextFieldの引数に対して下記の引数を追加するのみです。
アイコンを変えたい場合は`keybodardOption`の`IMEOption`を設定するのみです
“`kotlin
keyboardActions = KeyboardActions {
/// 行いたい処理
}
“`
### 最後に
どなたかのお役に立てれば幸いです