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

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

kotlinとjavaでリストを作りたい!

# はじめに…

この記事は[2個前の記事](https://qiita.com/sato-na/items/cc23f9b1db9c948dc00e)で書いた、

**7日間毎日記事投稿の3日目**

になってます

使うコードは下に貼りますが、このアプリの詳しい機能はその2個前の記事をご覧ください!

– java版 : https://github.com/sato-na/guruwake_java

– kotlin版 : https://github.com/sato-na/guruwake_kotlin

↓ここからが今回の記事の本題です↓

# それぞれの言語でリストを扱うには…

— 目次 —

1. Arraylistの作り方

2. 要素を追加・削除する方法

3. 要素数を取得する方法

4. リストの中身を逆順・シャッフルする方法

5. 中身を違うリストにコピーする方法

## ArrayListの作り方

– javaの場合

“`java
ArrayList<要素の型>変数名 = new ArrayList<>();
“`

例)

“`java

元記事を表示

ask me! appのログイン画面の実装

#1 この記事の内容

ask me! appでのログイン画面の実装方法について記載します。画面レイアウトは下記のとおりです。

![quitta①+.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/681104/a12634d1-d61e-627d-f6a0-1a79eb294dd6.jpeg)

#2 ソースコード概要

ソースコードの概要は下記の通りです。

“`dart:login.dart

