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

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

Robolectric 4.4 にバージョンアップした時に見るメモ

# Robolectric 4.4 がリリース
2020年8月末に`v4.4`がリリースされたようです。[リリースノート](https://github.com/robolectric/robolectric/releases/tag/robolectric-4.4)
`v4.4`では大きな変更があり、バージョンアップしたらテストの大半が失敗するなんてこともあります。

この記事では、`v4.4`での変更点と、テストが失敗する時の対処方法をまとめていきます。

# Robolectric 4.4 の大きな変更点
[リリースノート](https://github.com/robolectric/robolectric/releases/tag/robolectric-4.4)にある通り、`PAUSED looper mode`がデフォルトになったことが大きな変更点です。
これによって、大半のテストが失敗するようになるかも知れません。

`PAUSED looper mode` の説明は、公式のドキュメントに詳しく書いています。
[PAUSED looper mode の説明](http:

元記事を表示

[Android] ダイアログの横のスペース [メモ]

ダイアログに苦しめられたのでメモ。

# 起こった事

カスタムレイアウトのダイアログを作る時に、この両端のマージンがどうしてもいい感じに指定できなくて苦しめられた。

“`xml

[Android] Cloud FireStore使ってみた

[前回](https://qiita.com/karass/items/3269f4929ada967052d2)はRealtime Databaseを使ってみたが、今回はCloud FireStoreを使ってみる。

# Gradle
“`gradle
implementation ‘com.google.firebase:firebase-firestore:21.2.1’
“`
# 実装
公式Documentを見る感じ、ルールとかの特別な設定とか特になしでできるっぽい?(お試しで使う場合)
Cloud FireStoreはRealtime Databeseとは違うデータモデルです。データを1つの大きなJsonツリーとして保存していたRealtime Databaseとは違って、データをドキュメントのコレクションとして保存します。

コレクション:複数のドキュメントを格納しているもの
ドキュメント: データを格納しているもの

## データ書き込み
`FirebaseFirestore.getInstance()`でデータベースを取得します。取得したデータベースにデータを追加し

元記事を表示

[Android] テスト時のSimpleDateFormatの取り扱いで気をつけること [メモ]

日付を取り扱う時にSimpleDateFormatを使っていたのですが、テストする時にローカルでは通っているのにGitHubActionのUnitTestでエラーを吐いてしまう。

# 原因
テストしたいViewModelとTestコードはこちら

“`kotlin
class MainViewModel : ViewModel() {

fun getDate(): String {
val sdf = SimpleDateFormat(“yyyyMMdd HH:mm”, Locale.JAPAN).apply {
this.timeZone = TimeZone.getTimeZone(“Asia/Tokyo”)
}
return sdf.format(DateUtil.getCurrentDate())
}
}

object DateUtil {
fun getCurrentDate() = Date()
}
“`

“`kotlin
class ExampleUnitTest

元記事を表示

FlutterやってみたよPart7(retrofit導入)

# 初めに

ほとんどのアプリがapi通信をすると思います。
なんか楽にクライアント生成できるのないかな〜と調べていたらretrofitというライブラリを見つけました。
今回はそれを導入してみようと思います。

– [retrofit](https://pub.dev/packages/retrofit)
– [retrofit導入YouTube](https://www.youtube.com/watch?v=7VYwtpaZEhg)

# サンプルアプリ

まずはサンプルアプリの仕様をざっくり決めます。

– Qiitaのapiを使用して最新記事を取得する
– 取得した記事を一覧で表示する
– 記事のタイトルをタップしたら記事詳細をwebviewで開く

今回はこんな感じの簡単なアプリにします!

# retforitの仕組み

導入する前にざっくりとどういう仕組みで動くのか理解します。
公式のReadmeやSampleを見ればなんとなくわかると思いますが、
abstractでapiのエンドポイントを定義。
この定義されたファイルを元にクライアントの実体を自動生成する仕組みで

元記事を表示

【Android / Java】 フラグメントでの画面遷移と戻る処理

# はじめに
Android Studio で Javaを用いたモバイルアプリの開発を学んでいます。
layoutファイルについてはあまり力を入れて記述していません(ざっくりです)。画面切り替えの動作等にフォーカスしているため、stringファイルは使用しませんでした。

### 学んだ内容
– “FragmentManager“ “FragmentTransaction“ を用いた表示フラグメントの切り替え(画面遷移)
– “addToBackStack“ “popBackStack“ を用いたアクションバー戻るボタンクリックで戻る動作

# 学習のために作成したサンプルアプリの概要
1つのアクティビティにメインとなるフラグメントを用意し、そこからボタンを押すことによって2つのフラグメントに行き来ができるだけの簡単なアプリ。
アクティビティ:1つ
フラグメント:3つ(メイン1つ、サブ2つ)

この①、②ボタンでサブフラグメント1、サブフラグメント2にそれぞれ遷移する

メイン画面(MainFragment)|
———————-|

元記事を表示

モバイルアプリにおけるUIデザイン

#1.はじめに
私は(筆者は)モバイルエンジニア転職を目指す立場です。個人的にアプリのUIデザイン知識はデザイナーだけでなくエンジニアにも必須だと思っています。私自身がアプリ開発の過程でデザインについて指摘され、「このままデザインに無知では良くないと思った」、「同じような立場の方にモバイルアプリのデザインの事を少しでも知ってもらいたいと思った」その2つの理由から本記事を執筆しました。
現在、エンジニアを目指している方やアプリ開発はしているけどモバイルデザインについて改めて知りたいという方、そのような方向けに改めてiOS・Android双方のデザインガイドラインについてまとめてみました。

#2.iOSとAndroidのデザインの考え方
2020年現在、iOSではHuman Interface Guidelines、AndroidではMaterial Designの考え方をもとにアプリUIが作られています。双方の公式ページはモバイルアプリを構成する UI の基本指針が細かく記されているのでエンジニア&デザイナー必読です。AppleよりGoogleの方が画像や映像を多く使って解説しているた

元記事を表示

UnityChanSSUをAndroid実機ビルドした際シェーダのコンパイルエラーで失敗した時の対処法

個人的に偶然キレイなビジュアルが作れたので、PCではなくスマホで動かしたくなりました。

[Android] プロフィール画像とかでよく見る画像を丸にくり抜くやり方 [メモ]

#はじめに
プロフィール画像とかでよく見る、画像を円型に表示させる方法。色々なやり方があると思うが、今回はMaterial ComponentのShapableImageViewを使います。

# 目標

#Gradle
“`gradle
implementation ‘com.google.android.material:material:1.2.1’
“`

# 実装
`shapeAppearanceOverlay`属性に任意のスタイルを当てはめると簡単に円型やひし形などカスタマイズできます。

“`xml

元記事を表示

【Android】EditTextの下線を消し方

#【Android】EditTextの下線を消す
* EditTextの下線を消す方法

“` Activity.xml


“`

元記事を表示

UnityAndroidプラグインのIFメモ

Java

“`
package com.android.gl2jni;

// Wrapper for native library
public class GL2JNILib {

static {
System.loadLibrary(“gl2jni”);
}

/**
* @param width the current view width
* @param height the current view height
*/
public static native void init(int width, int height);
public static native void step();
}

“`

C++

“`
extern “C” {
JNIEXPORT void JNICALL Java_com_android_gl2jni_GL2JNILib_init(JNIEnv * env, jobject obj, jint width, jin

元記事を表示

低レベルネイティブプラグインインターフェースのメモ1

# 元ネタ
https://github.com/Unity-Technologies/NativeRenderingPlugin
https://qiita.com/fukaken5050/items/63940b65ec79a59161eb

# 環境
OS : win10pro
IDE : AndroidStudio 4.0.1
Unity : 2019.4.5f1
Unity/VS : VS2019
確認した実機: Galaxys8

# 要点の箇条書き
低レベルネイティブプラグインインターフェース(Low-Level Native Plugin Interface)を使ってUnityAndroid/Pluginで動画を再生する。

・AndroidStudio/C++で次を#includeする。Unityインストールしたフォルダからコピペする。

“`
#include “IUnityInterface.h”
#include “IUnityGraphics.h” // UnityRenderingEvent
“`

・Unityプラグインの更新はUnity再起動が必

元記事を表示

13. 【Android/Kotlin】Handler(画面遷移を遅延)

#はじめに
DreamHanksのMOONです。

前回はCircleImageViewという外部ライブラリを使用しました。
[12. 【Android/Kotlin】丸いイメージ(CircleImageView)](https://qiita.com/DreamHanks/items/b57d9eb22d70f70c0231)

今回は`Handler`について説明し、`Handler`で画面遷移を遅延してみます。

#Handlerとは
ハンドラは簡単にサブスレッドからメインスレッドへメッセージを受け渡すためのクラスです。

アンドロイドでは、UIの作業をサブスレッドですることは禁止されています。

なので、サブスレッドにUIの作業をしたい場合は`Handler`を使用します。

#画面遷移を遅延
・ローディング画面のActivityを作成

“`kotlin:LoadingActivity.kt
package com.example.practiceapplication

import android.content.Intent
import androidx.appco

元記事を表示

Robolectric 4.4でデフォルトになった@LooperMode(PAUSED)についてメモ

Robolectricのアップデートについてのメモです :pencil:

公式の記事
http://robolectric.org/blog/2019/06/04/paused-looper/

RobolectricはUIとテストで同じスレッドを共有していて、以下のようなパターンでテストが失敗します。
理由は`before, after, between`になりpostを即座に同期的に実行するためです。
本当のHandlerであれば、postが後から実行されるため、うまく通るはずです。

http://robolectric.org/blog/2019/06/04/paused-looper/ より引用

“`java
List events = new ArrayList<>();
events.add(“before”);
new Handler(Looper.getMainLooper()).post(() -> events.add(“after”));
events.add(“between”);

assertThat(events).contai

元記事を表示

スマホアプリ向けお手軽グラフライブラリを作ってみた【MPAndroidChart改】

#スマホアプリとグラフ
Androidアプリでグラフを表示させたい場合、
[**MPAndroidChart**](https://github.com/PhilJay/MPAndroidChart)
というライブラリがよく使われます。 (iOS版の[**Chartsライブラリ**](https://github.com/danielgindi/Charts)も存在)

多機能かつUIも優れた素晴らしいライブラリですが、
日本語情報の不足もあり、実装難度は結構高いと感じます。
そこで、**簡易にグラフを作成するための追加パッケージを作成してみました!**
[Github](https://github.com/c60evaporator/CustomMPAndroidChart)

下のようなグラフを簡単に作る事ができます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/458900e7-c01c-adc7-16c7-b6f874586807.png)
(題材が重い!(笑)

元記事を表示

[Android] Realtime Databaseを使ってみる

[前回](https://qiita.com/karass/items/052b7cc038b517169ded)はFirebase Authenticationを触りましたが、今回はRealtime Databaseを使ってみたい思います。

# Firebase設定
Realtime Databeseを使用するには、Databaseルールというものを記述しなければならない。

“`json
{
“rules”: {
“foo”: {
“.read”: true,
“.write”: false
}
}
}
“`
上記のルールは、あらゆるユーザーが`/foo/`以下の読み取りを許可するというものになります。`/foo/`以下というのは、

“`json
{
“rules”: {
“foo”: {
“.read”: true,
“.write”: false,
“hoo”: {
“.read”: false,
“.write”: false

元記事を表示

LINEの通知から色々な情報をスクレイピングする

# はじめに
2011年6月23日にLINEサービスが開始され今年で9年目になりますが、国内の月間アクティブユーザー数が約8,700万人ということで、身近でもLINEを使っているという方はほとんどだと思います。
普段のやり取りは主にLINEで行うと思いますが、頻繁に使うLINEからデータが取れれば色々活用できると思い、どうにかやりとりの情報を取得できないかと考えました。

私はこの方法を使って、LINEの通知音・着信音を個別に鳴り分けるようにする「ピックアップ通知音」というアプリをGoogle Playに公開しています!
https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409628/e48b6416-da86-2db1-0c9a-0c1a5c4be66e.png[Android]Coil の Video Frames を使ってみる

# はじめに

Coil の Video Frames を使うことで動画ファイルのあるフレーム画像を ImageView に表示できるらしい。今回はどのような感じで取得できるのか試してみたいと思う。

# 準備

Video Frames を使う場合には Core ライブラリに加えて Video Frames ライブラリを依存関係に追加する必要があります。次のように build.gradle に追記して Video Frames ライブラリを依存関係として追加します。

“`groovy
dependencies {

implementation “io.coil-kt:coil:1.0.0-rc3”
implementation(“io.coil-kt:coil-video:1.0.0-rc3”)

}
“`

# 実装

## raw フォルダに動画を格納する

動画ファイルが必要になるので次のように raw フォルダを作成し格納しておきます。
(対応している動画ファイルの拡張子→[サポートされているメディア形式](https://

元記事を表示

【Android】Bindingした値をトリガにいい感じにアニメーションする(今回の対象:背景色)

## やりたいこと
「ViewModelクラスに持ってる値に応じて、Viewの背景色を変えたい。変わる時にはアニメーションしてほしい」

## やったリポジトリ
https://github.com/nredjap/android-bindAnimation

## 実装内容の話

プラスマイナスののカウンターがあって、0だと背景グレーで、それ以外だと別の色。
この色変更をアニメーションさせたい。そんな実装をしました。

### データ側
ViewModel側に色情報も持って

元記事を表示

OTHERカテゴリの最新記事