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

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

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

元記事を表示

OTHERカテゴリの最新記事