Android関連のことを調べてみた

Android関連のことを調べてみた
目次

【Map Compose】 デバイスの現在地と方位を取得してGoogle Map公式アプリみたいな現在地マーカーを表示する

デフォルトのGoogle Map Composeでも[isMyLocationEnabled](https://googlemaps.github.io/android-maps-compose/maps-compose/com.google.maps.android.compose/-map-properties/is-my-location-enabled.html)をtrueにすれば現在地マーカーは表示されるのですが方位矢印の動きがカクカクなのが嫌だったので自分で実装することにしました。
![](https://storage.googleapis.com/zenn-user-upload/8aabb4009c4c-20241005.gif)

# 完成系

今回作ったやつとGoogleMap公式アプリで同じ場所を歩いて比較してみました(個人情報笑
多分問題なさそう。

| 作ったもの | GoogleMap公式アプリ |
| —- | —- |
| ![](https://storage.googleapis.com/zenn-user-upload/85e0a614

元記事を表示

DataStore を使ってタスクキルしても大丈夫なお気に入りフィルターを作った with Jetpack Compose

## 今回行ったこと
トグルスイッチの状態をタスクキルしたり、画面回転させてもリセットされないようにしました。

## 👯‍♂️登場人物?紹介
このデータ保持をする実装をするために以下の登場人物たち?が登場します。 (登場プログラムと言えば良かったかな・・・)

– viewModel
– DataStore を使ってデータを保存するために使用
– Activity が破棄されるイベント(画面回転など)があっても生き残り続けるため重要人物
– ToggleComponent
– トグルスイッチを実装するコンポーネント
– タップされるたびに状態を上書き保存
– デフォルト値は false
– ListScreen
– リスト画面にトグルスイッチを配置
– コンポーネン

元記事を表示

【Android】JetpackComposeでテキストを常にスクロールさせる【Kotlin】

# はじめに
今回は引き受けている仕事の中でなかなかJetpackComposeに触れないでいる中、自分のインプットの中だけでもなるべく触ろうと思い立ったが、何から触ろうかと思ったので、自分の興味のあるアニメーション関係からきっかけを作ろうと色々触っている中で見つけたものを紹介していこうと思います。
今回記事にて紹介するものは **basicMarquee()** です。

タイトルではテキストをスクロールと言いましたが、公式には
>任意のコンポーザブルに basicMarquee 修飾子を適用すると、アニメーション化されたスクロール効果を生成できます。

とあるので、TextView以外でも使えるっぽいです。

# 使い方

“`
@Composable
fun TextMarquee() {
Column(Modifier.width(400.dp)) {
Text(
“テキスト”,
modifier = Modifier.basicMarquee()
)
}
}
“`

基本的には

元記事を表示

Viewはメンテナンスモードだと考えられる理由

DroidKaigi2024の「Android ViewからJetpack Composeへ 〜Jetpack Compose移行のすゝめ〜」で発表されていたViewがメンテナンスモードである点についてまとめました!
# 概要
**タイトル**
Android ViewからJetpack Composeへ 〜Jetpack Compose移行のすゝめ〜

**発表者**
syarihu

**動画**

# 詳細
### Viewはメンテナンスモードかも。。。
Google Issue Trackerの記載、Jetpack Composeの生みの親のXの投稿からViewはメンテナンスモードの可能性が高いです。

### Gridlayoutはメンテナンスモード
Google issue trackerに投稿されている「Bug: GridLayout doesn’t let TextView change its font-size as a cell, and can sometimes cause only 1 row to

元記事を表示

AndroidエンジニアのためのXcodeショートカット

# はじめに
今回は、AndroidStudioでよく使うショートカットのXCode版を紹介していきます
### 本文

読み出し先検索

AndroidStudioでは、関数などの実行箇所や実装箇所を探すのにはcmd+clickですが、XCodeではcmd+Clickが使えるのは関数などの実装箇所のみで実際に呼び出している場所を探すのには該当関数を選択した状態でctr+cmd+shift+hを押す必要があります。
押しづらい上に覚えにくいので、SideBarにある虫眼鏡アイコンからCall Hierarchyで検索する方も多いみたいです。

File検索

AndroidStudioではShift2回押しでファイルを検索できますが、XCodeではshift+cmd+oでプロジェクト内のファイル検索ができます

コード整形

AndroidStudioではcmd+opt+Lでファイル内のコードを整形できますが、XCodeではctr+Iで整形することができます
### 最後に
備忘録としての役割が非常に強いですが、どなたかのお役に立てれば幸いです
AndroidStud

元記事を表示

Splash画像のみ変えたい時(Android)

通常の設定だとSplash画像にはアプリアイコンの画像がそのまま表示されます。
Splash画像のみ変更したい場合、どのようにするのかを共有します。

## 1. Splash用の画像ファイルを用意する

まず、Splash画面に表示したい画像を drawable フォルダに追加します。例えば、**ic_splash.png** という名前の画像ファイルを使うとします。
そして更に drwaableフォルダにxmlファイルを追加。例えば **background_splash** という名前にします。
“`kotlin:xml


元記事を表示

runInterruptible: Coroutine上で時間のかかるコード実行を適切にキャンセルする

みなさんはKotlin Coroutines上で時間のかかる処理を行う際、処理のキャンセルについて意識されてますでしょうか?

この記事では、Coroutine上で動かす時間のかかるコード実行を適切にキャンセルするには[withContext](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/with-context.html)ではなく[runInterruptible](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/run-interruptible.html)を利用するべきであるという例を紹介します。

時間のかかるコード実行をキャンセルさせる例として以下のようなコードを用意しました。

“`kotlin
runBlocking {
val heavyWork = fun(): String {
p

元記事を表示

DroidKaigi2024で見たセッションのメモ(アーカイブ動画編その1)+所感

[こちら](https://qiita.com/hiro404/items/88228806cd86abe1b372)の続編です。

当日見れなかったセッションをアーカイブで見ています。
見て気になったところや所感をなぐり書きするメモになります。

自分の所感になりますので参考程度にお願いします。実際のアーカイブを見ることをおすすめします。

## [Kotlin 2\.0が与えるAndroid開発の進化](https://2024.droidkaigi.jp/timetable/693342/)

Kotlin2.0でのアップデート内容に関するセッション。

K2モードはbuild.gradleなどがまだできていない部分があり、Android開発ではまだ待ったほうが良さそう。

文法的にはキャストやスコープ、enumなどに変更が入っている。enumはentriesを使うとパフォーマンス的に有利。
backingFieledはviewModelでMutableStateを非公開にしてimmutableなフィールドを公開していたが、このあたりの記述が簡単になる。

power asse

元記事を表示

CmakeのAndroid用ビルドでNDKが見つからないと言われる時

## 状況
CmakeでAndroid用のビルドが必要なためAndroid StudioからNDKをインストールしたがNDKが見つからないと言われる。

## エラー内容
“`
CMake Error at C:/Program Files/CMake/share/cmake-3.29/Modules/Platform/Android-Determine.cmake:217 (message):
Android: Neither the NDK or a standalone toolchain was found.
Call Stack (most recent call first):
C:/Program Files/CMake/share/cmake-3.29/Modules/CMakeDetermineSystem.cmake:184 (include)
CMakeLists.txt:3 (project)

CMake Error: CMake was unable to find a build program corresponding to “Ninj

元記事を表示

FlutterのshowDialogのAlertDialogサンプル

– Android、iOS用でそれぞれ環境に合うDialogを出力する
“`dart
import ‘dart:io’;
import ‘package:flutter/cupertino.dart’;
import ‘package:flutter/material.dart’;

class CommonDialogView {
static Future show(BuildContext context, String text) {
return Platform.isIOS
? _showCupertinoDialog(context, text)
: _showMaterialDialog(context, text);
}

static Future _showCupertinoDialog(
BuildContext context, String text) {
return showCupe

元記事を表示

Misuse of Sign in with Google API: Use of `:googleid` classes without use of `GoogleIdTokenCredential`

Ladybug2024.2.1にアップデートしたところ、Lintが次のメッセージで失敗するようになりました。
“`
Error: Use of :googleid classes without use of GoogleIdTokenCredential [CredentialManagerSignInWithGoogle]
val googleIdOption = GetGoogleIdOption.Builder()
~~~~~~~~~~~~~~~~~

Explanation for issues of type “CredentialManagerSignInWithGoogle”:
When using :googleid classes like GetGoogleIdOption and
GetSignInWithGoogleOption, you typically must handle the response using
GoogleI

元記事を表示

初心者エンジニアによるAndroidアプリ開発日記⑤

# まえがき
前回にレイアウトの大まかな実装を行うことができたので、今回はロジックの大枠を実装していきます。

前回は[こちら](https://qiita.com/hukusima65/items/5cf550cd345718f9d57d)

# 目次
* [概要](#概要)
* [アクティビティ実装概論](#アクティビティ実装概論)
* [AppCompatActivityクラス](#appcompatactivityクラス)
* [Rクラス](#rクラス)
* [実装:manifests](#実装manifests)
* [実装:TitleActivity](#実装titleactivity)
* [実装:QuizActivity](#実装quizactivity)
* [実装:IncorrectActivity](#実装incorrectactivity)
* [国旗リソース](#国旗リソース)
* [動作確認](#動作確認)
* [終わりに](#終わりに)

## 概要
この記事では、アプリ全体のロジックの実装内容を記載する。

## アクティビティ実装

元記事を表示

ど素人の私が Material3 と仲良くなるために読んだWebサイト

## デザインできる人ってかっこいいじゃないですかー
7年前にほぼデフォルト設定で作成した Android アプリのデザインを [Material Design 3](https://m3.material.io/) にしたら、かっこよくなれるんじゃないかという素人的な発想でデザインの変更に取り組んでみたら、まぁ時間が溶けていきました。

最初は、Google 検索と ChartGPT とか使えばさくっと終わると思って検索ワードやプロンプトを入力しまくってましたが、なんかうまく動かず、色が変わらん!?という状況でイライラモードになりました。

結局、Material Design の公式サイトを読むところから始めるのが一番良かったというおちになりますが、作業を進めていく間にブックマークした Web サイトをまとめておきます。

## Web サイト集
### 1. Material Design の前に
そもそも Android アプリの Style や theme について知識ゼロの自分が、Material Design の公式サイトを読んだところで、チンプンカンプンになりました。知

元記事を表示

MVP(Model-View-Presenter)をComposeでやってみる

## 要旨

ComposeアプリにおけるアーキテクチャはMVVM(Model-View-ViewModel)がよく用いられるが、今回はMVP(Model-View-Presenter)を用いてアプリを作成していく。

## MVP(Model-View-Presenter)について一言で

Presenterはビジネスロジック(Model)とUi(View)の仲介役である。

“`plantuml
package “Model” {
}

package “Presenter” {
}

package “View” {
}

[Presenter] <.. [Model] : Update [Presenter] --> [Model] : Fetch
[Presenter] <-- [View] : Emit\nUiEvent [Presenter] ..> [View] : Update\nUiState
“`

今年のDroidKaigiアプリはMVPアーキテクチャで作成された。

https://github.com/DroidKaigi/conference-app-

元記事を表示

Jetpack ComposeでActivityを再起動せずにアプリのテーマを変更する方法

*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://blog.chungjungsoo.dev/dev-posts/compose-theme-viewmodel/), 同じく私が作成しました。)*

一般的にAndroidアプリでテーマを変更すると、Activityを再起動する必要があります。しかし、いくつかのアプリを利用していた時、テーマを変更してもActivityを再起動しないアプリをいくつか発見し、興味を持って分析した後、好みに合わせて変更して実装してみました。

## 新しい発見

Android開発をしていると、Activityのライフサイクルで`onCreate`は無条件に1回だけ呼び出されるという事実を知っているはずです。そうやってアプリを開発してる時、`onCreate`が二回呼び出される現象を経験して、原因を調べてみると、ActivityでConfigurationの変更が起こる何かをしたことに気づきます。([参考](https://developer.andro

元記事を表示

グラフライブラリ6. Maven Centralにデプロイする

*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://blog.chungjungsoo.dev/dev-posts/graph-library-6/), 同じく私が作成しました。)*

グループプロジェクトでグラフライブラリを実装する過程をまとめてみました。この記事では完成したグラフライブラリをMaven Central Repositoryへ配布する過程について説明します。([project repo](https://github.com/boostcampwm2023/and09-PriceGuard), [library repo](https://github.com/Taewan-P/material-android-chart))

## Sonatype 加入、課題生成

まず、アカウントがない場合は[https://issues.sonatype.org/](https://issues.sonatype.org/)に入って会員登録をします。

![sonatype

元記事を表示

グラフライブラリ 5. タッチ、インタラクション

*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://github.com/boostcampwm2023/and09-PriceGuard/wiki/%EA%B7%B8%EB%9E%98%ED%94%84-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-5.-%ED%84%B0%EC%B9%98,-%EC%83%81%ED%98%B8%EC%9E%91%EC%9A%A9))*

グループプロジェクトでグラフライブラリを実装する過程をまとめてみました。今回の記事ではその中でタッチやインタラクション処理部分について説明します。([project repo](https://github.com/boostcampwm2023/and09-PriceGuard), [library repo](https://github.com/Taewan-P/material-android-chart))

### 問題 1.グラフの軸ですべてのデータを

元記事を表示

グラフライブラリ 4. デザイン適用

*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://github.com/boostcampwm2023/and09-PriceGuard/wiki/%EA%B7%B8%EB%9E%98%ED%94%84-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%EB%94%94%EC%9E%90%EC%9D%B8-%EC%9E%85%ED%9E%88%EA%B8%B0), 同じく私が作成しました。)*

グループプロジェクトでグラフライブラリを実装する過程をまとめてみました。今回の記事ではその中でグラフデザインやテーマの部分について説明します。([project repo](https://github.com/boostcampwm2023/and09-PriceGuard), [library repo](https://github.com/Taewan-P/material-android-chart))

# 目標

グラフライブラリ 3. グラフデータの作成

*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://blog.chungjungsoo.dev/dev-posts/graph-library-3/), 同じく私が作成しました。)*

グループプロジェクトでグラフライブラリを実装する過程をまとめてみました。今回の記事ではその中でグラフデータを描画する部分について説明します。([project repo](https://github.com/boostcampwm2023/and09-PriceGuard), [library repo](https://github.com/Taewan-P/material-android-chart))

## グラフデザインモチーフ

まず、実装方法を説明する前になぜこのライブラリを実装することになったのか説明します。

ブーストキャンプグループのプロジェクトデザインをする時、Material Designを遵守するデザインで制作しようと思い、グラフのデザインもMaterial的に反映させ

元記事を表示

グラフライブラリ 2. グラフ軸の作成

*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://blog.chungjungsoo.dev/dev-posts/graph-library-2/), 同じく私が作成しました。)*

グループプロジェクトでグラフライブラリを実装する過程をまとめてみました。今回の記事ではその中で核心部分であるグラフ軸を描く部分について説明します。([project repo](https://github.com/boostcampwm2023/and09-PriceGuard), [library repo](https://github.com/Taewan-P/material-android-chart))

## 考慮すべきこと

実装する前、軸を描く時どのようなことを考慮する必要があるのか簡単に書いてみました。

– スケールの数
– スケールあたりの範囲
– 目盛ごとの間隔 (px)
– 軸の長さと余白

最初はこのように考えて実装したのですが、テストをしていくうちに考慮しなければな

元記事を表示

OTHERカテゴリの最新記事