Android関連のことを調べてみた2021年10月22日

Android関連のことを調べてみた2021年10月22日

[jetpack compose]Row/ColumnとConstraintLayoutでどの程度レイアウトの作り方が違うのか

jetpack composeでかんたんなレイアウトをそれぞれ
– Row/Column/Row (※今回Rowは使っていません)
– Constraint

で作成した場合、どのような違いが出るのか見てみました。

ConstraintLayoutのUIの作り方とかはこの記事では触れませんがコード見ていただいてもある程度理解できるかなと思います。

作ってみたのはこちら。
[search, share, home, star]
というラベルが付いたアイコンを並べる

という部分をそれぞれRow/Columを使って実現したパターンとConstraintLayoutを使って実現したパターンとなります。

“`kotlin
@Composable
fun RowColumnOrConstraintScreen() {

元記事を表示

DataStoreを試してみる

# [DataStore](https://developer.android.com/topic/libraries/architecture/datastore?hl=ja)とは?
> プロトコル バッファを使用して Key-Value ペアや型付きオブジェクトを格納できるSharedPreferencesの進化版

DataStore には、以下2 種類がある
– **Preferences DataStore**
– キーを使用してデータの保存およびアクセスを行います。この実装では、
定義済みのスキーマは必要ありませんが、タイプセーフではありません。
– **Proto DataStore**
– カスタムデータ型のインスタンスとしてデータを保存します。この実装では、
プロトコル バッファを使用してスキーマを定義する必要がありますが、タイプセーフです。

## 試した環境
サンプル用に[こちら](https://github.com/Slowhand0309/DataStoreSample)にリポジトリ作成しています。

“`

元記事を表示

Androidのテストでだけ使うライブラリモジュールを作る

# 概要