@override
Widget build(BuildContext context) {
return
new GestureDetector(
onTap:()
{
_focusNodePwd.unfocus();
},
child:

new Scaffold(
appBar: new AppBar(
centerTitle: true,

tit

元記事を表示

【Flutter, Dart】ミュータブルとイミュータブル、そしてfreezed

# はじめに
本記事は [The Mutability Tax](https://medium.com/@davidmorgan_14314/the-mutability-tax-6403d84f21c0) をベースにしています。
意訳・抜粋しまくったので翻訳記事と呼ぶには忍びないですが、記述の足らない箇所があれば元の記事を参照してください。
筆者の David Morgan 氏はGoogleのソフトウェアエンジニアです。

元記事の公開は2019年7月15日です。
本文中に登場するコードは `Dart` で記述されています。

## 3点要点
1. Mutableはダメです
2. Immutableも正しく扱わないとデメリ

元記事を表示

ボードゲーム「カタン」の得点を計算するAndroidアプリを作ってみた。

# カタンとは
([Wikipedia](https://ja.wikipedia.org/wiki/カタンの開拓者たち))
>『カタンの開拓者たち』(カタンのかいたくしゃたち、Die Siedler von Catan)、または『カタン』は、ドイツで生まれたボードゲームである。1995年にコスモス社から販売された。
大航海時代に発見された無人島を複数の入植者たちが開拓していき、もっとも繁栄したプレイヤーが勝利するという内容のボードゲーム。

![DSC_1005.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/566051/0dbf8abd-eaef-5e9e-7738-ec54f75eba23.jpeg)

# なぜアプリを作ろうと思ったか

###複雑な得点計算ルール
カタンはいろいろなルールがある、けっこう複雑なボードゲームです。
複雑な点の1つに、その得点計算ルールがあげられます。

– 「都市」を作ると2点
– 「開拓地」を作ると1点
– 連続した5本以上の「街道」を作成し

元記事を表示

Kotlin Coroutineにおける実行スレッドの選択について

# Dispatchers

Kotlinでコルーチンを使用する際、`Dispatchers`によってどのスレッドで実行するかを選択することができます。

“`kotlin

GlobalScope.launch(Dispatchers.Main) {
// 何かしらの処理
}
“`

`Dispatchers.Main`は、コルーチンの実行スレッドを表しています。
主な種別は以下の通りです。

| 種別 | 説明 |
|:———–|:————|
| Defalut | バックグラウンドスレッド。リストの並び替えやJSONのパースなどのCPUに負荷がかかる処理向け。 |
| IO | バックグラウンドスレッド。データベース処理やファイルの読み書きおよびネットワーク処理といった入出力処理向け。 |
| Main | メインスレッド。他の`Dispatchers`での処理終了後に結果をUIに反映したり、`delay`関数でnミリ秒後にUIを表示させるなどのUI処理用。|

# withContext

コルーチンの中で実行スレッドを切り替えるには

元記事を表示

【Flutter/ Dart】flutter build apk –release で生成した.apkをインストール&起動すると直後に動作を停止してしまう現象への対応

## 概要

デバッグビルド`flutter build apk –debug`で生成した.apkは正常に動作するのに、リリースビルド`flutter build apk –release`で生成した.apkは起動直後にクラッシュしてしまう現象にしばらくの間悩まされていました。
一つ解決策を見つけたので、備忘と共有のために記します。

## 解決策

`android/app/build.gradle`に以下の設定を追加することで解消できました。

“`.gradle:build.gradle
buildTypes {
release {
// …
shrinkResources false // 追加
minifyEnabled false // 追加
}
}
“`

`shrinkResources`はリソースの圧縮で、`minifyEnabled`はR8によるコードの圧縮(実行の際に不要と判断したコードを削除するプロセス)のことです。それぞれを無効にすることで解決しました。

## 原因(と思われるもの)
R8によるコ

元記事を表示

[Android] Realmのデータ引っこ抜き

デザイナーなのにエンジニアさんが逃げちゃったのでエンジニアしてるし,せっかくなのでQitta書いてみた

## 環境
Mac Catalina 10.15.4
Android Studio 4.0.1

## 前提
adbコマンド打てない方は打てるようにしてください.
良い記事いっぱいあります.

## 方法 adbコマンド編

かなり面倒な構造になっているけどadbコマンドで直接コピーしたらpermissionなんとかっていうエラーでコピーできない仕様になってるみたいで、一度端末のsdcardに保存してからDesktopに保存してます

“`
$ adb shell
“`

“`
$ run-as “`

“`
sdcard/Download配下にrealmファイルをコピーしているよ
$ cp files/default.realm /sdcard/Download
“`

“`
Desktopに保存しているよ
$ adb pull /sdcard/Download/default.realm /Users//Desk

元記事を表示

Androidエミュレータで指紋認証を実行する方法

F1(Mac の場合は Command+/)キーを押してExtended controlsウィンドウを開きます。
![Screenshot from 2020-08-17 10-57-52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/658122/813459f1-4358-9272-e2a4-8852395231a3.png)

メニュー内の「Fingerprint」から指紋認証をエミュレータ上で実行することが出来ます。

## 指紋データの登録

設定→セキュリティ→指紋登録画面を開きます。

TOUCH THE SENSORをクリックしてFinger1の指紋を登録します。

## 指紋認証を実行する

あとは指紋認証を使用したいときに、事

元記事を表示

Android Architecture ComponentのLiveDataの使い方

#はじめに
今回はAndroid Architecture Component(以下AAC)にあるLiveDataに関する説明をしていきます。
とっても便利なものなので覚えておいて損はないです。

EditTextに入力した値をTextViewにそのまま表示させるアプリを作りながら説明していきます。

#今回説明しないこと
AACの説明
BindingAdapter等の説明
ViewModelのこと

#環境
appレベルのbuild.gradleに以下の記述をしてください。

“`gradle:build.gradle
def lifecycle_version = “2.2.0”
implementation “androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version”
implementation “androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version”
implementation “androidx.fragment:fragment-kt

元記事を表示

Android Architecture Blueprintsでクラス図を描きながらMVPを学ぶ

# Android Architecture BlueprintsでMVPを学ぶ
## 初めに
Androidのアーキテクチャについて学びたいと思っていた時に、調べたところ「Android Architecture Blueprints」が良いとあったので、クラス図を書きながらアーキテクチャについて学んでみます。

プロジェクト見てもいまいちつかめない方は、[PEAKS(ピークス)|Android アプリ設計パターン入門](https://peaks.cc/books/architecture_patterns)を見るとより分かりやすいと思います。
MVPとMVVMについて解説があります。
Android開発が初めての方にはおすすめです。

## Android Architecture Blueprintsとは
Googleが公開しているAndroidアプリ(TODOアプリ)を様々なアーキテクチャで実装したプロジェクト。
アーキテクチャごとにブランチが異なり、MVPやMVVM、Clearn Architectureなど同じTODOアプリが別のアーキテクチャで書かれていて比較したら面

元記事を表示

kotlinとjavaの基礎をまとめてみた

# はじめに…

この記事は[1個前の記事](https://qiita.com/sato-na/items/cc23f9b1db9c948dc00e)で書いた、

**7日間毎日記事投稿の2日目**

になってます

使うコードは下に貼りますが、このアプリの詳しい機能はその1個前の記事をご覧ください!

– java版 : https://github.com/sato-na/guruwake_java

– kotlin版 : https://github.com/sato-na/guruwake_kotlin

↓ここからが今回の記事の本題です↓

# それぞれの言語の基礎を比べると…

— 目次 —

1. 変数定義の方法

2. if文の書き方

3. for文の書き方

4. String→Intにする方法

## 変数定義の方法

– javaの場合

“`java
型 変数名 = 初期値;
“`

型の指定が必要

例)

“`java:ResultActivty.java
String rTxt = “”; // 31行目
in

元記事を表示

Jetpack ComposeのConstraintLayoutなどがどのようにModifierクラスだけで様々なレイアウトを処理するか

こんなKotlin DSLの使い方あるんだと思って知らなかったのでメモしておきます。

Jetpack ComposeのConstraintLayoutは現状では、以下のように書きます。

https://android-review.googlesource.com/c/platform/frameworks/support/+/1321040/8/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/ConstraintLayoutDemo.kt より

“`kotlin
ConstraintLayout {
val (text1, text2, text3) = createRefs()

Text(“Text1”, Modifier.constrainAs(text1) {
start.linkTo(text2.end, margin = 20.dp)
})
Text(“

元記事を表示

Flutterでローカルな通知機能を実装するためのOSごとの前設定

## 前置き
とあるアラートアプリを作成していて、ローカルでの通知機能を実装する必要が出てきました。

通知機能に関する日本語記事が何故か少ないような気がしますが、Flutter内でやることについては[この英文記事](https://itnext.io/local-notifications-in-flutter-6136235e1b51)を追っていけば問題なく進められると思います。しかし、前提として`flutter_local_notifications`というパッケージを使うために、OSごとの固有の設定が必要になるのでそれについてまとめておきます。ですので、この記事の内容は概ね[flutter_local_notificationsのページ](https://pub.dev/packages/flutter_local_notifications)のまとめです。

もし、記事の内容が参考になれば[Twitter](https://twitter.com/1d7678174656)のフォローをお願いします。個人的に進めているアプリ開発に関連することをよくツイートします。

## 環境

元記事を表示

kotlin&Java:特定のフラグメントのみツールバーを表示しない方法

#はじめに
Android開発で特定のフラグメントのみツールバーを表示しない実装に今後も遭遇することが予想されるため、備忘録を含め下記にまとめさせていただきます。

## kotlinの場合
“`kotlin:kotlin
//隠したい
(activity as AppCompatActivity?)!!.getSupportActionBar()!!.hide()

//表示したい
(activity as AppCompatActivity?)!!.getSupportActionBar()!!.show()
“`

## Javaの場合
“`kotlin:Java
//隠したい
((AppCompatActivity)getActivity()).getSupportActionBar().hide();

//表示したい
((AppCompatActivity)getActivity()).getSupportActionBar().show();
“`

以上となります。

今回参考にした記事です。
より詳細に記載がりますので、よろしければご参照ください。(Javaで

元記事を表示

ConstraintLayout入門その6 – チェーン

ConstraintLayoutを使用するための設定については、[ConstraintLayout入門その1](https://qiita.com/yamadacsa/items/a4fcf4de9982111cdb7c)をご覧ください。

## ConstraintLayoutのチェーン

ConstraintLayoutの子Viewが形成する**チェーン**とは、位置を相互に制約し合っている、2つ以上の要素からなる子Viewの集合を指します。チェーンには水平方向のチェーンと垂直方向のチェーンがあり、子Viewは水平方向のチェーンと垂直方向のチェーンの最大2つのチェーンに属することができます。水平方向のチェーンは子Viewの左端と右端を、垂直方向のチェーンは子Viewの上端と下端を制約によって決定するためのものであり、2つのチェーンに属している子Viewの水平方向の位置と垂直方向の位置は原則として2つのチェーンによって独立に決定されます。

chain_horizontal.xmlは水平方向のチェーンの例です。この場合、 “`“`, “`

元記事を表示

2言語でアプリ開発してみた

# アプリ、開発しました!

## アプリの概要

**メンバーとグループ数を入力するとグループ分けするアプリ**

機能の詳しい説明 : [はてなブログ](https://sato-na.hatenablog.com/entry/2020/08/15/205239)

## 開発環境 / コード

– エディタ : AndroidStudio

– java版 : https://github.com/sato-na/guruwake_java

– kotlin版 : https://github.com/sato-na/guruwake_kotlin

# なぜ、2言語で同じアプリを開発したのか

kotlinとjavaの共通点 = アンドロイドアプリが開発できる

だけど、書き方が少し違う…

なので、

同じアプリを開発して同じ機能を実装しようとしたときに、

どのように違うのかが気になって作りました!

ですが、2言語を照らし合わせながらコードを書いてみると…

**ただコードをあわせるだけじゃまだ振り返りにくいな…**

# ということで…

**今日から7日間毎日記

元記事を表示

MongoDB Realmで、超初心者が無料でAndroidアプリのバックエンド処理を作ってみた

#はじめに
この記事は、
[こちらの記事のIoTセンサデータを](https://qiita.com/c60evaporator/items/283d0569eba58830f86e)
**モバイル連携クラウドサービス「MongoDB Realm」を通じて、スマホアプリとデータ連携**させた記事となります
![summary.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/85316a54-98bb-0b23-e803-f827b7472687.png)

MongoDB Realmの利用法については、[こちらの記事の内容を応用しております](https://qiita.com/c60evaporator/items/8cd83abfeb3b232413d1)

**まずは上の2つの記事をご覧頂いてから**、本記事を見て頂けますと幸いです。
(また、スマホアプリのフロントエンド側は別途記事を作成します)

#スマホアプリとバックエンド処理
詳しくは[上の記事](https://qiita.c

元記事を表示

MongoDB Realmで、超初心者でも無料でスマホアプリとクラウドDBをお手軽連携

#はじめに
この記事は、スマホアプリ未経験者がクラウドDBサービス**「MongoDB Realm」**を利用して、
サーバデータと連携したスマホアプリを作成した記事となります。

![summary.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/1d75653a-812b-48bc-26a2-7d1673362dd2.png)
私は**スマホアプリ開発未経験の超初心者**ですが、公式サイトが丁寧だったこともあり、目的の連携処理を実装することができました。
([実践編として、こちらの記事もご参照いただければと思います](https://qiita.com/c60evaporator/items/92d0ebde001f568f2707))

**スマホアプリ初心者がバックエンド処理を作成する際の、一つの指針になればと思います。**

[英文チュートリアル](https://docs.mongodb.com/realm/tutorial/)を参考にしたため、間違いがあるかもしれませんが、見つ

元記事を表示

新卒プログラマの学習ログ 〜 其の五 〜

#Kotlinのあれこれ
Android StudioでKotlinを使用しながら、Androidアプリ開発に関して学んでいます。
Javaの基礎知識があればKotlinの学習は必要ないと上司から言われていましたが、全然そんなことないと思っています。(泣)

確かにオブジェクト思考を前提としたプログラミングではありますが、Javaと比較してKotlinは型推定が常識のように行われるためにいきなりライブラリの仕様等を見ると心が折れます。

#高階関数とそれに組み合わさるあれこれ
前回に関数オブジェクトについて書かせていただきました。
関数オブジェクトが本領を発揮するのは、関数の引数として与えたり、返り値として返すことができる点です。

高階関数は関数を引数として受け取って動作する関数です。
今回は関数オブジェクトを引数として渡す方法や、それに書き換えられるラムダ式と絡めて記事を書いてみます。

#早速コードを見てみよう
まずは実際に動作するコードを確認してみましょう。
以下は受け取った文字を出力する関数オブジェクト`charPrint`を高階関数`forEach`に引数で渡しています

元記事を表示

【Flutter】GridViewを使って簡単に要素を横に羅列させよう【gridview】

#この記事を読んで習得できること
FlutterでGridViewを使って、要素をこんな感じに横に並べることが出来るようになる

![Simulator Screen Shot – iPhone SE (2nd generation) – 2020-08-15 at 14.14.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389553/e8c23166-f67d-2c44-15df-772188abf8ad.png)

#結論
こんな感じで書く

“`main.dart

…略

child: GridView.count(
padding: EdgeInsets.all(10), // 割と重要!ここでGridViewの位置を調整する
crossAxisCount: 4, // 一列に要素をいくつまで置けるかを指定
children: List.generate(

元記事を表示

OTHERカテゴリの最新記事