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

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

ConstraintLayoutでViewの最小(最大)サイズの設定をする

# はじめに
ConstraintLayoutとNestedScrollViewを使ってレイアウト作成している際に以下のような問題が発生。

– 上下のViewの大きさを固定してそのほかの領域に最大サイズであるViewAを表示したい
– 解像度の低い端末ではViewAの表示領域が非常に小さくなってしまうため最低表示する高さを指定したい

# 行ったこと
“`kotlin
android:minHeight = “xxdp”
“`
上記を追加

# 引っかかった点と解決法
– minHeightが効かない
– 各端末ごとに調査した結果Viewが崩れることが多々ある

### 1. まずそもそもlayout_constrainedHeightがないと適用されない

“`kotlin
app:layout_constrainedHeight=”true”
“`

### 2. android:layout_heightはwrap_content

“`kotlin
android:layout_height=”wrap_content”
“`
ほか制約をつけており0dpに設定

元記事を表示

AndroidでのJava→Kotlin移行時に起動すると異常終了するようになった場合の対処法

## Javaファイル右クリック → Convert Java File to Kotlin File

このままだと変換は無事終了するが、起動時に以下のエラーが出て異常終了してしまう。

“`
Caused by: java.lang.ClassNotFoundException: Didn’t find class “com.xxxxx.xxxxxxx.XxxXxxxxx” on path: DexPathList[[zip file
“`

## javaディレクトリ右クリック → Convert Java File to Kotlin File

こちらだと、以下の確認ダイアログが表示される。
“`
Kotlin is not configured in the project
You will have to configure Kotlin in project before performing a conversion.
“`

“`OK, configure Kotlin in the project“`を選ぶと、“`build.gradle“`や“

元記事を表示

Android StudioでCode With Meを試してみた

## はじめに

Code With Me を使ってみたので、一連の流れを備忘録としてまとめていきます。

### この記事で分かること

– Code With Me を使うための準備
– ホスト側の操作
– ゲスト側の操作

## Code With Me とは?

Code With Me はリアルタイムのコラボレーション、コードの編集、サーバーの共有、デバッグセクションの実行に使用することができ、ホストと1人以上のゲストとのやり取りを行えます。ペアプロやマルチ編集などを簡単に行えるのが特徴だと思います。

## 準備

※これは今現在(2022年7月時点)での話ですので、ご注意ください

今回は Android Studio の Dolphin Beta 5 を使って確認しています。ダウンロードされていない方は、以下のページからダウンロードしてください。

https://developer.android.com/studio/preview

次に Code With Me をダウンロードしましょう。以下のサイトにアクセスし、**213.7172.25.3** のものを

元記事を表示

【Flutter】Gradle関連でAndroidのビルドに失敗したときの対処法

# 開発環境
OS: MacOS
Flutter: 3.0.4
Flutter Channel: Stable
Dart: 2.17.5
Android Studio: Artic Fox | 2020.3.1 Patch4

# 事象
Androidのエミュレータを選択し、実行するとビルドが失敗しました。(GradleScriptException)
※iOSのシミュレータでは正常にビルドが完了しています。
~~~
org.gradle.api.GradleScriptException: A problem occurred evaluating project ‘:app’.
~~~
ちなみにAndroid Studioからビルドを実行すると、より細かいログを出力するにはオプションつけて実行してねと言われました。
~~~
Run with –stacktrace option to get the stack trace. Run with –info or –debug option to get more log output. Run with –scan to g

元記事を表示

クラウドでの実機検証サービスの考察 ~Remote TestKitの魅力について~

