- 1. バインディング式でクリックイベントを取得する
- 2. 【Kotlin 初心者】DataPikerで日時表示する
- 3. Flutter 住所 or 郵便番号から緯度経度を取得する
- 4. レスポンスデータを加工する(Stream)
- 5. Kotlinでピクチャーインピクチャーを実装する
- 6. Flutterで普通のスワイプで画面をpopする
- 7. 【Kotlin 初心者】スプラッシュ画面の作り方
- 8. 【Kotlin 初心者】IntentでWebUrlにと遷移する方法
- 9. 【Kotlin 初心者】ダイアログの作成方法
- 10. DataBindingのバインディング式でsealed classを使う
- 11. 【Mobile】静的セキュリティ解析ツール「MobSF」Mobile-Security-Framework-MobSFの使い方
- 12. レスポンスデータを加工する(拡張for文)
- 13. 【Kotlin 初学者】EditTextで文字入力した後の状態を取得する
- 14. MVVM + DataBinding でViewModelからクリックイベントを通知する
- 15. Android Studio パズルアプリ制作(動画有り)
- 16. [BigQuery]アプリバージョンごとのユーザー比率を取得してSlackへ通知する
- 17. Androidアプリ作成Tips
- 18. 【Kotlin 初学者】画面遷移時で値を渡す方法
- 19. 【Android】ViewModel内でUiModelを使おう(その1)[sealed class編]
- 20. Vysorを使ってスマホ画面をパソコン画面に表示
バインディング式でクリックイベントを取得する
DataBindingのバインディング式で、クリックイベントを取得する方法です。
# `android:onClick`属性を設定する
クリックイベントを取得したいウィジェットに、`android:onClick`を指定します。
“`xml
// 引数のViewなし
android:onClick=”@{() -> viewModel.clickText()}”
// 引数のViewあり
android:onClick=”@{viewModel::clickButton}”
// バインドされているデータを渡す
android:onClick=”@{() -> viewModel.clickText(model)}”
“`“`ViewModel.kt
// android:onClick=”@{() -> viewModel.clickText()}”の処理
fun clickText() {}// android:onClick=”@{viewModel::clickButton}”の処理
fun clickButton(view: View) {}// a
【Kotlin 初心者】DataPikerで日時表示する
## イメージ
Kotlinで簡単にiPhoneみたいな表示で日時を表示することができます## 実装
コードはいけてないとこありますが、ご容赦を、、、“`MainActivity.kt
package com.example.datapicker
import android.app.AlertDialog
import android.app.DatePickerDialog
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextViewclass MainActivity : AppCompatActivity() {
override fun onCr
Flutter 住所 or 郵便番号から緯度経度を取得する
### Flutterで住所or名称or郵便番号から緯度経度を取得する
検索しても、なかなか出てこなかったのでメモ代わり
https://pub.dev/packages/geocoding
Null Safety 対応バージョン
`geocoding: ^2.0.0`Null Safety非対応バージョン
`geocoding: ^1.0.5`“` dart
final searchWord = ‘東京タワー’;
Listlocations = await locationFromAddress(searchWord);
print(locations.first.latitude); // 35.6585805
print(locations.first.longitude); // 139.7454329final zipCode = ‘105-0011’;
locations = await locationFromAddress(zipCode);
print(locations.first.latitude); // 35.6
レスポンスデータを加工する(Stream)
※前回記事[レスポンスデータを加工する(拡張for文)](https://qiita.com/kilalabu/items/a1879315d292647cfcb5)のStream版です。
違いだけを知りたい人は「データを加工」までジャンプしてください。## はじめに
レスポンスデータって全要素使うわけではなかったり、ネスト構造になってたり、結構見にくいことが多いと思います。
ということで取得したレスポンスを加工(フィルター, マッピング, ソート)して、自分好みのデータクラスを作成してみました。## ゴール
フィルター(抽出):likeCountが5より大きいもの
マッピング(結合):title,body,likeCount,name
ソート(並び替え):likeCountで降順|加工前|加工後|
|—-|—-|
|![スクリーンショット 2021-03-16 22.02.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670405/f5eee0bb-25e2-cbf1-add
Kotlinでピクチャーインピクチャーを実装する
#ピクチャーインピクチャーをシンプルに実装する
まずはマニフェストに下記を追記。
“`AndroidManifest.xml
“`クリックリスナー等に下記を記述。
“`kotlin:MainActivity.kt
val builder = PictureInPictureParams.Builder()
// サイズの設定
builder.setAspectRatio(Rational(16, 9))
// PIPモードへ
this@MainActivity.enterPictureInPictureMode(builder.build())
“`
Flutterで普通のスワイプで画面をpopする
Flutterで`Navigator.push(context)`して遷移した先の画面で元の画面に戻るときには`Navigator.pop(context)`をアイコンに設置したりエッジスワイプしたりしますよね。
通常のスワイプでも戻したかったのでやり方を見つけるのに少々苦労しましたがなんとかできました。“`
GestureDetector(
onHorizontalDragUpdate: (details) {
if (details.delta.dx > 18) {
Navigator.pop(context);
}
},
child: ・・・・・・,
);
“`このように`GestureDetector.onHorizontalDragUpdate`を設定して横方向のスワイプをトリガーに`navigator.pop(context)`を実行するようにしました。
`details.delta.dx`はスワイプの速度で、正の向きが左→右です。しきい値として設定した`18`を超えると`navigator.pop(context)`を実
【Kotlin 初心者】スプラッシュ画面の作り方
## Kotliでスプラッシュ画面の作り方について
そもそもスプラッシュとは?
アプリの立ち上げる刹那に表示される画像のことです## イメージ
こちらのスプラッシュは私が作ったLupriというアプリのスプラッシュになります。
実装は非常に簡単です## 実装方法
“`AndroidManifest
【Kotlin 初心者】IntentでWebUrlにと遷移する方法
## KotlinでWebUrlに遷移する方法について
Intentと同じ要領でurlをパースして上がればいけますね## 実装
“`MainActiviy.ktviewBinding.button.setOnClickListener {
val context = viewBinding.root.contextIntent(Intent.ACTION_VIEW).also {
val url = “https://www.google.co.jp”
it.data = Uri.parse(url)
context.startActivity(it)
}
}“`
【Kotlin 初心者】ダイアログの作成方法
## Kotlinでダイアログを表示する方法
簡単にですがダイアログを表示する実装になります。
今回はButtonをタップした時にダイアログを表示する想定のコードになります。“`MainActiviy.kt
val button = findViewById
button.setOnClickListener {
AlertDialog.Builder(context)
.setTitle(“ダイアログのタイトルをいれう”)
.setPositiveButton(“OK”, { dialog, which ->
//OKの時の処理
})
.setNegativeButton(“No”, { dialog, which ->
//NOの時の処理
})
.show()
DataBindingのバインディング式でsealed classを使う
バインディング式で`sealed class`を使う方法です。
`sealed class`は、[アプリ アーキテクチャ ガイド](https://developer.android.com/jetpack/guide#addendum) で紹介されている`Resource`を使います。
# `instanceof`を使う
`==`を使いたくなってしまうところですが、`instanceof`を使います。
“`xml
android:visibility=”@{viewModel.resource instanceof Resource.Success ? View.VISIBLE : View.GONE}”
“`ちなみに上記の実装は「データの取得に成功したらウィジェットを表示」「データ取得中・エラーが発生したら表示しない」という実装です。
# まとめ
MVVMを使った実装例を載せておきます(どこか間違えていたら教えて下さい…)
ネットワークから記事を取得するイメージです。
![1bcb318dba24116959061a48a500e052.gif](htt
【Mobile】静的セキュリティ解析ツール「MobSF」Mobile-Security-Framework-MobSFの使い方
## MobSF(Mobile-Security-Framework-MobSF)とは
[MobSF](https://github.com/MobSF/Mobile-Security-Framework-MobSF)は、Android/iOSのペンテスト、マルウェア解析、セキュリティ評価を自動化したオールインワンのフレームワークです。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261934/dc8ddabc-4096-c5f7-1931-c2bc8dcd0a58.png)
静的解析と動的解析を行うことができます。MobSFは、モバイルアプリのバイナリ(APK、XAPK、IPA、APPX)とzip形式のソースコードをサポートしています。
## MobSFの導入方法
### STEP1 Dockerをインストール
[Mac に Docker Desktop をインストール](https://docs.docker.jp/docker-for-mac/install.html)
レスポンスデータを加工する(拡張for文)
## はじめに
レスポンスデータって全要素使うわけではなかったり、ネスト構造になってたり、結構見にくいことが多いと思います。
ということで取得したレスポンスを加工(フィルター, マッピング, ソート)して、自分好みのデータクラスを作成してみました。## ゴール
フィルター(抽出):likeCountが5より大きいもの
マッピング(結合):title,body,likeCount,name
ソート(並び替え):likeCountで降順|加工前|加工後|
|—-|—-|
|![スクリーンショット 2021-03-16 22.02.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670405/f5eee0bb-25e2-cbf1-addf-6f8de6535538.png)|【Kotlin 初学者】EditTextで文字入力した後の状態を取得する## EditText内の文字入力後の状態を把握する
使い所はX文字以上の場合は入力できません、などを表示したい場合によく使います
当たり前ですがEditTextは初期入力文字数が0なので、下記のような書き方で文字入力後の文字数を取得してあげます“`MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)editTextSample.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable) {}
override fun befor
MVVM + DataBinding でViewModelからクリックイベントを通知する
#この記事について
MVVM + DataBindingを使用する際に、ViewModel内でクリック処理を記述することがあるかと思います。その中には画面遷移など、ViewModelからActivityもしくはFragmentへクリックイベントを通知するケースも存在します。
今回はLiveDataの状態監視を用いてクリックイベントをハンドリングしていきます。#【NGケース】直接LiveDataで遷移状態を保持してみる
まずは悪い例から挙げてみます。
例えば、以下のように直接LiveData内で遷移信号を保持した場合“`kotlin:FirstViewModel.kt
class FirstViewModel : ViewModel {
private val _navigateToSecond = MutableLiveData() val navigateToSecond : LiveData
get() = _navigateToSecondfun userClicksOnButton(
Android Studio パズルアプリ制作(動画有り)
今回はパズルアプリを制作しました。
YouTubeに作っている動画をアップしています。“`xml:strings.xml
PuzzleApp
Puzzle Game
ゲームを始める
パズルの大きさ設定
縦:
横:
整数値を入力してください
[BigQuery]アプリバージョンごとのユーザー比率を取得してSlackへ通知する
Android や iOS でアプリでは何度もバージョンアップしてリリースすることが多いです。
ですのでユーザーが最新のバージョンのアプリを使っているかなど、アプリバージョンごとのユーザー比率が気になることがあるかと思います。
最近、アプリバージョンごとのユーザー比率を BigQuery から取得して Slack に通知する仕組みを実装したので、その方法についてご紹介いたします。
実際に実行してみると、以下のような感じで Slack へ通知が行われるようになります。
“`
アプリバージョンごとのユーザー比率 (2021年03月15日)## Android
– 1.2.0 : 57.1% (4)
– 1.1.2 : 14.3% (1)
– 1.1.0 : 14.3% (1)
– 1.0.0 : 14.3% (1)## iOS
– 1.2.0 : 54.2% (13)
– 1.1.1 : 37.5% (9)
– 1.1.0 : 4.2% (1)
– 1.0.4 : 4.2% (1)
“`この仕組みを実装するにあたって、以下の
Androidアプリ作成Tips
#はじめに
アプリ開発で忘れがちなアレコレを書いていきます。
個人的なメモとして残すので順序など適当な所も多いです。##戻るボタンの簡単な実装
1. Buttonを配置してonClickのコールバックでfinish()を実行する。
2. AndroidManifest.xmlにandroid:parentActivityName属性を追加“`xml:2の記入例
“`##Viewへのアクセス方法
###`findViewbyId`を使ったアクセス“`kotlin
val testTextView = findViewById(R.id.testTextView)
testTextView = “Testです”
“`###`Kotlin Android Extension`でアクセス
【Kotlin 初学者】画面遷移時で値を渡す方法
## 画面遷移時に値を渡す方法
EditTextなどで入力した値を別画面に渡したいなど頻繁に使われる実装になります
本当はViewBindingでid取得したかったんですが、それはまた別記事に書きますので、まずはfindViewByIdでxmlのidを取得してください?♂️## イメージサンプル
## 実際のコードになります
画面遷移先をNextActivityにします
EditTextで値を入力し、Intentで画面遷移時にNextActivityで値を受け取り、
TextViewに代入してます“`MainActivity.kt
class MainActivity : AppCompatActivity() {override fun onCreate(savedIns
【Android】ViewModel内でUiModelを使おう(その1)[sealed class編]
# はじめに
[ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel?hl=ja)は現在多くのプロジェクトで利用されているかと思いますが、LiveDataが多くなってくると管理するのが大変になってきます。最終的にはUiModelを使ってLiveDataの数を少なくし、ViewModelに関するコードをすっきりさせるのが目的です。今回は最初の段階として`sealed class`を使ってViewModelをきれいに書く方法です。# 対象
– [ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel?hl=ja)を利用している方(MVVMのViewModelというよりはAndroidのViewModelライブラリ)
– kotlinが読める方# LiveDataの型をどうしていますか?
例えば画面に表示する文字列をViewModelで管理する場合、下記のようにLiveDa
Vysorを使ってスマホ画面をパソコン画面に表示
# Vysorを使ってスマホ画面をパソコン画面に表示
タイトルがチープにだが要はミラーリングしたい
スマホ画面をパソコン画面に表示する方法はいくつがあるがVysorを使う方法が一番簡単だった## ダウンロード
Vysorをダウンロード、Windows、Mac両方で使うことが出来る。
Android、iOS両方に対応している。
https://www.vysor.io/## Android接続
今回はサンプルとしてAndroid画面をパソコンに転送
先にAndroidのUSBデバッグを許可する。
https://support.vysor.io/technical/notfound/USBデバッグを許可しAndroidとパソコンをUSB接続
Android Devicesに端末が表示される。
![スクリーンショット 2021-03-14 12.59.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59264/5d1045fa-91cf-4f03-c90d-296b648c511c