Android
Android の layout ファイルでは <merge></merge> というタグを使うことができます。 この記事ではそのタグの使い方について書いていきたいと思います。 どのように使うのか レイアウトファイルのルートタグとして <merge></merge> を設置します。 そのタグの中に任意のタグを配置して使い…
導入 Android 11 から Wireless Debugging が導入されました。 Android 11 以前のAndroid 端末でもできてはいたようですが Android 11 からは専用のUIが Developer option に実装され、かつ adb からも使いやすいコマンドが使えるようになったという認識をし…
前提条件 Android 11 以降 何をするのか WindowInsets に追加された機能を組み合わせることでキーボードを表示・非表示にしたり現在の表示状態をコントロールして遊べそうだったので検証してみた記事です。 ソースコード 今回遊んだコードはこんな感じです。…
Android 11 から カスタムToast が非推奨になるようです。 カスタムToast とは 一般的な Toast はテキストが画面の下部に一定時間表示されてユーザーに通知を送ることができる機能です。 by https://developer.android.com/guide/topics/ui/notifiers/toasts…
ContextThemeWrapperとは 任意のContextのThemeを上書きしたContextを作成することができるものです。 何ができるのか Viewの作成などを行う場合にContextThemeWrapper を使い作成したContextを渡すことで作成時点に指定した任意のThemeを利用してViewを作る…
github.com 普通のKotlin のコードで表現してねって感じらしい.
導入 ViewGroup 全体でダブルタップを検知したいときありますよね?そんな時の解決方法です。 前提条件 Android アプリ ViewGroup 内でダブルタップされたら検知したい 提案手法 対象となるViewGroup に GestureDelector をセットして監視する。 手順 検知し…
ViewPager2 を使って開発をしているときにスワイプされたくない時があると思います。 ただ、xmlから向こうにすると任意のタイミングでスワイプできるかの管理をできなくなります。 そのため、今回のような記事のことが必要になります。 結論 ViewPage2に生え…
tensorflow に付属しているサンプルを実行しようとすると以下のようなエラーが発生することがあります。 今回は、それを解決したいと思います。 クラス Zerosで宣言されているTはObjectを拡張します /Users/kuxu/.ghq/github.com/tensorflow/tensorflow/tens…
Gradle 芸でモジュール数が増えても記述が多くならない様にして見ました。 feature/data の名前でモジュールをフォルダ分けしてたりするので複数のフォルダを見たいときでもいい感じになる様にしてみました。 ['feature', "data"] .asList() .each { folderN…
暗記とか苦手なので書く。 重要なのは、 android.R.id.content で Activity の乗ってる View を取ってきてそこに表示してる fun Fragment.showSnackbar( text: String, @BaseTransientBottomBar.Duration length: Int = Snackbar.LENGTH_SHORT ) { Snackbar.…
ソリューションはあるけど、拡張関数でシュッと解決してくれるものがググっても出てこなかったので書きました。 ソースコード inline fun <reified T> Gson.fromJson( json: String ): T { return this.fromJson( json, object : TypeToken<T>() {}.type ) } 一番シュッと</t></reified>…
横に長くて解像度の良いディスプレイを書いました。 買ったやつの特徴 横に広い 解像度が高い USB-C に対応してる HDMI に対応してる リモコン付き Amazonで翌日に届く 一応、ゲーミングとか色がなんちゃらとか書いてありますが興味なのでどうでもいいです。…
この前ハッカソンで Android アプリでOS組み込みの音声合成エンジンを使って TextToSpeechを実装してたのでその時の知見を共有します。 実装方法 1. AndroidFramework に含まれている TextToSpeech Class を利用するだけです。 developer.android.com 2. ラ…
Android 10 から設定画面をユーザーアプリが起動しているときに画面を遷移せずに表示することができるようになっています。 今回はこちらようにアプリ内に設定画面の一部を表示してみたいと思います。 ここでは、設定アプリの一部を表示と書きましたが、正確…
この記事を開いた皆さんは、タイトルのように Android 端末で Suica に触れたときにアプリが起動してUIDを読み取ろうとしている奇特な人だと思います。 NfcAdapter と言うクラスを利用することであれこれをお任せすることができます。 ここで重要になってく…
Gradle Task に引数を渡す Gradle Task を実行するときに引数を渡したいときがあると思います。 build.gradle内で完結している場合には、以下のように lateinit var な変数を定義すれば値を渡すことができます。 lateinit var userName: String さて、build.…
am コマンドの -d オプションで指定すれば行けそう am start -a android.intent.action.VIEW -d "https://google.com"
RecyclerView を使って何かする時に ListAdapter を使ってますか? DIFFUtil を使うときに合わせて使うことが多いかなと思います。 問題点 submitList しても非同期で挿入されるため、 SubmitList() した直後にRecyclerView(Adapter) に対してあれこれすると…
基本的には、 Transformations の拡張関数の集合です。 implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.1.0-alpha04" class MainActivityViewModel : ViewModel() { private val source1LiveData = Source1Livedata() // 同じものが流れてき…
せっかく東京にいるので、ということで AAC の勉強会に参加してきました。 Google で開催されてました。 GDE な人がたくさんいており技術難易度も結構高めだった気がします。 感想 めちゃめちゃ勉強になりました。 AAC は普段使っていてノリで色々しているの…
Kotlin-DSL を書こうとしていて色々つまづくことがあります。そんな時に参考にすると良さそうなリポジトリ。 プレーンなやつからBuildSrc を利用したりするやつまである程度揃ってる。 github.com
Live Data を使ったコードのテストを記述する場合にはメインスレッドで実行しなければいけない Live data をUnit Test であれこれする時には、 MainThread で実行しなければいけないという制限が問題になります。 具体的には、 LiveData の setValue メソッ…
Unit Test 等で lambda 関数 を使用しているところで呼び出しログと呼び出し回数を記録したいことはたまによくあると思います。 そこで、記録できる便利クラスを書いてみました。 機能 呼び出しログの記録 回数の記録と検証(指定された回数呼び出されてなか…
そういえば、毎回ググってたなぁと思って書いた。 覚えるほどではないのに使うんですよね。。 <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" style="?android:attr/progressBarStyleLarge" /></progressbar>
Chrome Custom Tabs には Pre Fetch という機能が存在します。 これは、 Chrome Custom Tabs でウェブページを表示する前に事前に読み込んでおくことで表示速度の最適化を行える機能です。 自前実装しようとすると大変なこの機能ですが、 Google Chrome の機…
ChromeCustomTabs を使うときに必要になるパッケージ名が Androidx では変更されていたため記事にします。 具体的には、以下のパッケージになっているようです。 implementation "androidx.browser:browser:1.0.0" 以下にパッケージの詳細が書いてあります。…
ForeGround に以下の属性を適用させるとできます。 android:foreground="?android:attr/selectableItemBackground"
体調崩して投稿が遅れてしまいました/// DroidKaigi とは 02/7-02/8 に 新宿で開催された Android App Developer のためのカンファレンスです。 前日に shibuya.spk とかも開催されてたので前日に参加してたりしました。 参加した理由 Android アプリ開発の…
導入 Android アプリ開発をしていると各Module ごとに依存しているライブラリのバージョンや種類がバラバラになって後で苦労することは多々あると思います。 私の認識では、依存するライブラリを集中管理するためのテクニック。について書きます。 英語でグ…