Android関連のことを調べてみた2020年07月24日

Android関連のことを調べてみた2020年07月24日
目次

Jetpack Navigationで最初のフラグメントでも戻るための左矢印を表示する

メイン画面から設定画面が呼ばれるアプリがあります。すべての画面をJetpack Navigationで作っていたのですが、理由あってJetpack Navigationの適用範囲を設定画面のみにしました。
そうなるとJetpack Navigation上でトップとなる画面でも、前の画面に戻るための左矢印を表示したくなります。

![device-2020-07-24-060057.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/334798/f336c68d-c0c5-03ac-bff0-f2b3c8ce5f2c.gif)

現状のツールバー左矢印表示のためのコードはこのようになっています。
Jetpack Navigationのバージョンは2.3.0です。

“`SettingActivity.kt
class SettingActivity : AppCompatActivity() {

private lateinit var appBarConfiguration: AppBar

元記事を表示

[Android]AndroidX Preference Library を使って設定画面を作成する

# はじめに

Android では Preference Library を使うことで簡単に設定画面を作ることができるようになっています。今回は Preference Library をどのように使えるのか簡単にまとめたいと思います。

Image from Gyazo

# インストール

Preference Library を build.gradle(app) の依存関係に追加します。追加しなくてもコード補完候補にクラス名称が出てくることがありますが古いライブラリが参照されて上手く動作しないので依存関係は追加したほうが良いです。

“`groovy
dependencies {
def preference_version = “1.1.1”
impleme

元記事を表示

AndroidのマルチモジュールでGithub Actionsを使ってLintの結果をPRのコメントに表示する方法

# はじめに
はじめまして。どすこいです。
Qiita初投稿ですので、わかりにくい部分や間違っていることがあればコメントでご指摘ください。

今回、紹介するのはAndroidのマルチモジュールプロジェクトでGithub Actionsを使ってLintチェックをし、その結果をプルリクエストのコメントに表示していく方法です

個人的につまづくところがあったのでメモとして残しておきたく、投稿しました。

# 本記事で説明しないこと
シングルモジュールでのLintチェック。およびPRのコメント表示
Github Actionsの使い方(こちらに関してはまた今度記事にしたいと思います)

# 環境
まずローカルで試したいので
Rubyをインストールします。
なぜRuby?となると思いますが、後々わかります。

その後、
“gem install nokogiri
gem install danger
gem install danger-android_lint

を実行してください。
nokogiriはLintファイルをまとめるためです。

Bundlerで管理しろよ!と思う方もいると

元記事を表示

ViewPager2で端までスクロールしたときのエフェクト(overScrollMode)を消す

横スワイプで画面を切り替えて新機能を呼び出せるように[ViewPager2](https://developer.android.com/reference/androidx/viewpager2/widget/ViewPager2)を導入しようと思いますが、まずは過渡期実装として1ページだけ含むViewPager2を設置しました。そうなると端までスクロールしてもう先がないことを表す光が漏れ出すようなエフェクトをいったん無効化したいです。

![device-2020-07-23-034158.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/334798/9ad44d8a-04b4-c1b5-e434-375b28c990fe.gif)

ViewPagerでは `android:overScrollMode=”never”` を設定するだけでエフェクトを消せます。

“`xml:activity_pager.xml

元記事を表示

【Android】またversionCodeインクリメントし忘れた!【Play Store】

# 背景
**ぼく**「Google Play Consoleにapkファイルアップロードしたぞー!(versionCode: 3)」
**ぼく**「あっ!修正しわすれてる!修正して、と。」
**ぼく**「expoのビルドだとBuild queue消化まで長いんだよな・・・また数十分待ちだよ」
**ぼく**「やっとビルドできた!アップロードだ!(versionCode: 3)

**GooglePlayConsole**「既にversionCode:3はライブラリにアップロードされて・・・」

**ぼく**「ま、また数十分待たされるのー!?」

# Tips
それ、**アーティファクト ライブラリ**から削除できます!![artifact-lib.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103475/be686b0e-42ea-7ab9-477a-294fe50840cf.png)

1. リリース管理 > アーティファクトライブラリ
2. 対象のバージョンコードのゴミ箱ボタン > 押下 => 削

元記事を表示

【Flutter】Firebase を使って SNS っぽいアプリを作るために学んだこと

趣味の魚捌きの延長で、魚を捌くのが好きな人のための SNS アプリ、 “Sengyo” を作ってリリースしました。

__iOS__
https://apps.apple.com/us/app/id1523325680

__Android__
https://play.google.com/store/apps/details?id=com.tsuyoshichujo.sengyoproduct

Firebase を始めとした今まで雰囲気で使っていた技術の勉強や OS の新機能などの実験台として何かひとつ具体的なアプリがあると良いな、というモチベーションで作ったこのアプリですが、ひとまずアプリとして最低限形になったので、まずはこのアプリを作るために Firebase の使い方で学んだことを振り返ってみたいと思います。

なお、この記事では __どのようなページを見てどのような情報を得ながらアプリを作ったか__ という内容が中心で、「こうプログラムを書けばこう動く」というような具体的なところまでは書いていません。

「同じようなアプリを作ってみたいけど、何をどう調べてどう作り始めたら

元記事を表示

【Flutterの状態管理】テーマ切替&多言語化 〜provider,BLoC,reduxの三つで実現してみる①

Flutterの状態管理に関する記事の中、カウンター(Counter)を弄るのは多いと思いますが、カウンターの例では少し煩雑だと感じます。

本シリーズではアプリのテーマ(Theme)切替、多言語化を通じて、provider,BLoC,redux三つの実現方式でFlutterの状態管理を説明します。

##一、providerでテーマ切替&国際化
>provider: ^4.3.1  (providerパッケージをpub.devから取得)

###1.テーマ切替
ハンバーガーメニューにあるテーマ色ボタンの押下により、グローバルにテーマ色を切替える。
color1.pngcolor2.png【Android 9.0 Pie Java】RecyclerViewの余白部分にsetOnTouchListenerを実装してソフトキーボードを閉じる

## 初めに
リスト表示に便利なRecyclerViewですが、デフォルトのままだと余白部分をタッチした際にイベントを発火させることができません。
RecyclerViewの余白部分をタッチしてソフトキーボードを閉じる為に実装を模索したので共有したいと思います。

![32aeddc0c59703301a8fc30cf57374b6.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285286/de7d7e98-d362-4cbd-5a27-140c68235beb.gif)

## 実装方法
まずRecyclerViewに

“`
android:touchscreenBlocksFocus=”true”
“`

を追記します。

“`xml:fragment.xml

元記事を表示

ViewModel考察

# 本記事を書く経緯

ViewModelをよくこんな感じに使っていましたが

“`kotlin
class MainActivity : AppCompatActivity() {
private val viewModel: MainViewModel by viewModels()

override fun onCreate(savedInstanceState: Bundle?) {

}
}
“`

これはある程度の「魔術」だと思って、`viewModels`の中で何をやっているのか、なんでActivityのライフサイクルを超えて生存できるのかを気にしていませんでしたが、Activity間で同じViewModelを共有したい要件に出会ったので、本格的にViewModel周りを調査してみました。

# ViewModelの生成

まずAndroid KTXを使わないでViewModelを利用する原始的な書き方を見てみます。

“`kotlin
class MainActivity : AppCompatActivity()

元記事を表示

大学生が1週間でFlutterアプリを学んでリリースした過程(5日目)

こんにちはシオンです。

昨日デザインがやっと決まり、コードを書き始めたところまで行きました。
ここまで来ればあとはコードを勉強しながら決めたデザインのものを形にしていくだけです。
残す課題は時間だけ、期限までに終わらせるというのが今回のチャレンジで一番大事になってくるのでここまできたら何がなんでも間に合わせます。

プログラミングの進捗としては昨日FlutterでHelloWorldと表示することに成功しました。このプログラミングを学ぶ人が絶対に最初に通るLv1の状態から今日あすの2日でコードを書き切って、ラスト1日でリリースしてみせます。

少し話は変わりますが、qiitaではこういう投稿はあまり良くないようですね。
qiitaについて深く理解せずブログのような投稿をしてしまいました。この一連の投稿が終わったら改めたいと思います。

ではやっていきます。

# ■まず画面をデザイン通りに構成する

コードを書き切ると言っても、本当にFlutterに対して無知なので闇雲に書いて行っても終わりが見えてきそうにないです。

ちなみにどのくらい無知なのかというと
現在私が持っているF

元記事を表示

React Nativeのrun-androidはデバイスIDの有無で実行されるタスクが違う

# はじめに

React Nativeのrun-androidコマンドはPCに接続したAndroid端末すべてにapkをインストールします。
一方で`–deviceId`でデバイスIDを指定すると特定のAndroid端末だけにapkをインストールできます。
ですがデバイスID指定ありとなしでは実行されるGradleタスクに違いがあったので調べた結果をまとめました。

# バージョン

– @react-native-community/cli-platform-android: 4.9.0

# 実行されるタスクの調査方法

`react-native` コマンドの `–verbose` オプションを指定すると実行されるコマンドが分かるのでこれで確認します。

## デバイスIDを指定しない場合

“`
$ react-native run-android –verbose
info Running jetifier to migrate libraries to AndroidX. You can disable it using “–no-jetifier” flag.

元記事を表示

AndroidのWebViewでハマったポイントまとめ

# 当記事について

WebViewは厄介な存在だと思います。
無数にあるWebページがちゃんと表示されるかが怪しいと感じる今日この頃。
あとはWebViewに限った話ではないですが、OSバージョンや端末によって起きたり起きなかったりするバグ。
当記事では、WebViewの実装で個人的にハマったポイントを随時更新していきます。

## Android 6.0にて、動画コンテンツのあるURLを表示しようとするとクラッシュする

### 事象

Android 6.0にて、動画コンテンツのあるURLを表示しようとすると、以下のようにクラッシュします。

“`
07-21 22:35:26.674 4770-4770/com.example.samplewebviewapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.samplewebviewapp, PID: 4770
java.lang.NullPointerException: Attempt to invoke virtual metho

元記事を表示

【Android/Kotlin】sqliteを使う基本

#やりたいこと
 今回はデータベースを作ったり、クエリを送るメソッドを紹介します。

###openOrCreateDatabase
 引数にDB名、動作モード(0かPrivate)、カーソルをインスタンス化させるファクトリクラスを渡すことで、それらに則ったDBが作られる。以下の例では、sqlite-test-1というデータベースを作っています。データーベースは`data/data/パッケージ名/database`というディレクトリに作られ、ターミナルから操作することも可能。

“`
val database = baseContext.openOrCreateDatabase(“sqlite-test-1.db”, Context.MODE_PRIVATE, null) //databaseはsqlite-test-1.dbというDBが定義された
“`

###クエリをDBに送る

execSQL メソッドを使えば、簡単にクエリを送ることが出来る。しかし、全てのクエリをexecSQL で送れるという訳ではなく、SELECT / INSERT / UPDATE / DELETE対し

元記事を表示

Exposed Dropdown Menu を使ってみる

# はじめに
本稿は Material Design の [Exposed dropdown menu](https://material.io/components/menus#exposed-dropdown-menu) の初期設定から実装までのメモ書きです。

※ Android アプリに [Exposed dropdown menu](https://material.io/components/menus#exposed-dropdown-menu) を組み込むための最低限の情報が一通り含まれています。

## ◆ Exposed dropdown menu とは?

Material Design で [Exposed dropdown menu](https://material.io/components/menus#exposed-dropdown-menu) と定義されているもので、選択されているアイテムがメニュー上に表示されるメニューです。

Filled exposed dropdown menu と Outlined exposed dropdown menu

元記事を表示

大学生が1週間でFlutterアプリを学んでリリースした過程(4日目)

こんにちはシオンです。

きてしまいましたか、これを書く時間が。。
今日、目が覚めて布団で寝返りを打った時からずっとこれを書く時間が来るのが憂鬱でした。
なぜデザインを終わらせなかったんだ、昨日の自分。
ツケはこのチャレンジが終わった時にしっかりと払ってもらうからな。(焼肉いきます。)

#■目次
#####■今日こそデザインを決める
#####■いよいよプログラミング
#####■プログラミングを学ぶ
#####■まとめ

#■今日こそデザインを決める

今日こそデザインを決めるというか、さっさと決めてコードを書き始めないと終わりません。
だってデザインが終わったらコードを書くための勉強をしてそれからコードを書かなきゃいけないんだから。

昨日の進捗はこれです。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676265/5ce29a9b-996f-15a1-0440-b973fa445b6c.png)

全然進んでいませんね。
うんうん悩んでいてもあまり進まないことがわかったので、一旦

元記事を表示

Androidで始める機械学習(TensorFlow Lite, ML Kit)

みなさんAndroidで機械学習やってますか?
[Android 11 Meetups(GDG)](https://developersonair.withgoogle.com/events/a11meetups-jp)に参加し、私はつい最近入門しました。

Android 11 Meetupsで学んだ内容と、自分で調べた内容を元に、Androidでの機械学習を使った機能を実装するにはどうすればいいか、まとめてみました。

# クライアント側で機械学習

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96747/530aa70a-5855-8e34-6771-d34bfb6e553c.png)

まずそもそもですが、図のようにサーバ側で推論や学習を行うか、クライアントで推論や学習[^1]を行うかの違いで、それぞれ特徴があり、要件を考慮して決める必要があります。他にもいろいろあると思いますが、以下のようなことが考えられるでしょう。

– クライアント
– リアルタイムに処理したい

元記事を表示

【Android/Kotlin】検索UIの追加

#やりたいこと
 MainActivityからアプリバーの検索ボタンを押すと、検索するためのアクティビティを開始し、検索用のUIが起動します。データのやり取りについては記事が長くなるので別で書こうと思います。
![gif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/658219/e34a9979-3647-234e-4740-a06de7b8436d.gif)
#menuを作成
 検索機能を作るための一つ目の作業として、メニューの機能から、MainActivityに表示する検索ボタンを追加する作業を行います。resフォルダにあるmenuフォルダに、メニューリソースファイルを追加しましょう。そして、menuにMenuItemを追加します。MenuItemは様々なAttributeをいじることが出来ますが、今回は`icon`と`showAsAction`を設定します。iconは`@android:drawable/ic_menu_search`を、`showAsAction`は`ifRoom`を選択しまし

元記事を表示

Custom View 探求記(TextView 継承編 その4)

# 前回のあらすじ
前回は、custom view に状態保存の仕組みを追加しました。

# 今回の課題
今回は、Data Binding をサポートしようと思います。

# 実装1

## ◆ build.gradle
`viewModels()` を使いたかったので追加。

“`
android {
kotlinOptions {
jvmTarget = ‘1.8’
}
}

dependencies {
def activity_version = “1.1.0”
implementation “androidx.activity:activity-ktx:$activity_version”
}
“`

## ◆ レイアウトファイル

“`xml:layout

元記事を表示

大学生が1週間でFlutterアプリを学んでリリースした過程(3日目)

こんばんはシオンです。

一週間でアプリをリリースすると決めてから3日目。
昨日今後の予定を立てて、あとは前に進むだけです。残りの工程としては、デザイン(今日)、プログラミング(4〜6日目)、リリース(7日目)。

今日は予定通りAdobeXDを使ってデザインを完成させます。さっそくやっていきましょう。

# 目次

##### ■アプリのデザインを完成させる
##### ■デザインを作る
##### ■まとめ

#■アプリのデザインを完成させる

まずは、AdobeXDを開きます。
デザインを作っていく上で、軸にするデバイス(iphone〜とかのやつ)ですが今回はiphone8で作っていきます。理由は今使われているデバイスの中で一番小さいからです。(昔のiphoneSEとかは考えません!)

ちなみに立ち上げた瞬間はこんな感じ。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676265/583c6bd5-1e96-3a39-b6c9-4f065a0745d5.png)

さて、デザイン

元記事を表示

Custom View 探求記(TextView 継承編 その3)

# 前回のあらずじ
前回は、custom view の情報をレイアウトファイルから設定できるようにし、その振る舞いをレイアウトエディタ上から確認しました。

# 前回の不満点
– 画面回転などにより値がリセットされてしまう。

# 今回の課題
– custom view に状態保存機能を実装する。

# 関連する関数
– [protected open fun onSaveInstanceState(): Parcelable?](https://developer.android.com/reference/kotlin/android/view/View#onsaveinstancestate)
– 内部状態表現を生成する
– [protected open fun onRestoreInstanceState(state: Parcelable!): Unit](https://developer.android.com/reference/kotlin/android/view/View#onrestoreinstancestate)
– [onSaveInst

元記事を表示

OTHERカテゴリの最新記事