6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ChromeCustomTabs for BottomSheet

Last updated at Posted at 2023-02-26

Androidやってるめっしです(Twitter:https://twitter.com/0601messi)
先日こちらのChromeCustomTabsの記事を見て気になったので調べてみました

概要

AndroidアプリでWebURLをタップした際に、ブラウザーを起動するかWebViewを使用して独自のアプリ内ブラウザーを作るなどがあります。
その他の方法として、ネイティブコンテンツとWebコンテンツ間の遷移がよりシームレスになるChromeCustomTabsというものがあります。

そんなChromeCustomTabsが新たにBottomSheetで表示できるようになりました。
では、やってみます。

実装

ライブラリの追加

build.gradle.kts
implementation(androidx.browser:browser:1.5.0) // 最新バージョンを

ChromeCustomTabsの呼び出し

SampleFragment.kt
private val startForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
  // 閉じた時に呼ばれるコールバック。ChromeCustomTabsを閉じた時に何か処理をしたい時はこちらに
}

// 呼び出したいところでlaunchする。
binding.button.setOnClickListener {
  val builder = CustomTabsIntent.Builder()
    .setInitialActivityHeightPx(800) // カスタムタブの初回起動の高さを指定できます
    .setToolbarCornerRadiusDp(16) // ツールバーの上隅角の丸みのサイズを指定できます
  val customTabsIntent = builder.build().intent.apply {
    // 表示させたいURLの設定
    data = Uri.parse("https://developer.android.com/")
  }
  startForResult.launch(customTabsIntent)
}

完成

通常 半分展開 全展開

注意・補足

  • 以下の書き方だとBottomSheetにならなかったのでstartActivityForResultで呼ぶ必要がある。
Fail.kt
val url = "https://google.com/"
val builder = CustomTabsIntent.Builder()
val customTabsIntent = builder.build()
customTabsIntent.launchUrl(this, Uri.parse(url))

おわり

面白いUI系の新機能探してます。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?