本記事は[Qiita Engineer Festa 2022](https://qiita.com/official-campaigns/engineer-festa/2022)の[Remote TestKitを使ってレビューを書こう!](https://qiita.com/official-events/f0e8b25feb05af6326b3)のエントリー記事です!

https://qiita.com/official-events/f0e8b25feb05af6326b3

—-

# はじめに

ある日、新機能の開発が完了し、実機検証を進めていると、表示崩れが!!!!

すぐにデザイナーの方に「ここデザイン崩れてるので直してください!」と伝えると「私の方だと崩れてないですよ?」との返答。
あれーおかしいなと思い、調べてみるとSafariのバージョンが異なっていました。

別の端末で見ると確かに表示崩れは起きずに、綺麗に表示されています。[^1]

Safariのどのバージョンからこの現象が起きてしまうのか調べようとするものの、**SafariはOSのバージョンと紐づくため

元記事を表示

Jetpack Compose ボタンの2度押しを避ける

LaunchedEffect でシンプルに書けるが。

“`kotlin
var enabled by remember { mutableStateOf(true) }

Button(
onClick = {
enabled = false
},
enabled = enabled
) {
Text(“Button”)
}

LaunchedEffect(key1 = enabled) {
if (!enabled) {
delay(3000)
enabled = true
}
}
“`

処理の流れはまあまあだるい。

“`
起動

ボタンを表示

LaunchedEffect が実行される

enable2 が true なので何もしない

ボタンをクリック

enabled2 が false に更新される

ボタンが更新され無効化される

LaunchedEffect が key1 の変更により実行される

enabled2 が false

元記事を表示

【MPAndroidChart】チャートタップ時にツールチップ表示

# 概要
チャートタップ時に、ツールチップ(下画像で`3.0,7.0`と描画されているビュー)を表示させる。

[グラフの描画については、この記事を参照。](https://qiita.com/nakashimaakio/items/d9ad48b3433c680e6f4c)

# 方法
ツールチップのレイアウト作成。
“`marker_view.xml

元記事を表示

jetpack composeで便利なライブラリ

# 初めに
今回は`jetpack compose`を実装するときに使えるライブラリを紹介していこうと思います。
二種類紹介するので、何かのお役に立てたら光栄です

### coil
まず一つ目は、`coil`です
https://coil-kt.github.io/coil/compose/
元々、`coil`は画像を表示するための機能として`jetpack compose`と関係なく使われてきた人気のライブラリです。
`jetpack compose`では、画像に設定できる物が
– Painter
– ImageVector
– ImageBitmap
の三種類となっており、API等で受け取った画像を表示するためには少し手を加えないといけません。
そんなときに使えるのが`coil`の`AsyncImage`です。
これを使用することで`url`を渡せるだけでなく、`placeholder`等も設定できるので非常に便利です。

### constraintLayout
2つ目は`ConstraintLayout`です
https://developer.android.com/je

元記事を表示

a-1-1-2.列配置(LinearLayout)の入れ子

### a-1-1-2.列配置(LinearLayout)

#### 課題

3. LinearLayout管理下の自身のViewのサイズを指定できるか。
3. LinearLayout管理下でSpaceの指定ができるか。
3. LinearLayout管理下で各Viewの比率からサイズを指定できるか。
3. LinearLayout(縦)の中でLinearLayout(縦)を入れ子にできるか。
3. LinearLayout(縦)の中でLinearLayout(横)を入れ子にできるか。
3. LinearLayoutの中でConstraintLayoutを入れ子にできるか。

#### Github

https://github.com/rwakizaka7/AndroidTest

#### テスト実装

“`xml:activity_liner_layout_test.xml

元記事を表示

Material / Material3 テーマ デフォルトカラーの色味を AndroidStudio で確認する

記述によっては、エディタの左側に表示されませんね。

![スクリーンショット 2022-07-11 11.28.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588914/6d007b8c-556a-800b-5097-3492e97350c1.png)

地道な作業で整理して書いて色目を見ます。

![スクリーンショット 2022-07-11 12.08.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588914/45813309-5f4a-ebfb-0dc1-10389d653c09.png)

![スクリーンショット 2022-07-11 12.17.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588914/b3495b90-e70b-d241-3f5a-d5ca72e44d0e.png)

色って視覚的に記憶

元記事を表示

Windows Subsystem for Android の IPv6 周りをテスト

# サマリー

+ Windows Subsystem for Android の version 2205.40000.14.0 から Advanced networking で IPv6 がサポートされたのでテストした。
+ SLAAC (A=1, M=0, O=0)、Stateful DHCPv6 (A=0, M=1, O=1) のどちらの環境でも接続できた。
+ SLAAC + Stateful DHCPv6 (A=1, M=1, O=1) で複数の IPv6 アドレスがある場合に一時 IPv6 アドレス (RFC 8981) ではなく Stateful DHCPv6 で取得したアドレスの方を送信元に使ってしまうような。。

# 環境

“`
> systeminfo /fo csv | ConvertFrom-Csv | select OS* | Format-List

OS Name : Microsoft Windows 11 Pro Insider Preview
OS Version : 10.0.25151 N/A Build 25

元記事を表示

【kotlin】viewの位置やサイズを動的に変更する【Android】

# はじめに
今回はviewをレイアウトではなく コード上で動的に動かす、サイズを変更する方法を記事にします

# コード一覧表
|コード|説明|
|:—|:—|
|translationX|X座標位置を指定することで、指定した位置にViewオブジェクトが移動。(横方向に移動します)|
|translationY|Y座標位置を指定することで、指定した位置にViewオブジェクトが移動。(縦方向に移動します)|
|scaleX|指定したサイズにViewオブジェクトの横幅が変更されます。|
|scaleY|指定したサイズにViewオブジェクトの縦幅が変更されます。|
|rotationX|指定した角度にX軸回転します。|
|rotationY|指定した角度にY軸回転します。|
|rotation|指定した角度でViewオブジェクトの中心点を中心に回転します。|

# 実践
ここでは一例として translationXを使ってHello World! のviewを横方向に移動させたものを コードとスクショで置いておきます
![スクリーンショット 2022-07-10 21.5

元記事を表示

Flutterのnamed routesの実装

# はじめに
version
参考文献 [公式Document](https://docs.flutter.dev/cookbook/navigation/named-routes)
エディタ androidstudio

# 結論

routing設定はこんな感じ

“`
return MaterialApp(
title: ‘Flutter Demo’,
theme: ThemeData(
primarySwatch: Colors.blue,
),
initialRoute: ‘/’,
routes: {
‘/’: (context) => const MyHomePage(),
‘/second’: (context) => const SecondScreen(),
},
);
“`

実際に遷移したいときは以下のようにnameを指定してください
“`
// MyHomePageに遷移する場合
Navigator.pushNamed

元記事を表示

今更AndroidのContextについて整理しよう

# 適当に使いがちなContext
fragmentのライフサイクルの勉強しているときに以下の記述を見つけました。

参照記事
https://qiita.com/K4N4/items/76d7bd8036ed98a0c271
>フラグメントのライフサイクルにおいて、最初のメソッド。フラグメントとアクティビティ(コンテクスト)が関連付けられた時に呼ばれる。引数はアクティビティではなく、コンテクスト。他のメソッドにも共通する事であるが、フラグメントは基本的にアクティビティを参照するのではなく、コンテクストを参照する。

あーはいはいcontextね〜っていつもの如く読み流しながら思いました。
#### あれ?contextってなんだっけ?

結構なんとなくで誤魔化している人も多いんじゃないでしょうか(そんなことなかったらごめんなさい)
Android開発している時に様々な場面でContextと記述したり引数に渡すもののいまいち詳しく知る機会ってない気がします。

# Contextとはそもそも何か
公式の説明(https://developer.android.com/referenc

元記事を表示

Flutterでゲームを作ってみた感想【論破王-メッセージ選択型アプリの作り方】

こんにちは、個人でアプリ開発をしているYuKiOです。

これまで**ツール系アプリを12本リリース**していますが、このたび、メッセージを選択してアンチを論破する「**論破王**」という、初めての**ゲームアプリをリリース**しました。
![緊急警告のスクショ2枚組.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228439/9be4eb68-f30e-67d8-9fa8-ce650823af0b.png)

iPhone版 https://apps.apple.com/app/id1632034935
Android版 https://play.google.com/store/apps/details?id=com.king_of_refutation

ぜひ、遊んでみてください(切実!)笑

## Flutterでゲームを作った理由
– 稼ぎやすいジャンルだから
– Flutterのノウハウがあるから
– プログラミング技術向上

Flutterでゲームアプリを作ろうと思った理由は、一つ

元記事を表示

【MPAndroidChart】グラフ外の余白を無くす

# 概要
グラフ外の余白を無くす。

|余白あり|余白なし|
| —- | —- |
| | |

`setViewPortOffsets(0f, 0f, 0f, 0f)`で余白が無くならないことがあったので、原因と対処法を記述。

# 原因
`setViewPortOffsets`の定義を見ると、別スレッドで`offset`をセットしている。そのため、表示タイミングによっては`offset`の反映がされないことがあった。

“`Java
publ

元記事を表示

KotlinのDSLを活用して似たような仕様の画面を効率よく作成する【前編】

# 説明する予定の内容

* :white_check_mark: Webフォームのようなデータ入力画面をDSLで効率よく複数作成
(後編に続く)
* NavHostで画面遷移
* Jetpack Composeから切り離すことで UnitTest だけで入力条件などのテストを実行できるようにする
* 実際の操作をシミュレートしたシナリオテストも UnitTest で書く
* Preview 表示にも対応する

# 初めに

今個人的に取り組んでいるアプリでちょっと特殊な仕様があるので、そこから話をさせてください。
このアプリはユーザーが色々情報を送れる機能の要望があって次のような画面を作ることになりました:

![Untitled 5.001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/282588/7bab079d-47d4-8b1c-400f-8cb62396b14e.png)

これが2〜3くらいであれば普通にComposeで実装すれば良いのですが、バリエーションがそれなり多いのと

元記事を表示

AndroidのPush通知の導入方法

![image00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/801359/9e2540eb-3838-9e36-dde2-92f219ee40c8.png)
Firebase Cloud Messaging(FCM)を使って AndroidでPush通知を実装します。

# Firebase Cloud Messagingとは
Firebase Cloud Messaging(FCM)は、メッセージを無料で確実に配信するためのクロスプラットフォーム メッセージング ソリューションです。以前は Google Cloud Messaging API が使われていたようですが、現在はFCMに移行しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/801359/d9f66810-953a-0d8e-273f-5fadef9a9925.png)

# Push通知実装の流れ
1. Firebaseプロ

元記事を表示

【Coroutinesガイド】コルーチンコンテキストとディスパッチャー

※ソース記事は[こちら](https://kotlinlang.org/docs/coroutine-context-and-dispatchers.html)
コルーチンはKotlin標準ライブラリで定義されている[CoroutineContext](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.coroutines/-coroutine-context/)型の値によって表されるいくつかのコンテキスト内で常に実行する。
コルーチンコンテキストは、様々な要素のセットである。主な要素は、以前に見てきたコルーチンの[Job](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-job/index.html)と、このセクションでカバーするディスパッチャーである。
## ディスパッチャーとスレッド
コルーチンコンテキストには、対応するコルーチンが実行するために使う、スレッドあるいはスレッド群を決定するコルーチン

元記事を表示

Jetpack Compose composable の recomposition を AndroidStudio で確認する方法

いつ、どの composable が compose されているか、

アプリのパフォーマンスを向上させるのは必須です。

Layout Inspector から ライブで見ながら recomposition の回数を確認します。

“`
[Tools]

[Layout Inspector]

[Component Tree]

[View Option]

[Show Recomposition counts]
“`

利用するにはいくつかの設定条件があります。
[? 【Jetpack Compose】「Layout Inspector Recomposition

元記事を表示

OTHERカテゴリの最新記事