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

Android関連のことを調べてみた2022年12月03日
目次

【Jetpack Compose】特定の条件のときだけModifierを追加したい

# はじめに
この記事はand factory.inc Advent Calendar 2022 2日目の記事です。
昨日は @doihei さんの [GitHub Apps + Dangerをやってみる](https://qiita.com/doihei/items/6dd338f2e55665cdaf28) でした。

# 特定の条件のときだけModifierを追加したい

jetpack compose で開発しているとちょいちょい
– hasRead(既読)のときだけ背景をグレーにしたい
– isRecommend(オススメ)のときだけ文字色を青にしたい

ということをしたいケースがあったりします。

“`kotlin
if (hasRead) {
Box(
modifier = Modifier.background(Color.Gray)
){
// 既読用のコンポーザブル
}
} else {
Box(
modifier = Modifier.background(Color.Gray)
){
// 未読用のコンポー

元記事を表示

言葉はまるで雪の結晶、溶けていって消えてしまう、Androidチャットアプリ

[クソアプリ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/kuso-app) 4日目の記事です。

Official髭男dismの「Subtitle」という曲が心にとても沁みます。
歌詞の一部を引用します。

>言葉はまるで雪の結晶
君にプレゼントしたとして
時間が経ってしまえば大抵
記憶からこぼれ落ちて溶けていって
消えてしまう

うっかりしたことが、フジテレビ系ドラマ「silent」を見逃してしまったこと。なんでも「泣けるドラマ」だそうで話題ですね。このドラマの主題歌でもあります。

何度も聴いているうちに、思い付いたのがこんなAndroidアプリです。

![animation (2)-min.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100612/c41a0beb-dca4-9681-7ec2-15df14caacdc.gif)

相手のメッセージが溶けて消えるチャット

元記事を表示

JetpackComposeでFloatingActionButtonの中央にアイコンを表示する実装方法

今回はJetpackComposeでFloatingActionButtonの中央にアイコンを表示する実装を行いたいと思います。

単純なFloatingActionButtonでアイコンだけ表示させたい時に、中心ではなく左寄せで表示されてしまっていたので、中央にアイコンだけ表示させたい場合の実装方法です。

# 実装方法

こちらはそのまま`icon`に設定した場合です
“`ExtendedFloatingActionButtonView.kt
@Composable
fun ExtendedFloatingActionButtonView() {
Column {
ExtendedFloatingActionButton(
icon = { Icon(Icons.Filled.Favorite, “Favorite”) },
text = { Text(“”) },
onClick = { /*今回は説明に必要ないので省略します。*/ },
elevation

元記事を表示

【Jetpack Compose】Composeとxml形式のレイアウトを共存させる

## 概要
xml で作成したレイアウトの一部を Compose に置き換える方法と、反対に Compose で作成した View に xml 形式のレイアウトを組み込む方法をご紹介します。

## 環境
Android Studio verion: Android Studio Dolphin | 2021.3.1 Patch 1
kotlin version: 1.7.10
compose version: 1.3.1

## xml の一部を Compose に置き換える
Compose をレイアウトの一部にだけ導入したい場合は、xml の “`ComposeView“` タグを使います。

“` activity_replace_layout.xml
Fragment上にTabLayoutを実装する方法[Kotlin][Android][アプリ開発]

当記事でわかること

・Fragment上にTabLayoutを実装する方法
・Fragment上にFragmentを重ね、Fragmentを切り替える方法

背景

アプリ制作中にイマドキアプリにありがちな一つの画面内にて、
スワイプで切り替えてコンテンツの表示を制御する実装(例:TwitterのHOME)を行いたく、
調査したが意外と行っている人が少なかったため、
備忘録として残したくなりました。
こちらの記事を参考することで以下の画像のようなレイアウトを作成することができます。

スクリーンショット 2022-11-16 13.30.24.png

大前提(必読)

Fragmentとは、Activity上にあるラ

元記事を表示

setup & sample run android app with appium + python in Mac

# Outline

先日、webのtest自動化するための構築,sample codeを記載した
[Set up] Robot framework – python in mac
Selenium WebDriver Java Simple Program – Login

今回は、NativeAPPをテストするための第一歩までを記述する。

# Condition

| APP, OS | Version 等 |
|:———–|:————|
| Mac | Monterey version 12.4 |
| Python | 3.9.6 |
| Appium | 1.22.3 |

# Setup

### Install Appium

appiumのinstal

元記事を表示

React Nativeを利用したアプリ開発でライブラリのライセンスをJSXで表示したい

# モチベーション

React Nativeを利用した開発で利用しているライブラリをAndroid, iOSごとにjson形式でまとめて、React NativeのViewから表示させたい。この仕組みを、できるところは自動化をさせたい。その手順や躓きポイントをまとめた。

### この記事について

[Unipos Advent Calendar 2022](https://qiita.com/advent-calendar/2022/unipos)の2日目の記事です。

## 用意するもの

### ライセンス出力で利用
– [react-native-oss-license](https://github.com/k-tomoyasu/react-native-oss-license)
– [LicensePlist](https://github.com/mono0926/LicensePlist)
– [LicenseToolsPlugin](https://github.com/cookpad/LicenseToolsPlugin)

※LicenseToolsPlugin

元記事を表示

javaでスプレッドシート

現在AndroidStudioでアプリ開発をしています。その際に、javaを使用してAndroidStudio→スプレッドシート→AndroidStudioというようにデータを送りたいのですがどのようにすればいいかわかりません。
設定方法など細く教えていただけるとありがたいです

元記事を表示

ReactNative+ExpoでAndroidアプリをリリース

# はじめに
この記事は [Google Developer Student Clubs Japan Advent Calendar 2022](https://qiita.com/advent-calendar/2022/gdsc-jp) 2日目の記事です。
はじめまして!GDSC HitotsubashiのLeadをやっております、oreoです。
一橋大学法学部に在籍中で、エンジニアインターンではReactを使ったwebアプリ開発に参加しています。
個人では、GDSC Hitotsubashiに所属しているメンバーとReactNativeでモバイルアプリの開発もしており、先日Androidアプリをリリースしました。リリースする際にExpoが便利だと感じたので記事にしました。
# ReactNativeとは
Expoの説明に入る前にReactNativeの説明をします。
ReactNativeはモバイルアプリケーションフレームワークです。iOSとAndroidの両方で動作するクロスプラットフォーム開発が可能です。同じクロスプラットフォームアプリ開発のフレームワークとしては、Googl

元記事を表示

Android アプリの各通信処理を Retrofit に移行するためにやったこと

[N予備校 Android](https://play.google.com/store/apps/details?id=nico.ed.nnn.zane&hl=ja&gl=US&pli=1)チームの鎌田です。

N予備校 Android チームでは、アプリの各通信処理を[Retrofit](https://square.github.io/retrofit/)に移行しました。

本記事では、コード例を交えてこれまでの実装からどのように Retrofit に移行したかの経緯、移行にあたってつまづいたポイントについてまとめます。

また、Retrofit の細かい解説に関してはしませんのでご承知ください。

# これまでの実装

これまでは、OkHttp をベースにした独自の`ApiClient`クラスを作成し、以下のように実装していました。

“`kotlin:ExampleRepository.kt
class ExampleRepository(private val apiClient: ApiClient) {
fun postExampleInfo(id: Stri

元記事を表示

Android UnitTestでR.stringのテストを劇的に見やすくする

# 概要

Android で普通の Unit Test (Android Test/Instrument Test じゃない方のテスト) で R.string.xxx についての Assert を実行すると下記のような謎の数値のエラーになっちゃうんですよね。

“`kotlin:テストコード
val actual = hoge.getTextId()
assertEquals(R.string.xxx, actual)
“`

出力されるエラー:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29899/8ea79e11-6778-a335-43b7-8f1ca14a5655.png)

こうだしたいですよね:
“`
expected: but was:
Expected:R.string.xxx
Actual :R.string.yyy

java.jang … (

元記事を表示

Compose でパフォーマンスの高いレイアウトを作る

Jetpack Compose は「より優れたアプリを迅速にビルドする」というスローガンを掲げていますが、優れたアプリの重要な要素の一つが UI のパフォーマンスです。

この記事では、まず Compose と View のレイアウトシステムを簡単に比較して Compose の強みを説明し、それから Compose でパフォーマンスの高いレイアウトを作るコツを例を交えて紹介します。

## Compose のレイアウトシステムの改善

#### View のレイアウトシステムの問題点

1. View では一つのレイアウトを複数回測定(measure)することが許されていて、実際その状況に陥ることもよくあります。例えば、`LinearLayout` の `baselineAligned` はデフォルトで `true` なので、明示的に `baselineAligned` をオフにせずに `LinearLayout` 内で `layout_weight` を使うと子レイアウトが複数回測定されます。このようなレイアウトをネストする場合、測定回数が指数関数的に増える可能性があります。`Con

元記事を表示

「状態ホイスティング」の説明

## はじめに

本記事は [Android Advent Calendar 2022](https://qiita.com/advent-calendar/2022/android) の1日目の記事です。
1日目から空いていたので、急きょ埋めました。

状態ホイスティングについて説明します。

## 「状態ホイスティング」とは?

英語で「state hoisting」といいます。

状態をコンポーザブル(ビュー)の呼び出し元に移動して、コンポーザブル自体をステートレスにするプログラミングパターンのことです。

「表示する現在の値」と「値を変更するイベント( `(T) -> Unit` )」をコンポーザブルへ渡し、値を「コピー」するのでなく「移動」することで、信頼できる唯一の情報源を実現できます。

## 状態ホイスティングのメリット

TBD

## おわりに

急きょ書いたので、公式ドキュメントより中身が薄いです、、
後ほど編集したいと思うのでお許しください。

最初に状態ホイスティングを知ったときは感動しました。
私はiOSアプリ開発がメインなので、SwiftUIでも適用できな

元記事を表示

【Android】Drawableのxml上で画像にTintを適用

# はじめに
Drawableのxml上で画像にTintを適用する方法について説明。
例えば、`RadioButton`や`ToggleButton`など、`ImageButton`が使えない状況で前景と背景を合わせてDrawableを作成した際、レイアウト上でTintを行うと前景・背景両方とも適用されてしまう。そこで、前景のみTintを適用させる方法を説明。

# 概要
Drawableフォルダ内に作成したxml上で、``タグ内に`android:tint`を指定。

# 方法
例として、ToggleButtonで説明。
まず、`toggle.xml`に前景と背景を記述。
“`toggle.xml

元記事を表示

1年半で12個のサービスをリリースしてわかった個人開発に大切なこと

# 1, はじめに
私は私立文系大学に通う大学3年生です。
プログラミングを始めたのは大学に入学してからです。
「これから開発を始めようと思う人」や「個人開発をやっている人」に少しでも参考になれば嬉しいです。

# 2, どんなアプリを作ったの?
いくつか紹介します

### ShadowBird
TwitterのシャドウバンをチェックすることができるWebアプリです。

https://taishin-miyamoto.com/ShadowBan/

11月は月間150万PVでした。
![スクリーンショット 2022-12-01 11.24.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/850d87b2-4821-2d7f-d494-8004a6b20197.png)
色々な国の方が使用しています。
![スクリーンショット 2022-12-01 11.28.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.

元記事を表示

AndroidでNavigationを使ったDeep Linkの実装Part1

# 初めに
今回から、Navigationを使ったDeepLinkの実装を紹介していこうと思います
### 本文
まずは、Manifestの書き方からです
`scheme`はその名の通りスキームを設定します。
何も書かなかった場合は`http`と`https`が適用されます
`host`には送られてくるurlの頭部分を指定します
`pathPrefix`はurlに含まれるパスを指定します。
指定のパスが含まれてない場合は無効になります。
完全一致で指定したい場合は`pathPattern`を使いましょう。
“`xml


元記事を表示

Ionic Frameworkを使ってモバイル画面の限られたスペースで複数のコンテンツを表示する4個の方法

この記事は、 [Ionic Framework / Capacitor / Stencil Advent Calendar 2022](https://qiita.com/advent-calendar/2022/ionic_jp) の1日目の記事です。

さて、モバイル画面を設計していると、モバイル画面の限られたスペースに複数のコンテンツパターンを詰め込むことに悩むことも少なくないと思います。ハンバーガーメニューを用意して、縦にずらっとメニューを並べるようなことをすればその悩みからは開放されますが、逆にユーザからするとメニューが多すぎて何をどう使えばいいかわからないUIになります。そこで、タブをベースにしたメニューの考え方についてまとめようと思います。

# 整理のステップ
## 1. コンテンツを最大5つに絞り込む

> Use the minimum number of tabs required to help people navigate your app. Each additional tab increases the complexity of your app,

元記事を表示

実務未経験者がAndroidアプリエンジニアとして転職するまでにやったこと

私はwebやアプリの受託開発企業でAndroidアプリを作っています

今の会社に転職してから約1年経つので、実務未経験でAndroidアプリエンジニアとして転職するまでにやったことをまとめておきたいと思います

## この記事を読んでほしい人
業務未経験でモバイルアプリ(Android)の自社・受託開発企業への就職を目指している方向けの記事です

ネットで調べると「業務未経験でweb系の会社に転職」という情報はたくさんヒットしますが、AndroidやiOSなどのモバイルアプリ開発になると、途端に情報が少なくなります

私も就職活動のときに、情報が少なくて何を勉強すればいいのかわからなくて苦労したので、この記事が役に立てば嬉しいです

:::note warn
転職市場やIT業界の動向、主流なプログラミング言語はその時々の状況によって変わるので、この記事はあくまで1つの具体例として参考にしてもらえればと思います
:::

## 自己紹介
私について自己紹介しておきます
前の仕事を退職してから、8ヶ月の無職期間でプログラミングを勉強して転職しました

**・前職を離職してから

元記事を表示

[Delphi] WorkArea / SafeArea / DisplayCutout に対応する

# WorkArea / SafeArea / Display cutout とは

iPhone ではカメラ部分にノッチ(切り欠き)があり(iPhone 14 でパンチホールになったけど)そのエリアを避ける事が推奨されています。
そして iPhone で味を占めたのか MacBook にもノッチを導入。
さらに iPhone に追随したいくつかの Android のメーカーがノッチを導入。
また、Windows でも TaskBar がある部分はアプリを表示できません。

ということで、どの OS でもアプリを表示できないエリアがあります。
その部分をそれぞれ WorkArea / SafeArea / DisplayCutout と呼びます。

|OS|呼び方|説明|備考|
|—|—|—|—|
|Windows|WorkArea|表示可能なエリア|TaskBarを除いた部分|
|macOS|SafeArea|表示可能なエリア|MacBook Pro 2021 よりノッチ対応|
|iOS|SafeArea|表示可能なエリア|全ての元凶|
|Android|Displa

元記事を表示

FlutterでHiveをいい感じに使う

# 基本実装

shared_preferencesを使っていたのだが、Hiveというpackageがあったのでこちらを使用してみました
shared_preferencesとは異なり様々な型が保存でき、速度も速いということで利便性はかなり高いかと思います

こちらが公式ページ

https://pub.dev/packages/hive

インストール用のコマンド
“`
flutter pub add hive
flutter pub add path_provider
“`

keyの管理をenumを使って行う
“`
enum HiveBox {
string,
int,
double,
bool,
dynamic,
listString,
map,
}
“`
Hiveを利用するためにインスタンスを宣言する
何度も取得する必要はないので起動時にでもinitializeHiveを読んであげればいいかと思います
また、Hiveには保存場所を指定することができるのでpath_providerを使用して指定します
“`
/// Hiveのインスタンス

元記事を表示

OTHERカテゴリの最新記事