[Kotlin, LiveData, coroutine なんかを使って初めてのAndroidアプリを作る(16)ライブラリバージョンアップ2021春(2)](https://qiita.com/kasa_le/items/3fc4814159e20f25c59a)

上記の記事にて、KotlinでAndroidアプリを作るシリーズを作っていますが、InstrumentationTest(androidTestフォルダのテスト)とRobolectric版のテストを同時に作っていて、いわゆるUtil系のクラスや関数が双方に必要でコピペしていくのが面倒になってきました。

テスト用の共通コードを共有する方法をとれば、コードのコピペは減らせるのですが、build.gradleのライブラリの記述が長くなってきて、テスト用のライブラリだけで長くなってしまい、本体のライブラリが分かりづらくなってきました。

そこで、テストに関連するコードを共通モジュール化することをやってみたので、その覚え書きです。

Android向けのライブラリモジュールを作る方法はいくらでも探せばありますが、私が

元記事を表示

【Jetpack Compose】Scaleアニメーション

ComposeをScaleさせるアニメーションの実装に苦労したので書きます。

ここで書くのは以下2パターンです

– 無限ループするScaleアニメーション
– 表示時に一回だけ実行するScaleアニメーション

今回動かすComposeはこんな丸いBoxです。

“`kotlin
@Composable
fun Circle(modifier: Modifier = Modifier) {
Box(
modifier = modifier
.size(80.dp)
.clip(CircleShape)
.background(Color.DarkGray)
)
}
“`

## 無限ループするScaleアニメーショ

元記事を表示

本当にリリースできるの?FlutterでQiitaアプリを作った話。

![poster_new.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678085/27dcb69c-c257-7add-27aa-0a723fe70ada.png)

## はじめに
昨年の春先からFlutterを触り始めて、状態管理シリーズの記事や「Dart vs Swift」の翻訳を出してきたが、いつかFlutterで自作アプリを出したいとの思いが強くなり、今回のQiitaアプリに至りました。

####ダウンロード先
▼iOS
https://apps.apple.com/jp/app/open-qiita/id1590830106

▼Android
https://play.google.com/store/apps/details?id=com.jamestong.open_qiita

## Open Qiitaの技術要素
– 状態管理
グローバル状態、例えば記事本文の文字サイズ変更、テーマカラーの変更は**BLoC** + **Equatable**;
特定イベントの状態あるいは通知

元記事を表示

Inside Jetpack Compose

The English version is available here. (英語バージョンはこちら)
https://medium.com/@takahirom/inside-jetpack-compose-2e971675e55e

# なぜ内部を知るか?

Jetpack Composeってまるで魔法みたいですよね?
例えば、関数に返り値がなくてもレイアウトされたり、勝手に差分更新がうまく動いたりしますよね?

![compose.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27388/435f822e-9281-0440-ec78-80799e3544a0.gif)
https://developer.android.com/jetpack/compose?hl=en より

知りたいと思ったのは、どうやって動いているか分からないものを見ると中身を知りたくなるのが純粋な理由です。
しかし、これからJetpack ComposeがAndroid開発のデファクトスタンダードになっていくと思われ

元記事を表示

Cordova & React & TypeScript 環境構築&デバッグ手順 (2021年10月時点)

2021年10月時点で ** Cordova & React & TypeScript ** の環境作成とデバッグを行う手順です。

参考ページの手順は古くなっており、2021年10月時点では環境の問題でビルドができません。

ビルドが成功するまでにはかなりの試行錯誤が必要でしたので、後学のために手順をまとめています。

* Cordova環境作成 参考ページ

https://qiita.com/bathtimefish/items/113154e89650b351b5b7

https://qiita.com/hal_sk/items/cdc459fd639a736bccc3

## 目的

* Cordova+Reactでアプリを作成し、Android実機上でTypeScriptのデバッグを行う。

## 前提

* create-react-app を使い、ビルド、実行、パッケージの追加ができること
* Windows10

* Macは簡単にできるそうです。

## 作成したソース一式

https://github.com/murasuke/cordova

元記事を表示

【Android Studio】画像スピナー(プルダウン)作成

スピナーに画像をセットする処理。
作成するのに少々時間がかかったのでメモ。

# スピナーアイテムのレイアウト作成
各々の画像表示用のアイテム

“` item.xml

元記事を表示

Pepper SDK入門(34) GoToでターゲットと巡り合ってもらう

#はじめに
GoToでは、Pepeprをどこかに移動させることができます。トラジェクトリファイルを利用したAnimateとは異なり、障害物を回避して目標地点に到達するように柔軟に動いてくれるのが特徴です。
![k0120_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574697/1c9dd00d-5ac1-40e4-7441-9eb44c084dcc.png)
このようなアクロバティック回避は不可なので、乗り越えられる塩梅の試練を課してあげてください。

“`java
// ターゲットフレームを取得
Frame targetFrame = …;

// アクションをビルド
GoTo goTo = GoToBuilder.with(qiContext)
.withFrame(targetFrame)
.build();

// 同期でアクションを実行
goTo.run();
“`

#GoToの微に入

元記事を表示

Android 12βを正式版に更新する!

みなさん、初めまして!
Androidアプリ開発している「kano-ts」と言います。
今後、ちょいちょいAndroidネタをアップしていきますので、よろしくお願いします!

## さてと、

10/19(日本時間10/20)、ついにPixel系向けにAndroid 12が配信されはじめましたね!

早速、β版(Android ベータ プログラム)を正式版に更新します。

12へ更新できる端末たちはこちらです。

* Pixel 3
* Pixel 3 XL
* Pixel 3a
* Pixel 3a XL
* Pixel 4
* Pixel 4 XL
* Pixel 4a
* Pixel 4a (5G)
* Pixel 5
* Pixel 5a

## おや?更新できないぞ?

・OSの「システムアップデート」画面を開いてみましたが、更新画面にならないですね。

## 端末を再起動してみようっと。

・まだ更新できないな。

## Android ベータ プログラムのせいだろうか?

元記事を表示

DroidKaigi2021セッション資料まとめ

![スクリーンショット 2021-10-19 13.32.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188222/4a6f4d2d-a3b5-60f8-ea5e-dfbc4f67fb8a.png)
[DroidKaigi2021](https://droidkaigi.jp/2021/)登壇資料、スライドのまとめです。
Twitter等で見つけ次第掲載しますが、もし資料を見かけた方or資料を公開した登壇者の方がいらっしゃいましたら、コメント等でお声がけください。
スライドや資料のリンクが見つかった場合はタイトルにリンクをつけてありますので、タイトルがリンクになっていない場合はまだ資料が見つかっていないものになります。

# Day 1
## [プロダクトレベルで必要になる Jetpack Compose テクニック](https://speakerdeck.com/yanzm/purodakutoreberudebi-yao-ninaru-jetpack-compose-tekunituku)

元記事を表示

emacs hy-mode

Lisp の人の言質はだいたい典型的な特徴があり、自賛と懐古的な礼讚が7割入るので、9 割引で信用するとして、残りがよくわからないので、自分もそっちに λ ってみるしかない。

Android で 64bit アーキテクチャの Arm CPU で common Lisp ぽいことをやろうとすると今のところ唯一 hy だけ方法がわかる。アプリでは CL REPL (ecl)が動くが。

https://www.lights-of-holiness.eu/cl-repl/blog.htm

termux では 32bit だと ecl が動くらしいが、64bit ではエラーになった。他にも debian や ubuntu をセットして、そこへビルドする等、実践しているという情報はあるが、Lisp 側に変更点がなくともホスト側が日々変更があり今日どのようにするのか調べて実践するのには数日間かかる(数十日でも、わからないまま)。

https://github.com/termux/termux-packages/pull/7625

# hy lang

https://docs.

元記事を表示

React Native + Expoで(iOS,Android)開発環境を構築する

弊社のサービス[Hapitas](https://apps.apple.com/jp/app/%E3%83%8F%E3%83%94%E3%82%BF%E3%82%B9-hapitas-w%E3%81%A7%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E3%81%8C%E8%B2%AF%E3%81%BE%E3%82%8B/id1475444626)のアプリ版はReact Nativeを用いて開発されています。インターンとして開発に携わっているのですがで正直環境がどのように動いているのか全く理解していなかったので、勉強としてまずは開発環境を構築したので備忘録としてまとめます。30分ほどあれば作れます。

# React Nativetとは
React Native(リアクト・ネイテイヴ)は、Facebookが作成したオープンソースのモバイルアプリケーションフレームワークです。開発者がネイティブプラットフォーム機能とともにReactを使用できるようにすることで、Android、iOSアプリケーションを開発するために使用されています。Web開発で用いられるReac

元記事を表示

SesameSDKをFlutterから触ってみて 〜前編〜

まずは、公式セサミアプリでも基にされている[SesameSDKライブラリ](https://github.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp)を参考に調べて参ります。
`Gradle`というオープンソースのビルドシステムが使われている(Javaのjarファイル warファイルを作成してくれる)ので、インストールしてみます。言語は非常に`Java`に近いスクリプト言語である[Groovy](https://agency-star.co.jp/column/groovy) Javaと同じ感覚でスクリプトを書けます。

“`
$ curl -s https://get.sdkman.io | bash
“`
こちらを実行して、

“`
All done!

Please open a new terminal, or run the following in the existing one:

source “/Users/XXXX/.sdkman/bin/sdkman-init.sh”

Then issue th

元記事を表示

Android DIフレームワークのトレンドについて調査

Androidプロジェクトに新規参加することになり、
利用されているDependency Injection(以下、DI)について調査しました。

プロジェクトで使われているDIがなぜ選択されたのか、
他との比較をした上で良い点、悪い点も把握するため調査した内容になります。

# DIとは?
`依存性の注入`、`依存関係インジェクション` と表記されます。

“`
依存関係インジェクション(DI)はプログラミングで広く使用されている手法で、Android 開発にも適しています。
DI の原則に従うことで、優れたアプリ アーキテクチャの土台を築くことができます。

依存関係インジェクションを実装すると、次のようなメリットがもたらされます。

・コードを再利用できる
・リファクタリングが容易になる
・テストが容易になる
“`
引用:https://developer.android.com/training/dependency-injection?hl=ja

# Android DI フレームワーク一覧
* ★Dagger
* ★Hilt
* ★Koin
* Kodein
* K

元記事を表示

@IntDefについて

## 経緯
私はEnumクラスが大好きなのですが、この前初めてIntDefを触りました。
独自アノテーションに対して付与する・・・?
便利そうなので調べてみました。

## IntDef(StringDef)とは
端的に言うと、Androidにおいて**Enumより軽く、型安全に定数を使用できるようになるアノテーション**のことです。

Enumを使用した場合、1つのEunmにつき1.0~1.4 KB ほど増えることがあるそうです。
サイズの増加は可能な限り避けたいので、かなり有用な方法に思えます。([参考](https://developer.android.com/topic/performance/reduce-apk-size#remove-enums))

## 使ってみる
とりあえずEnumのサンプルを。細かい部分は目を瞑ってください。

“` Sample.java
public enum DayOfTheWeek {
SUNDAY,
MONDAY,
TUESDAY,
WEDNESD

元記事を表示

AndroidでEditText以外のタップでキーボードを閉じる

## EditText以外のタップでキーボードを閉じたい

プラットフォームに関係なく、よくある要件ですね!
色々調べたのですが下記のようにしたら大体のレイアウトでカバーできそうだなって思ったので共有します

### dispatchTouchEvent() を使う

`onTouchEvent()` を使う記事などが多くありますが、List系のレイアウトがあったりScrollViewが入ってると反応しないので `dispatchTouchEvent()` を使っておけばいいと思います。

あとは、スクロールのタッチアクションにも反応してしまうので、そこも対応が必要です。

タッチした箇所がEditTextだった場合は処理をしたくないので、タッチ領域がEditTextの表示領域かを判定する必要があります

“`kotlin
private var lastEventAction: Int? = null

override fun dispatchTouchEvent(event: MotionEvent?): Boolean {
// スクロール時のタップを無視させる

元記事を表示

【Android】漫画の台詞はタテだから縦書きTextViewを作ってみた

##背景
自分も@tome_uraさんや@Nonato_Noteさんみたいな素敵なIT系マンガ描きたい!
でも筆が遅い……
そうだ! イラスト素材と会話文をぺたぺた貼るだけの四コマ作成Androidアプリを開発して時短しよう!
あ、縦書きTextViewが無い……

##こんな縦書きTextViewが欲しい

レイアウトxmlに書いても使えるヤツ。
wrap_contentがいい。
普通のTextViewと同じパラメータ使いたいな。

“`xml
【書籍レビュー】基礎&応用力をしっかり育成! Androidアプリ開発の教科書 第2版 Java対応 なんちゃって開発者にならないための実践ハンズオン

#はじめに
今回はAndroidアプリ開発の参考書
『基礎&応用力をしっかり育成! Androidアプリ開発の教科書 第2版 Java対応 なんちゃって開発者にならないための実践ハンズオン』
をレビューしたいと思います。

![51kvMrmhNTL._SX394_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1925070/2f7791a4-c6b8-4ae8-b67d-190d0c7afa2f.jpeg)
開発環境は「Android Studio」で「Java版」と「Kotlin版」があります。(僕はJava版を使いました)
なぜこの参考書のレビューをしたのかというと、シンプルに**「めちゃくちゃ分かりやすかった」**からです。実は一度、別の参考書でAndroidアプリ開発の勉強をしたのですが、難しくて挫折しました。それから半年ほど経った頃、ふと書店

元記事を表示

Jetpack ComposeになってShapeがすごく簡単になった

Jetpack Composeになって、Viewの形状を変えるShape周りがすごく使いやすくなってました。
社内のLT会でした内容をQiitaにもまとめようと思います。

https://docs.google.com/presentation/d/1FbiOuWVctnXz1bvRXuSrexm7qX9muE8CKrvnE6hvUv4/edit#slide=id.p

https://github.com/yasukotelin/JetpackComposeCustomShapeSamples

## 今までのAndroid Viewでは

例えばこういう形状のタグ的なものを作ろうと思ったとき、shapeのxmlリソースを用意してbackgroundに当てる必要がありました。

![unnamed.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166629/485e6317-9738-ffd5-1ba3-4a73f27c207c.png)

“`shape_tag_background.xml
<

元記事を表示

OTHERカテゴリの最新記事