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

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

ConstraintLayout入門その1 – RelativeLayoutとの違い

## ConstraintLayoutを使う理由

2016年からAndroidサポートライブラリによって提供されているConstraintLayoutは、非常に細かい制約の記述を用いた複雑なレイアウトを可能にします。FrameLayoutやLinearLayoutとの違いは、子Viewに対して親Layoutとの関係だけでなく、複数の子View同士の関係を記述することで細かく位置取りを制御できる点です。

しかし、そのようなレイアウトなら昔からRelativeLayoutで提供されています。にもかかわらずConstraintLayoutが新たに開発された理由はいくつかありますが、まずはConstraintLayout入門の手始めに、RelativeLayoutではサポートされていなかったレイアウトXMLの書き方を端的に示す例を紹介します。本稿を読んだ後、ConstraintLayoutは複雑すぎて敬遠していたけど使う気になった、という開発者が1人でも増えれば幸いです。

## 表示結果

今回はRelativeLayoutとConstraintLayoutの違いを示すために、両者を上下

元記事を表示

FlutterFragmentを設置したらToolbarがStatus barにめり込んだ。対処法を解説。

Androidネイティブなアプリの一部機能をFlutterで開発するために、FlutterFragmentを設置しました。そうしたらAndroidネイティブなToolbarがStatus Barにめり込んでしまいました。

# 解決方法

レイアウトファイルに `android:fitsSystemWindows=”true”` 属性を設定すればめり込まなくなります。

“`activity_pager.xml

元記事を表示

ViewPager2のFragmentのtag名はf0, f1, f2

ActivityからFragmentのメソッドを呼びたいときは、[FragmentManager](https://developer.android.com/reference/androidx/fragment/app/FragmentManager)クラスの[findFragmentById](https://developer.android.com/reference/androidx/fragment/app/FragmentManager#findFragmentById(int))メソッドまたは[findFragmentByTag](https://developer.android.com/reference/androidx/fragment/app/FragmentManager?hl=ja#findFragmentByTag(java.lang.String))メソッドを使ってFragmentの参照を取得してメソッドを呼び出すことが公式で案内されています。

[アクティビティと通信する](https://developer.android.com/guide/c

元記事を表示

オレトラストネットワークでちゃっちゃとファイル共有

家にファイルサーバーってあります?動かしたいけどねえ・・って事無いですか??

– **電気代とか置き場所**とかの理由で外付けUSB使ってる
– SaaSのファイルサービスはどうしても**容量課金や通信パケ代**が気になる

本来、ファイルサーバーで最重要であるべきセキュリティ要件よりも、
もっと他の理由で使ってなかったりしませんか?
でも家庭ネットは信頼してますよね?だから、もっとこう、サクっと共有してえなあ。

#

### そういう人向けにAirDopあるやん

はい。でもあれってベンダーロックされてる感がないすか?
対応してないマイコンだの機器があるとやっぱファイルサーバーあればなーって思う。
OSSが頑張って実装してる例もあるけど対応機器がどんどん増えてく気はしないし。

### 我々は殆どの機器がしゃべれるプロトコルを知ってるはず、そうHTTP!

有線、無線関係なく、IPがあれば準備OK。それがHTTPの破壊力のスゴさ。
HTTPベースで超簡単にファイル共有!
~~車輪の再発明感ありますが、~~**UXサイドに倒した

元記事を表示

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

こんにちはシオンです。

今日で6日目、残すところあと2日となりました。
計画通りに行けば、コードをかけるのは今日が最後の日です。現状としては5画面あるうちの2画面の画面構成まで、処理はひとつもかいていなく、また書き方もわからないため、進捗率としては5%…よくて8%ほどでしょうか。

やばいですね。でも期限はもう決まってしまっているのでやり切りましょう。途中までで終わらないよりも、終わらせる。今回は60点でもいいから終わらせることが大事なのです。

では、時間がないので(本当に!)やっていきます。

#目次
#####■実装する処理の確認
#####■画面遷移を学ぶ
#####■残りの画面を作って画面遷移のルートを繋ぐ
#####■まとめ

#■実装する処理の確認

昨日3画面の実装をしてFlutterでの画面の配置に関してはなんとなくわかってきました。
残り3画面は処理を実装するのと同時にプログラミングしていきます。
今回実装する残りの処理としては
**・画面遷移**
**・入力した文字を読み取って表示**
**・カウントアップ**
この3つです。

実装するためにはど

元記事を表示

Groupieでclickイベントを実装する

Groupieでのレンダリングは前に実装したんですが, Groupieでレンダリングしたリストに対してClickListenerをつけていきたいと思います.
github:

[https://github.com/WallyNegima/android_practice:embed:cite]

## interfaceとAdapterを用意する

クリック時の振る舞いはinterfaceとしてAdapterに渡してあげます.
adapterは受け取ったinterfaceをListのそれぞれのItemに更に渡してあげる感じです.

用意するinterfaceはこんな感じです. 今回はMainActivityの中に作りました

“`
interface MainListItemClickListener {
fun onItemClick(
itemId: String
)
}
“`

adapterはGroupAdapterを継承します.
この時, GroupieでレンダリングするItemにlistenerを渡してあ

元記事を表示

【Android】遅延処理・非同期処理を使って時間差でViewに反映させる

#Handler(遅延処理)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/566570/ff283bfb-45cf-0193-fdab-ec4ba4525490.png)

3つのTextViewに1秒ずつテキストをセットしてみます。

“`java:MainActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
private Handler handler = new Handler();

@Override
protected void onCreate(

元記事を表示

機種変更をするときに気をつけるべきこと

機種変更したときに,失敗したな..っと思ったことがあったため,次変更するときの備忘録として残しておきます.そんな高性能でなくても低スペックでもいいよ..って思っていたのですが,実際に普段使っている機能がなかったときにものすごく不便に感じたため,押さえておくべき機能を列挙しておきます.当たり前が当たり前じゃなかったんやな..

## 生体認証が付いているかどうか
### 携帯の解錠
今や,携帯にロックをかけるのが当たり前になってきいますが,番号やパターンを入力するのは面倒.そこで,生体認証ですぐに携帯のロックを解除することができます.
– 指紋認証
– 顔認証
実用化されている認証方式はこの2つ.特に指紋認証は便利.マスクをつけていても,暗い場所にいても安定的に認証することが可能です.

### パスワード管理アプリ
また,パスワード管理アプリの認証のマスターパスワードとして,生体認証に置き換えることができます.今やさまざまなサイトやアプリで会員IDとパスワードの設定が行われており,パスワード管理アプリを使われている方も多いかと思います.そのマスターパスワードをいちいち入力するのは面倒な

元記事を表示

android firebase Auth email&passwordでログインする処理memo

#onCreateメソッド内でFirebaseAuthのインスタンスを取得しておきます

“`kotlin:LoginActivity.kt
class LoginActivity : AppCompatActivity() {

companion object {
private const val RC_SIGN_IN = 120
}

private lateinit var loginViewModel: LoginViewModel
private lateinit var mAuth: FirebaseAuth
private lateinit var googleSignInClient: GoogleSignInClient

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

//onCreateメソッド内でFirebaseAut

元記事を表示

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.

元記事を表示

OTHERカテゴリの最新記事