- 1. Flutterの始め方
- 2. Android + kotlin + databindingでカレンダーを自作する【日付設定編】
- 3. ActivityResultContractとViewModelを使ってFirebase Auth×Googleログインをスッキリ書く
- 4. Flutter歴1ヶ月がオンラインハッカソンで初心者チームのTech Leadをしてみた
- 5. Dagger2 – Android Dependency Injection
- 6. 【Android】タップされた座標にあるビューが知りたい
- 7. Androidでカレンダーを自作する【背景色編】
- 8. [Modern Android] Jetpack Compose その3
- 9. Androidでカレンダーを自作する【枠線編】
- 10. Unityからjar経由でAndroidの機能を呼ぼうとしたらNoClassDefFoundErrorが発生した
- 11. 初心者が流し読みで理解できるAndroidアプリのDI(勉強会資料)
- 12. Android + ConstraintLayout + Guidelineでカレンダーのレイアウトを作成する
- 13. AndroidのWebView#shouldInterceptRequestでリクエストをinterceptするときに忘れがちなこと
- 14. [Modern Android] Jetpack Compose その2
- 15. 初めてのEpoxy
- 16. 【Android】MergeAdapterを使ってBanner + GridItemのパターンを実装する
- 17. Espresso入門
- 18. AndroidでDividerを描画する方法
- 19. Androidでカレンダーのレイアウトを全力で自作する
- 20. [Modern Android] Jetpack Compose その1
Flutterの始め方
初めに
===
AndroidのアプリエンジニアがFlutterで開発を始めるためのセットアップをまとめました。
AndroidのアプリエンジニアがFlutterを始めるまでなので、Android Studioは既にインストール済みであることを前提とします。
[公式](https://flutter.dev/docs/get-started/editor)環境
===
PC:Windows 10
Android Studio:3.51.Android Studio
===
1-1.Android Studioのアップデート
–
Android StudioでのFlutter開発環境の構築
FlutterのサポートがAndroid StudioのVersion:3.6以上なので、アップデートしていきます
[Events]
Android + kotlin + databindingでカレンダーを自作する【日付設定編】
## 概要
前回なんとなくいい感じにレイアウトは作成できたので、今回は日付の部分を手作業で入れていた箇所を動的に入れられるようにしたいと思います。## 目標
カレンダーの日付をデータバインディングを用いてアクティビティから動的に設定する## 手順
### Activityからレイアウトの値を変更するまずは最小限のActivity→レイアウト変更を書きます。
“`MainActivity.kt
package com.example.myfavoritecontentsmanageimport android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.DataBindingUtil
import com.example.myfavoritecontentsmanage.databinding.ActivityMainBindingclass MainActivity : AppCompatActivity() {
privat
ActivityResultContractとViewModelを使ってFirebase Auth×Googleログインをスッキリ書く
## はじめに
AACのViewModelを用いた場合、onActivityResultが絡んだコードを書くときに辛みが発生していましたが、[前回の記事](https://qiita.com/masaibar/items/0cd52d017119171b1ed9)を基に、Firebase AuthでのGoogleログインの処理を書いてみたら思いの外スッキリしたので記録を残しておきます。
なお、本記事ではFirebase Auth×Googleログインに関する基本的な解説はしません。全体のソースコードはこちらです:https://github.com/masaibar/SimpleGoogleLogin
## 実装
詳細な差分は[こちら](https://github.com/masaibar/SimpleGoogleLogin/pull/1)を御覧ください。### app/build.gradle
安定版である1.1.0には`ActivityResultContract`が含まれていないので注意して下さい。“`gradle:app/build.gradle
i
Flutter歴1ヶ月がオンラインハッカソンで初心者チームのTech Leadをしてみた
# はじめに
1ヶ月前のGWにもハッカソンに出場し、そこで初めてFlutterを触り5日間でアプリを開発しました。
そのときの記事はこちらです
[Flutter初見が5日間のハッカソンでアプリ開発してきた](https://qiita.com/hohohoris/items/dd0df09c5b0aeb3d87da)今回は1週間でサービスを作るハッカソンを企画/開催したためその概要と、Flutter初心者チームでTech Lead(笑)な役割をし、メンバーを牽引した軌跡を残せれば良いと思いこの記事を書いています。
# CA21Hackathon
## 目的
今回のハッカソンは
[CyberAgent](https://www.cyberagent.co.jp/)の21卒内定者エンジニアでのハッカソンです。
このハッカソンを開催した目的は2つあります。
– 同期理解のため
– 同期間での技術知見共有このハッカソンは、内定者数人で週に1度zoomで集まりミーティングを行い
– そもそもどんなイベントを開催するか
– ハッカソンを開催する目的/ テーマ
– 開催
Dagger2 – Android Dependency Injection
#DIとは
Dipendency Injection(DI)、「オブジェクトの注入」のこと。要するに、依存性を自由に差し替えれるようにすることで、テストを実行しやすくしたり(モックを差し込む)、オブジェクトをそれぞれ管理できるようになる。
#AndroidにおけるDIの必要性
例えば、SharedPreferencesにデータを保存したい場合、DIなしで実行すると、SharedPreferencesからデータをインスタンス化、保存、取得することになり、すべてアクティビティに似たような記述をしなければならない。
この方法でアプリが大きくなると、最悪の場合改修不可能になる可能性がある。
なのでSharedPreferencesを毎回アクティビ
【Android】タップされた座標にあるビューが知りたい
**ソース**
“`kotlin
class MainActivity : Activity() {private var views = mutableSetOf
()
private var debugCount = 0@SuppressLint(“ClickableViewAccessibility”)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)// タップ時に判定したいViewを詰める
views.add(findViewById(R.id.redView))
views.add(findViewById(R.id.purpleView))
views.add(findViewById(R.id.greenView))
Androidでカレンダーを自作する【背景色編】
## 概要
前回カレンダーっぽくするために枠線を入れたのですが、今回はそれに加えて土日の色を少し変えていきたいと思います。## やること
* 土曜の色を青に
* 日曜の色を赤に## いざ、着色
実は昨日の枠線をつける段階で背景色の設定方法も調べはついていたのでそれを黙々と組み込みます。
前回のflame_style.xmlとは別にflame_style_red.xmlとflame_style_blue.xmlを用意します。
そしてそれそれに赤と青のスタイルを記述して設定するだけです。
(ホントはflame_style.xmlの中に書きたかったがレイアウトでの指定方法がわからんかった….)“`flame_style_red.xml
[Modern Android] Jetpack Compose その3
JetNewsのサンプルコード見ながら、
Jetpack Composeについて、理解や分析のメモです。
Flutterと似ているので、比べてながらメモします。# Theme
* theme PackageのTheme.ktを見るとこんな感じ。
* lightColorPaletteとdarkColorPaletteの関数はなんだろう?
* https://material.io/design/color/the-color-system.html#color-theme-creation“`kotlin
private val LightThemeColors = lightColorPalette(
primary = Red700,
primaryVariant = Red900,
onPrimary = Color.White,
secondary = Red700,
secondaryVariant = Red900,
onSecondary = Color.White,
error = Red800
)
Androidでカレンダーを自作する【枠線編】
## 概要
前回のでレイアウトの枠組みはできたのでよりアプリのカレンダーっぽく寄せていきたいと思います。**前回の成果物**
## 今回やること
枠線をつける## 枠線をつける
枠線をつけるためにはstyleの定義が必要なようで、今回は新しくファイルを定義します。
drawable/flame_style.xmlとします。(どこかの記事で読んだので…)“`xml
Unityからjar経由でAndroidの機能を呼ぼうとしたらNoClassDefFoundErrorが発生した
そもそもjarを呼ぶところまではここを参照した
呼ばれるjavaメソッド内で端末のセンサー関連機能を呼び出そうとしたところ、
NoClassDefFoundError が発生した
どうやらandroid contextをメソッド内で使おうとするとクラス自体を見失うよう。android contextをUnityからjavaに送る方法を見つけ、呼び出しに成功した。
https://www.itread01.com/content/1546405986.htmlUnity:
AndroidJavaClass androidJavaClass = new AndroidJavaClass(“com.unity3d.player.UnityPlayer”);
AndroidJavaObject activity = androidJavaClass.GetStatic(“curren
初心者が流し読みで理解できるAndroidアプリのDI(勉強会資料)
# DIとは
**Dependency Injection**の略。日本語で「依存性の注入」コンポーネント間の依存関係を外部から注入するデザインパターン(と言う一文は理解できなくてOK)
—
## DIしたいアプリの例
`UrlProvider`は、通信先URLを生成するクラス
![DI.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277107/8c128d42-7f46-4ea7-9b05-450e5840ad98.png)
3つのクラスが`UrlProvider`を使っている1. `WebView` URLをアプリ内部で表示する
1. `OpenBrowser` URLをアプリ外部のブラウザで表示する
1. `HttpClient` URLとバックグラウンドで通信する—
### 実装はこんな感じ(関係ない部分は省略)
“`kotlin
class WebView {
private val urlProvider = UrlProvider()
・・・
Android + ConstraintLayout + Guidelineでカレンダーのレイアウトを作成する
## 概要
昨日力技でカレンダーを作成したのですが、テキストの位置を変えたり、枠線を加えようとしたら全然うまく行かず、そもそも作成方法があんまり良くなかったのではないか?と思って調べてみたところGuidelineという神ツールがあることを知ったのでそちらを使って作成し直すことにしました。**超絶本当に最高になった記事**
https://qiita.com/devnokiyo/items/59d72bf285ee378ef637## ガイドラインを作成
まず縦横それぞれのマス目の割合を定義したGuidelineを定義します。
“`xml
AndroidのWebView#shouldInterceptRequestでリクエストをinterceptするときに忘れがちなこと
AndroidのWebViewでHTTPレスポンスのハンドリングやタイムアウトを独自に実装したいときに、shouldInterceptRequestをオーバーライドして、独自にHTTP通信を実装することがありますよね。
サンプルなので大雑把な実装ですが、例えば以下のような感じに実装したとしましょう。
“`Kotlin
override fun shouldInterceptRequest(view: WebView?, request: WebResourceRequest?): WebResourceResponse? {
val latch = CountDownLatch(1)
var res: InputStream? = nullval call = createOkHttpClient().newCall(Request.Builder().url(request?.url.toString()).method(“POST”, RequestBody.create(null, “hoge”)).build())
call.enque
[Modern Android] Jetpack Compose その2
Composeのサンプルコードを見ながら、分析しようと思います。
JetNewというComposeのサンプルを見つけました。#はじめる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/aad648ce-8be7-22f3-1804-d00ae5686803.png)
https://github.com/android/compose-samples/tree/master/JetNews
# Readmeを読む
>Jetnews is a sample news reading app, built with Jetpack Compose. The goal of the sample is to showcase the current UI capabilities of Compose.
To try out this sample app, you need to use the Canary version of Android Studio 4.
初めてのEpoxy
入社して3ヶ月経ちそうですが、まだEpoxyを触ったことなかったので備忘録として書いていきます。
Epoxyを使うとRecyclerViewを簡単に実装できるみたいです!(中毒性があるので注意らしい)# 実装
##Gradle
まずはEpoxyを使うためにGradleに依存関係を記述します。“`build.gradle
def epoxy_version = “3.11.0”
implementation “com.airbnb.android:epoxy:$epoxy_version”
// databinding使用するなら
implementation “com.airbnb.android:epoxy-databinding:${epoxy_version}”
kapt “com.airbnb.android:epoxy-processor:$epoxy_version”
“`## package-info
gradleに依存関係を記述したら、`package-info.java`ファイルをプロジェクト内に作成します。
【Android】MergeAdapterを使ってBanner + GridItemのパターンを実装する
## 概要
巷によくあるアプリのパターンとして、画面の上に横長のバナーやレイアウトを置いて、その下に格子状のレイアウトを置くというものがあります。
SmartNews
グノシー
このデザインに対応するためのよくある実装として、一つのRecylerAdapterで、ViewHolderを複数用意して、item毎にViewHolderを切り替えるといったものがあります。
しかし、ロジックが複雑化するので、実装コストや後のメンテナンスコストが増えてしまう原因でもありま
Espresso入門
# はじめに
AndroidでUIテストをするためには何を使うのが良いか調べて見たところ、
単一のアプリのUIテスト方法として [Espresso](https://developer.android.com/training/testing/espresso)がDeveloperGuideでも紹介されていたので、試してみました。
# 導入〜テスト作成まで
AndroidStudioで簡単なプログラムを作成して、それに対するUIテストを書いてみました。が、~~面倒くさそう~~難しそうなので、書くのは大変そうですね…
いい方法がないか調べていると、DeveloperGuideにもこんなページが..
**[Espresso テスト レコーダーで UI テストを作成する](https://developer.android.com/studio/test/espresso-test-recorder?hl=ja)**
この方法が使えるならと..試しみました。。
SampleにAndroidStudioのプロジェクト作成で一発で作成できるLoginActivityを..
AndroidでDividerを描画する方法
## これは何
アンドロイドアプリを開発している際、任意の場所に区切り線を描画したいことがあるかと思います。
区切り線の描画方法について検索しても、情報が乱立していてどれが正しいのか分からなかったのですが、おそらく正解であろう方法を見つけたのでまとめました。## dividerを設定する方法
答えはこちらのデモアプリにありました。
[Material Components Catalog App](https://github.com/material-components/material-components-android)
以下のxml要素をdivierを描画したいところに設定するだけです。
“`xml:layout.xml
Androidでカレンダーのレイアウトを全力で自作する ## 概要
前回は曜日の部分だけ作ったので、今回は日付の部分を作っていきたいと思います。## 全力で自作
“`activity_main.xml
[Modern Android] Jetpack Compose その1
モダーン アンドロイド
Jetpack Composeを試してみたいその過程をメモします。
まず、メモしている時点では、開発者PreviewなのでStableチャンネルでは
利用できない。# 設置する。
https://developer.android.com/studio/preview
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/e68b50b9-176e-6da3-2ab5-c5b3f3b5e786.png)
ZipFileでダウンロードして、圧縮されたデータを元に戻もどす。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/e351047b-d06e-ec7b-eb13-50ae07bb40d6.png)
Nextを押します。
![image.png](https://qiita-image-store.s3.ap-northeast