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

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

Koinを使ってActivity/Fragment間で共有するViewModelをDIする

– build.gradle

“`kotlin
buildscript {
ext.kotlin_version = ‘1.4.10’
ext.koin_version = ‘2.1.6’
repositories {
google()
jcenter()
}
dependencies {
classpath ‘com.android.tools.build:gradle:4.0.2’
classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version”
classpath “org.koin:koin-gradle-plugin:$koin_version”
}
}
“`

– app/build.gradle

“`kotlin
dependencies {
implementation “org.koin:koin-android:$koin_version”

元記事を表示

Android SIP API : keep alive の動作について

SipProfile.getSendKeepAlive は、keep alive を行うかどうかを取得します。

keep alive について、リファレンスでは以下のようにあるだけです。

[SipProfile getSendKeepAlive](https://developer.android.com/reference/android/net/sip/SipProfile#getSendKeepAlive())
> the flag of sending SIP keep-alive messages

[SipProfile.Builder setSendKeepAlive](https://developer.android.com/reference/android/net/sip/SipProfile.Builder#setSendKeepAlive(boolean))
> boolean:true if sending keep-alive message is required, false otherwise

以下も、keep alive の記述はありま

元記事を表示

Android Navigation ComponentのNested Graphのargumentをxmlの1階層目に置く理由を調べてみた

## NestedGraphに値を渡す方法は2パターンあるらしい。。

NavigationComponentを使いはじめの頃、
画面遷移図がややこしくなってきた時にレイアウトxmlと同様にincludeできることを知って、
startDestinationに指定されたfragmentタグの中にargmentを置いてみて動かなかったことがあると思いますが、
[[参考リンク]](https://medium.com/@star_zero/nested-navigation%E3%81%A8safeargs-8f259ab4fbdd) によると別ファイルか同一ファイル内かで書き方が別れてしまうらしい。。。

## なぜこんなにも覚えづらい実装なんだろう。。 :thinking_face:

脳死で覚えるのもいいのですが、複雑な画面遷移ロジックのタスクが2〜3ヶ月来ない間に忘れてしまいそうなので、
何故こんなことになってしまったのかをきちんと内部実装から確認してみることにしました。

## まずxmlからインスタンスに変換している部分を探してみる。。。

レイアウトxmlを使う時には皆さまお

元記事を表示

Android Navigation Componentのツールバーのタイトル挿入機能の内部実装について調べてみた

# ToolBarにsetTitle時に変数を挿入できる。。じゃあ変数以外の部分の多言語化は?

実際に挿入している箇所は下記のコードブロックに抜き出してある通り、
labelというCharSequence型の変数に
`Pattern fillInPattern = Pattern.compile(“\\{(.+?)\\}”);`の
正規表現にマッチする文字が無くなるまでループを回して、
`StringBuffer title = new StringBuffer();`に連結していき
最終的な文字列を`setTitle(title);`しています。

“`Java
CharSequence label = destination.getLabel();
if (!TextUtils.isEmpty(label)) {
// Fill in the data pattern with the args to build a valid URI
StringBuffer title = new StringBuffer();
Pattern fillInPatt

元記事を表示

モダンなアニメーションを実装してみた

# はじめに

現在のモバイル開発においてモダンなアニメーションはなくてはならないものです。
画面遷移の際、共通要素が途切れてしまうとユーザーが困惑してしまうことがあります。

一覧画面から詳細画面へ遷移する際に共通要素を途切れさせないように表示することで実際にユーザーがUIに手を触れているような感覚になります。

以下の動画の通りです。