Android関連のことを調べてみた2022年11月26日

Android関連のことを調べてみた2022年11月26日

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でASP.NET Coreを動かす

# はじめに

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%

### Google
・初日から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の

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

元記事を表示

リリース済みのAndroidアプリをリファクタリングしてみた

これまで、個人開発で製作してきたAndroidアプリ「[書籍管理ができる巻数メモ](https://play.google.com/store/apps/details?id=com.highcom.comicmemo)」は継続的に機能追加するアップデートは行ってきたものの、リファクタリングによって刷新するような事はしてきませんでした。
仕事でもAndroidアプリを開発するようになり、知識も少しずつ増えてきたので、思い切ってリファクタリングをしてみることにしました。

# なぜリファクタリング?
個人開発をしていると、ゼロから作ったり、どんどん機能を追加したりすることはよくありますが、既存機能をリファクタリングするというのは、やろう!って思わないとなかなかやらないと思います。
リファクタリングの難しいところは、

– 変更後も既存と同等の機能を実現する
– 変更前のデータも引き継ぐ
etc…

既にサービスを提供しているものをそのまま継続して利用できるようにしなければなりません。なので、リファクタリングをするということも新しい技術的な知識が習得できると思ったのが背景にあります。

元記事を表示

AndroidのDeepLinkを手軽にdebugする

**「DeepLink」**
モバイル開発においてよく使う機能であり、ユーザとしても便利なものであり、そしてdebugがやりづらい。という開発においては苦しいもの。というイメージが個人的にはありました。(本番環境や開発環境でURL違うなど準備もそこそこある)
それを解決する方法を本記事では紹介します。

# DeepLinkについてざっくりと

– iOSのユニバーサルリンクと似ている
– httpも使用可能
– カスタムURLスキームと似ているが微妙に異なる
– タップすると設定されたアプリが起動される
– 特定の画面を表示させることも可能

# 解決したいこと
– DeepLinkのためにサーバやドメインなどを準備したくない
– 手早く動作確認したい

# Android Studioでの設定
## AndroidManifestにfilterを設定

“`xml


元記事を表示

StreamFab6とAndroid版が登場!

Jetpack Compose1.2.0で追加されたmovableContentOfを使ってみた

今回は、Jetpack Compose1.2.0で追加された`movableContentOf`について解説していきたいと思います。

1.2.0で追加されたのですが、自分は完全に見落としていました。
1.3.0で追加された`LookaheadLayout`と合わせて使うと、
これまでComposeで実現しづらかった、Shared Element Transitionを実現できるみたいです。

本記事では、まず`movableContentOf`について見ていきたいと思います。

## movableContentOfとは何か

`movableContentOf`とは何かというと、公式サイトによれば

https://developer.android.com/jetpack/androidx/releases/compose-runtime?hl=ja#1.2.0
> コンポーザブル ラムダを別のラムダに変換します。変換されたラムダは、状態および対応するノードを呼び出された新しい場所に移動します。前の呼び出しがコンポジションから出ると状態は一時的に保持され、ラムダへの新しい呼び出し

元記事を表示

【Android】CoroutineのJobについて【Kotlin】

# はじめに
今回はCoroutineのJobという機能について調べたものを記事にします
箇条書きにしていてわかりにくいとは思いますが、使いながら理解を深めていこうと思っているのでご容赦ください

# まとめ内容
Jobのできることを箇条書きにしてまとめたものです
・親子階層で配置することができ、親が取り消されると 子のロジックも取り消される
・SupervisorJobを使用してカスタマイズできる機能で、CancellationException以外の例外で子が失敗するとその親がキャンセルされる(結果 全ての子がキャンセルされる)
・基本的にはJob を実行しても値を出すことはできない

・Jobの状態は New,Active,Completing,Cancelling(キャンセル中),Cancelled (キャンセル済み),Completed の6つの状態が存在する

・Jobはアクティブな状態で作成され開始されます。
・またstartまたはjoinを呼び出すことによってアクティブにすることもできます。
“`
job.start()
job.join()
“`
・コルーチンが動

元記事を表示

【Android】Unknown FragmentsでXMLプレビューが表示されない場合の対処法

# はじめに
Jetpack Compose登場してからじわじわと浸透が進んでいる現在ですが、まだXMLを使用した開発は現役ですよね。
そんな中XML上でfragmentコンポーネントを使用しているとエラーが発生し、プレビューが表示されない問題があります。
この問題の対処法を備忘録的にまとめておこうと思います。

# 対処法
まずエラー内容は以下になります。
![スクリーンショット 2022-11-20 17.03.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354522/9e214d08-f05d-1dd8-2581-6acf4874254c.png)

こちらのエラーは主にfragmentタグを使用している場合などが当てはまりますね。
メッセージにもヒントがあるのですが、原因としてはfragmentは実行時に挿入されるため、対象のコンポーネントをIDEが認識できないことです。

そのため、対応方法としては以下のようにtoolsを使用してエラーの対象であるコンポーネントに対してレイアウトを設定

元記事を表示

Androidテンプレートレポジトリ作ったので晒す

# はじめに
こんにちは!Androidエンジニア3年目のgotlinです。
今回はAndroidのテンプレートレポジトリを作ってみたので、晒してみます。
[チームで育てるAndroidアプリ設計](https://peaks.cc/books/architecture_with_team)を読んでからずっとAndroidのテンプレートレポジトリを作りたかったのですが、どの機能までをテンプレートにいれるか結構悩んだりしてて、最近まぁこのくらいでいいかっていうのが、見えてきたところです。

個人開発レベルのテンプレートリポジトリなので、そぎ落としている部分もあります。

作成したリポジトリは以下です。

https://github.com/goutarouh/BaseAndroidProject/tree/main

移植時の方法もREADMEにあるので良かったら使ってみてください!

# 設定したこと

## Gradle設定周り

### バージョンカタログ
設定は[こちら](https://github.com/goutarouh/BaseAndroidProject/blob

元記事を表示

AndroidとiOSでSuicaを読み取る

ICOCA やねんけどね

# 概要

– **今回の目的**
Android と iOS で Suica を読み取ります。
– **将来の目的**
Suica は NFC TypeF でマイナンバーカードは TypeB だそうです。役所系の案件を獲得できるかも知れません。

## 用語
– **NFC**
Near field communication の略で近距離無線通信と訳されています。主に非接触型カードに搭載され、近年のスマートフォンにも搭載されています。
– **Type**
運転免許証やマイナンバーカードなどに使用されています。
– **Type F (FeliCa)**
Suica PASMO Edy nanaco などに使用されています。
– **IDm**
カード固有の ID です。スマートフォンをピッって当てるだけで読み取れ

元記事を表示

HTTP URLをAndroidアプリで開くために調べたこと

Androidアプリでは特定のドメインやパスのリンクをアプリで開くことができ、それによりアプリにユーザを誘導することができます。

リンクを開く方法は以下の3種類があります。
1. Deep Links
1. Web Links
1. Android App Links

ただし、これはAndroidでアプリを持っているユーザ限定です。ダウンロードしていないユーザに対しては、通常のWebブラウザで表示されます。
そもそもダウンロードからさせたいなどの場合は、Firebase Dynamic Linksなどが役に立つかもしれません。

# Deep Links (iOSではCustom URL Scheme)
ユーザをアプリの特定の部分に遷移させる、**任意のスキームのURI**を指します。
AndroidManifest.xmlにインテントフィルターを追加し、URLとアプリを紐づけることができます。

“`xml

<

元記事を表示

【RecyclerView × ViewDataBinding】なるべく頭を使わずに最短で複数レイアウトを使う

https://github.com/yuskey38/example-multi-layout-recycler-adapter/tree/main/app/src/main/java/com/example/example_multi_layout_recycler_view

## やりたいこと
なるべく頭を使わずに最短でRecyclerViewで複数レイアウトを使う。
いつも忘れる + ググった時にやり方色々出てきてややこしいのでテンプレート作っておく。

## 実装方法の大枠
基本的に最後に添付したコードをまるっとコピペして少し修正すればOK。
データやレイアウトは自由に作って試してみてください。

① ViewTypeのEnumを作る
② `onCreateViewHolder`はコピペ
③ `onBindViewHolder`もほぼコピペ
④ `getItemViewType`もほぼコピペ
⑤ `getItemCount`もほぼコピペ
⑥ ViewHolderのメソッドでデータとレイアウトを紐づける

※ 上記の順番で実装していく場合は`ViewHolder`がないよとエ

元記事を表示

JetpackComposeのLazyColumnでClipToPaddingのような余白のあるリストを設定する方法

JetpackComposeでリストの表示などは簡単にできますが、今までのリストのように上に余白を作りたいと思いました。

簡単に設定ができました。

# 設定方法

“`list.kt
LazyColumn (contentPadding = PaddingValues)
(top = 16.dp)){
items(100) { index ->
Text(text = “Item: $index”)
}
}
“`

`PaddingValues`
こちらをLazyColumnに設定するとできます。
`PaddingValues`は`start` `top` `end` `bottom`
それぞれ設定ができます。

![Videotogif (2).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/d2fba24b-1492-b327-7cd8-61e6737edd5b.gif)

以上です!

元記事を表示

OTHERカテゴリの最新記事