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

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

@IntDefについて

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

## IntDef(StringDef)とは
端的に言うと、**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,
WEDNESDAY,
THURS

元記事を表示

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

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

##今回の完成像