shion のアバター画像もくもくログページ一覧ブログ一覧技術メモ一覧ライセンス表記利用規約外部リンクconnpassGitHubSpeaker DeckTwitter[工事中]Shion のもくログバージョン1.2.5

もくもくログ

主にIT 関連のメモをもくもくと綴っていきます

最終更新日:2020/04/19 08:09:442020/04/11 ~ 04/17 のもくもく日記進捗管理

もくもく 前回までは

2020/04/04 ~ 04/10 のもくもく日記 を見てねw

今回の目標

  • Android ライブラリの整備
    • Debugger 1.0.x の実装を進める
    • IntentBuilder 1.1.x の実装を進める
    • WebViewBuilder 1.0.x の実装を進める
  • REPLInDocker シリーズの整備
  • Visual Studio Code の拡張機能作りを試す

途中経過

その1

Android 開発で、権限許可周りの実装でお世話になっているPermissionsDispathcer はktx 版があるようだ。
で試してみたんだけど、簡潔に書けてとても良かった。
今まではアノテーションをつけたメソッドをいくつか定義する必要があって煩雑になりがちだったけど、そこを改善できるのがすごく嬉しいw

ちょこっと個人的に気になる挙動があったので、Issue も立ててみた。

Before

package work.shion.androidpreparation.webviewbuilder

import android.Manifest
import android.os.Bundle
import android.webkit.GeolocationPermissions
import android.webkit.WebView
import androidx.appcompat.app.AppCompatActivity
import permissions.dispatcher.NeedsPermission
import permissions.dispatcher.RuntimePermissions

@RuntimePermissions
class GeoActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.geo)

        WebViewBuilder()
                .geolocationEnabled(true)
                .javaScriptEnabled(true)
                .onGeolocationPermissionsShowPrompt { origin, callback ->
                    invokeGeoWithPermissionCheck(origin, callback)
                }
                .into(findViewById<WebView>(R.id.webview_target))
                .loadUrl("https://www.google.co.jp/maps")
    }

    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        onRequestPermissionsResult(requestCode, grantResults)
    }


    @NeedsPermission(Manifest.permission.ACCESS_FINE_LOCATION)
    fun invokeGeo(origin: String?, callback: GeolocationPermissions.Callback?) {
        callback?.invoke(origin, true, false)
    }
}

After

package work.shion.androidpreparation.webviewbuilder

import android.Manifest
import android.os.Bundle
import android.webkit.WebView
import androidx.appcompat.app.AppCompatActivity
import permissions.dispatcher.ktx.withPermissionsCheck

class GeoActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.geo)

        WebViewBuilder()
                .geolocationEnabled(true)
                .javaScriptEnabled(true)
                .onGeolocationPermissionsShowPrompt { origin, callback ->
                    withPermissionsCheck(
                            Manifest.permission.ACCESS_FINE_LOCATION,
                            onNeverAskAgain = { callback?.invoke(origin, false, false) },
                            onPermissionDenied = { callback?.invoke(origin, false, false) },
                            onShowRationale = { it.proceed() }
                    ) {
                        callback?.invoke(origin, true, false)
                    }
                }
                .into(findViewById<WebView>(R.id.webview_target))
                .loadUrl("https://www.google.co.jp/maps")
    }
}

その2

C# でエクセルの入力規則を設定したんだけど、引数省略可能なのに、標準の検証を使うとフル指定しないといけなくてハマったw

ちなみにエクセル上で同じ操作をしてみると、確かにエラーになったので、一度動作確認してからC# コードにした方がいいかもしれん

その3

マテリアルデザインのUI コンポーネント、色々なプラットフォームに対応しているんだね

好みはあるかもだけど、OS を超えて似たようなUI に出来るのは、とても楽できるので、こういう系の採用と発掘していくのも良いなと個人的に思ったw

今回の成果

関連リンク

成果物

一覧に戻る