- 1. Jetpack Compose Modifier(修飾)
- 2. 【Android】AndroidManfestのActivityタグについてゆるふわまとめ(自分用メモ)
- 3. flutter android バージョン コード 1 の apk が既に存在するため、別のバージョン コードを使用する必要があります
- 4. [Kotlin]ずっと分からなかったsealedクラスを掘り下げる
- 5. [Android]Coroutinesキーワード一覧
- 6. Jetpack Compose Navigation(BottomNavigation)
- 7. Jetpack Compose Scaffold(BottomNavigation UI)
- 8. 【Android】FragmentContainerViewについてゆるふわまとめ(自分用メモ)
- 9. android 通知 Kotlin
- 10. Kotlinデビューしたくて環境構築してみた
- 11. 全画面表示時のview崩れ対策
- 12. Jetpack Composeの基礎
- 13. 【Android/kotlin】LiveDataについて雰囲気おさらい(自分用メモ)
- 14. Jetpack Compose における状態の管理
- 15. Android Gradle: デフォルトの buildType / productFlavor を指定する
- 16. flutterでandroidの申請
- 17. 【React Native】AndroidのWebViewでPDFを表示する方法
- 18. Gradle Plugin を公開する (Gradle Plugin Portal)
- 19. [Kotlin]委譲を掘り下げる
- 20. KotlinでviewBindingを使う
Jetpack Compose Modifier(修飾)
#目次
1. Modifierとは
2. サンプルコード
3. まとめ##1. Modifierとは
“Modifier“‥コンポーザブルを修飾する、もしくは拡張するときに利用する。
このクラス関数を連鎖させてコンポーズを作成することが可能です。では、実際にどのようなことができるかを確認してみましょう。
**1. コンポーザブルのレイアウト、動作を変更できる**
**2. UIの要素をクリック可能、スクロール可能、ドラッグ可能にできる**では、実際にサンプルコードを通して確認してみましょう。
##2. サンプルコード
Background Color
—“`
Box(
contentAlignment = Alignment.Center
) {Text(
text = “Modifier Example”,
modifier = Modifier
.background(Color.Red)
)
}
“`
【Android】AndroidManfestのActivityタグについてゆるふわまとめ(自分用メモ)
## はじめに
とっても大事なのに意外に触る機会が多いわけでもないAndroidManifestファイル。たまに触ると何が何だか分からなかったので、また触るときにテンパらないように軽くまとめてみようと思います。
初心者ゆえに実際に触ったことがないタグも多いため、そのような箇所はかなりざっくりと書いています。あらかじめご了承ください。
もし間違いなどありましたらご指摘いただけますと幸いです。## 実行環境
| 項目 | 情報 |
| —— | —————————- |
| PC | MacBook Pro (14-inch,2021) |
| CPU | Apple M1 Pro 10-core |
| GPU | Apple M1 Pro 16-core |
| OS | macOS Monterey (12.0.1)
|
| An
flutter android バージョン コード 1 の apk が既に存在するため、別のバージョン コードを使用する必要があります
## 再申請の際にaabファイルをアップロードするとエラー
`バージョン コード 1 の apk が既に存在するため、別のバージョン コードを使用する必要があります。`
以下の記事でandroid/app/build.gradleのversioncodeとversionnameを変更したらいけると思ってました。
https://smot93516.hatenablog.jp/entry/2018/05/21/140558
それではflutterでは、うまくいきませんでした。なので、以下の記事を参考に
pubspec.ymlの+1を+2に変えて、`flutter clean`のあとに`flutter build appbundle –flavor prod -t lib/main-prod.dart` を実行しました。“`:pubspec.yml
# version: 1.0.0+1
version: 1.0.0+2
“`https://qiita.com/zb185423/items/2a7b49c32b817049cf2d
[Kotlin]ずっと分からなかったsealedクラスを掘り下げる
##はじめに
Kotlinに`sealed`クラスという機能があります、度々見たり、周りのAndroiderが公用語のごとく使っていて、自分は分かったふりをしていました・・・ここで掘り下げておきます。
##`sealed`クラスを端的に
一言で表すと、「制限」。
何を制限するかと言いますと、下記の様にマークされたクラスは継承を制限することを明示します。制限されていても、継承できる場合は下記です。
– `sealed`クラスのネスト内
– 同じファイル内“`kotlin:Sonic.kt
sealed class Sonic {
class Shadow: Sonic()
class Tails: Sonic()
class Knuckles: Sonic()
}class EggMan: Sonic()
“`“`kotlin:Other.kt
class Other : Sonic() // error
“`##メリット
`enum`とかなり似てるなと思いました。
そことの違いを含めて`sealed`クラスのメリットをい
[Android]Coroutinesキーワード一覧
##はじめに
https://star-zero.medium.com/2022%E5%B9%B41%E6%9C%88%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8Bandroid%E9%96%8B%E7%99%BA%E7%8A%B6%E6%B3%81-86ccc6cf925c
AndroidではCoroutinesが大分浸透してきたので、掘り下げてみたいなと思います。
とはいえ非同期プログラミングの話になると、結構??なワードが出てきてコードの理解の妨げになります。ここでは、Coroutinesにまつわるワードを一覧とその解説によってその悩みを解消する記事にしたいと思います。
##Coroutinesって?
Androidでは、お馴染みの並行した実行処理を実現するデザインパターンです。
Kotlinが言語レベルでのサポートをしてくれています。これによりUIスレッドから切り離して重めの処理を行い、ブロッキングを回避することができます。
##関連キーワード一覧
###スレッド
処理の「流れ」。
深ぼり過ぎると二度とこの世に戻ってこれないので、これく
Jetpack Compose Navigation(BottomNavigation)
#目次
1. Navigationとは
2. サンプルコード
3. まとめ##紹介する実装内容
![bottomScreen.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2512202/95727262-db9e-1117-8bb7-e16b9312cd21.gif)##1. Navigationとは
この記事は、[Jetpack Compose Scaffold(BottomNavigation UI)](https://qiita.com/Ryosuke-Android/items/2a94d4fed2586c0ed31c)で構築したUIをもとに、Navigationを実装するので、UIの説明は省略させていただきます。
“NavHost“‥**rememberNavController**を渡し、**NavController**のサブクラスである**NavHostController**でステートを管理します。
また、“NavGraphBuilder“を用いて、**navgr
Jetpack Compose Scaffold(BottomNavigation UI)
#目次
1. Scaffoldとは
2. サンプルコード
3. まとめ##1. Scaffoldとは
“Scaffold“‥マテリアル コンポーネントを、一般的な画面のパターンに組み合わせ、例アクトを構築することができる。**Scaffold**には、後置ラムダスロット**content**があり、“RowScope“を利用することで、UIの要素を横並びの一列に配置することができる。**TopAppBar、BottomAppBar、FloatingActionButton、Drawer**などを実装することができる。
**後置ラムダスロット**‥コンポーザブルなコンテンツを引数として受け入れ、それをUIの要素として利用することができる汎用ラムダのこと
今回は、以下のBottomNavigationを作成していきたいと思います。
![bottomScreen.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2512202/16bcdd9b-200d-7827-a58f-ff2d7cda1f
【Android】FragmentContainerViewについてゆるふわまとめ(自分用メモ)
## はじめに
業務で触るコードは1Activity多Fragmentという構造がほとんどのため、久々にFragmentContainerViewを使ったら書き方を綺麗さっぱり忘れていました。この調子だと次に使う時も一から調べ直しになってしまいそうなので、ゆるっとふわっとまとめてみます。
※この記事ではFragmentContainerViewとnavigationを併用する前提で書き進めていきます。
※navigationの詳細な使い方などは~~めんどくさい~~簡潔さを重視するため、この記事では踏み込みません。## 実行環境
| 項目 | 情報 |
| —— | —————————- |
| PC | MacBook Pro (14-inch,2021) |
| CPU | Apple M1 Pro 10-core |
| GPU | Apple M1 Pro 16-core
android 通知 Kotlin
#はじめに
アプリ画面のボタンを押下すると通知が届く様にする
※コード以外省略###実装
“` Kotlin:MainActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)
val channelId = “channel_id”
val channelName = “channel_name”
val channelDescription = “channel_description ”
val notificationButton = findViewById
Kotlinデビューしたくて環境構築してみた
# はじめに
Kotlinを触ってみたくなったので、環境構築をしてみました。
実際に動かすのは、今後になる予定です。# 環境構築(Windows)
## JDKのインストールをする1.公式サイトからJDKをダウンロードする
https://www.oracle.com/java/technologies/downloads/#jdk17-windows![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397779/e268999c-43d7-70a0-086f-3aab9ca40368.png)
2.インストールする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397779/64ba3798-24b6-6f5a-48cb-e2a390fd40db.png)3.環境変数の設定をする
「スタートメニュー」>「設定」>「システム」>「詳細情報」>「システムの詳細設定」>「環
全画面表示時のview崩れ対策
#はじめに
今回、自分はStatusBarを透過させた状態でViewをStatusBarに被せて表示をさせる際に、単一Activity複数Fragmentで実装していたため、動的にStatusBarの状態を変更していたところ、被せて表示させていない画面から被せて表示させたい画面に遷移し、その後被せて表示させていない画面に戻ったとき、BottomNavigationのViewが大幅に崩れてしまっていたため、その解決策を備忘録として置いておきます。###実装状態
まず、自分の場合に行っていたStatusBarの透過処理とViewの被せて表示する方法を記述しておきます。“`kotlin:
// 画面全体表示設定trueの場合被らず表示、falseの場合被せて表示
WindowCompat.setDecorFitsSystemWindows(window, true)
// StatusBarの文字色を変更trueの場合白、falseの場合グレー
val wic = WindowInsetsControllerCompat(window, window
Jetpack Composeの基礎
#目次
1. Column, Row, Box
2. サンプルコード
3. まとめ##1.Column, Row, Box
“Column“‥アイテムを画面上の垂直方向に配置するために使用する。
“Row“‥アイテムを画面上の水平方向に配置するために使用する。
“Box“‥アイテムをアイテムの上に配置するために使用する。##2.サンプルコード
“Column“
“`
@Composable
fun UnderstandColumn() {
Column(
modifier = Modifier
.fillMaxSize()
) {Surface(
modifier = Modifier
.width(150.dp)
.height(100.dp),
color = Color.Green
【Android/kotlin】LiveDataについて雰囲気おさらい(自分用メモ)
## はじめに
LiveDataとかLifecycleOwnerとかよく聞くけどいまいちなんなのかが分からないので、めちゃくちゃふんわりまとめていきます。
理解が進み次第追記予定## LiveDataとは
* データを保持してくれる箱みたいなやつ
* LiveDataと言いつつ、大体MutableLiveDataかObservableFieldを使う
* MutableLiveData→必要な時のみ監視し、別途LifeCycleOwnerを設定する必要がある
* ObservableField→常に変更を監視し続ける
* “` val count = MutableLiveData(“0”)“`みたいな感じで使う ## MutableLiveDataで必要になってくるLifecycleOwnerとは?
* 大体ActivityやFragmentをLifecycleOwnerに設定する
* ActivityやFragmentのライフサイクルに応じて変更を監視したりしなかったりする
* ActivityやFragmentがstopした時などは変更
Jetpack Compose における状態の管理
#目次
1. 語句の確認
2. コンポーザブル内の状態
3. 実際に使ってみる
4. まとめ##1.語句の確認
まず初めに、状態の管理の説明に移る前に語句の確認を行いたいと思います。
本記事において、重要な語句として次の4つを上げたいと思います。**・コンポジション**
**・初回コンポーズ**
**・再コンポーズ**
**・再コンポジション**それでは、順に説明していきます。
***
**・コンポジション**‥**コンポーザブル(Composable)**を実行した際に、**コンポジション(Composition)**を構成する。
“`
@Composable
fun MyComposable() {
Column {
Text(“Hello”)
Text(“World”)
}
}
“`上記の[Sample Code](https://developer.android.com/jetpack/compose/lifecycle?hl=ja)において、**コンポジション**は以下のツリー構造を構成する。
Android Gradle: デフォルトの buildType / productFlavor を指定する
Android Studio で Gradle プロジェクトを開いたとき、なにも指定がなければ、buildType / productFlavor を辞書順で並べたときの先頭の組が選択されます。
初期選択したい buildType / productFlavor があれば isDefault を設定します。
* Android Gradle Plugin 7.0.4 で確認しています
# 設定
`app/build.gradle.kts`
“`kotlin
android {
// …
buildTypes {
getByName(“debug”) {
isDefault = true
// …
}
register(“release”) {
// …
}
}
productFlavors {
register(“develop”) {
isDefault
flutterでandroidの申請
## android申請概要
基本の流れは[play consoleヘルプ](https://support.google.com/googleplay/android-developer/answer/9859152?hl=ja)に記載があります。
ダッシュボードの流れに沿って必要な箇所を対応します。
アプリのリリースで関連する場所に回答していきます。
事前にgoogle play consoleへ登録と素材(アイコン・スクリーンショット・アプリの説明文)などは容易しておく必要があります。## 今回詰まったaabファイルについて
Google Play に Android アプリを公開するには、Google Play Console に aab ファイルをアップロードする必要があります。
aabファイルとはgoogle playにアプリをアップロードするための圧縮ファイルのようなものです
ダッシュボードで公開の部分の設定をするとaabファイルのアップロードというのがでてきます。
調査しているときは、androidスタジオで作成するのだと思っておりました。
androidスタジオの
【React Native】AndroidのWebViewでPDFを表示する方法
#はじめに
アプリ内にPDFのドキュメントを置きたい場合、ブラウザ遷移による表示とアプリ内でのWebView表示の2パターンが考えられます。
リンクからブラウザ遷移させるのが実装としては一番楽ですが、ブラウザからアプリに戻るのが面倒であるため、ユーザの手間を考えるとなるべくこの方法は使いたくありません。そうなると、WebViewでの表示一択となりますが、ここで1つ問題があります。
それは**AndroidではWebViewにおけるPDF表示に非対応である**ということです。この問題を回避してAndroidでもアプリ内でPDFを表示する方法を2つ記載します。
#Google Docs Viewerの使用
1つ目は、Google Docs Viewerを使って、PDFをページ内に埋め込んで表示する方法です。AndroidのときだけURLをエンコードして、Google Docs ViewerのURLに埋め込むような関数`viewerUri()`を作成します。
“`ts
import { Platform } from “react-native”;export cons
Gradle Plugin を公開する (Gradle Plugin Portal)
[Gradle Plugin Portal](https://plugins.gradle.org/) へプラグインをアップロードし、公開する手順を解説します。
* Gradle Kotlin DSL (*.kts) 前提です
* Gradle 7.3.3, `com.gradle.plugin-publish` 0.19.0 で確認していますこの記事は、以下の公式ドキュメントの内容をまとめたものです。
https://docs.gradle.org/current/userguide/publishing_gradle_plugins.html
# Gradle Plugin Portal
プラグインは Gradle Plugin Portal へアップロードします。Gradle Plugin Portal でプラグインを公開すると、利用者はプラグイン ID を指定するだけでプラグインを利用できるようになります。
## Gradle Plugin Portal へのアカウント登録
https://plugins.gradle.org/user/login から Gra
[Kotlin]委譲を掘り下げる
##はじめに
度々出てくる委譲を良く分からずに使ってしまっているので、掘り下げたいと思います。
##委譲とは?
一言で表すと、「任せる」すること。
あるオブジェクトが、他のオブジェクトの処理を委託します。
##継承との違い
まず、継承とは親クラスのメンバをオーバーライドする形で機能を引き継ぐことです。
某ピンク饅頭キャラのように親の機能を「コピー」します。
親の機能を完コピした子クラスは、自分ものとしてメソッドを使うことができます。そして、委譲とは子が親の機能に「委託」することです。
これが、ざっくりとした違いです。
##メリデメの話
これだけだと、抽象的すぎるのでメリットとデメリットを整理しておきましょう。###継承のメリット
– コードの再利用が簡単###継承のデメリット
– 変更時に影響範囲が継承先に広がることがある###委譲のメリット
– 親の機能や責務を引き継がなくて済む###委譲のデメリット
– 「任せる」分だけインスタンス生成が必要##どんな課題を解決してくれるのか?
委譲のメリットにもあるように、親クラスの機能や責務を引き継がなくて済むことが
KotlinでviewBindingを使う
## ブロジェクト作成
赤のMainActivityを開きSplitで開くと、コードとデザインを同時に確認できます。
水色が`texttView`のコードとエディタです。
![スクリーンショット 2022-01-17 16.48.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755375/9abe33b5-9bb7-281c-fd0d-fa209cba6ad8.png)## ボタン追加
ボタンを追加すると、コードとデザイン両方追加されます。
![スクリーンショット 2022-01-17 17.05.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/755375/c56b9b9c-4324-34bb-abad-889b3d0051b3.png)## 背景色も変更してみる
赤枠のbackgroundをいじれば変更できました。
![スクリーンショット 2022-01-17 17.08.42.png](https