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

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

本当にリリースできるの?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
<

元記事を表示

【Android】自動生成されるNavigation barの背景やラベルのcolorの変え方

android studio: 4.2.2
sdk version: 30

# 変更前

自動生成で以下のようなNavigation barが作成されます。
色合いが微妙なのでこれを変えていきます。

![Screenshot_2021-10-17-17-43-22-23_ba25f4753e85d4aec26bd28a3969eaa8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574173/d56a9287-6b63-dc6b-06a4-76ae5faedc22.png)

## Navigation barを設定している場所

このnavigation自体は以下のpathで記述されています。
app/src/main/res/navigation/nav_graph.xml

そしてfragemntごとの記述を見ると以下のようになっています

“`java

元記事を表示

Custom View で自身のサイズを元にサイズ変更を行う方法

# ◆はじめに
Android の custom view にて、自身のサイズ変更を元に自身のサイズが変わる処理を行い、計算をすべて親クラスに丸投げするケースのメモです。

# ◆ダメな例その1

“`kotlin
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
// super.onMeasure() が呼ばれてないので、サイズ計算ができておらず、目的の処理が行えない。
doSomethingWithSizeModification()

super.onMeasure(widthMeasureSpec, heightMeasureSpec)
}
“`

# ◆ダメな例その2

“`kotlin
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
// super.onMeasure() により、現状のサイズが計算される。
super.onMeasure

元記事を表示

Custom View にデフォルトの属性群を指定する方法

# ◆はじめに

特定の custom view すべてに適用されるデフォルトの属性値を指定する方法のメモです。

# ◆具体的なケース

例えば `MyTextView` という custom view を作った際に、以下のようにデフォルトのスタイルを毎回差し込む必要があるとします。

“`xml

“`

この場合、custom view の恩恵が薄くなってしまうし、style の設定し忘れをコンパイル時に検出できなかったりして、とっても残念な感じです。

ということで、デフォルト属性を指定したいよねという話です。

※ちなみに、カスタムの属性を指定する方法は簡単で、attrs.xml に属性を定義して、custom view 側のコンストラクタ

元記事を表示

ZOZOのアプリのUIを再現しようの会 【お気に入りタブ編】その2

##前回の記事
https://qiita.com/nemo-855/items/3707e095c000f89ddb62

##はじめに
お気に入り画面のアイテムタブを作りました!そこ周りの実装について書いていきます!時系列的には先に新着タブを作っているのですが、先にこちらを記事にしました!

##今回の完成像