日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 打开网页之CustomTabs

發布時間:2023/12/8 Android 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 打开网页之CustomTabs 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一般打開url有以下幾種方式:

  • 調用默認瀏覽器
  • 用WebView
  • 用CustomTabsIntent

默認瀏覽器的話,是跳轉到別的app,我方app就切換到后臺了,至于什么時候返回回來就不確定了,且在后臺有被回收的風險,不利于業務開展,如果是打開瀏覽器之后就完成任務的情況,可以使用。

WebView是我們比較常用的,如果頁面可控,且需要交互的,還是建議使用webview的。

CustomTabs在用戶的默認瀏覽器中顯示網頁,相當于在自己的app中用默認瀏覽器打開網頁,效果類似WebView,但使用起來比WebView輕量,也更安全,性能更好。

今天主要說說CustomTabs。

效果:


這是打開應用寶的一個App下載鏈接。可以看到加載速度還是很快的,就像打開activity一樣。

引入

customtabs其實是browser包下的,browser是jetpack下的,現在統一納入到androidx。

dependencies {implementation "androidx.browser:browser:1.3.0" }

使用

簡單使用的話,只要一行代碼

CustomTabsIntent.Builder().build().launchUrl(context, uri)

就這么簡單。

上面提到效果圖中打開網頁像打開activity一樣,如果更像呢,主題一直是不是更像了。

定制ui

CustomTabsIntent也支持定制ui

//設置顏色方案 val schemeParams = CustomTabColorSchemeParams.Builder().setToolbarColor(ContextCompat.getColor(context, R.color.colorPrimary)).setSecondaryToolbarColor(ContextCompat.getColor(context, R.color.colorPrimaryDark)).build()CustomTabsIntent.Builder().setDefaultColorSchemeParams(schemeParams).build().launchUrl(context, uri)

CustomTabColorSchemeParams支持

  • toolbarColor
  • secondaryToolbarColor
  • navigationBarColor
  • navigationBarDividerColor

看看效果

菜單

比如setActionButton

val bitmap = BitmapFactory.decodeResource(this.resources, R.mipmap.ic_setting) val intent = Intent(context, LoginActivity::class.java) val activity = PendingIntent.getActivity(context, 0, intent, 0) //內置啟動 CustomTabsIntent.Builder().setActionButton(bitmap, "自定義Action", activity).setDefaultColorSchemeParams(schemeParams).build().launchUrl(context, uri)

這里用PendingIntent指定后續操作,比如打開一個頁面或者發送一個廣播。

可以看到右上角多了一個設置的小圖標。

除此之外還有很多別的api,比如:

  • addMenuItem(String label, PendingIntent pendingIntent)
  • setCloseButtonIcon(Bitmap icon)
  • setShowTitle(boolean showTitle)
  • 等等

完整代碼

btn_launch.setOnClickListener {openWebPage(this, Uri.parse("https://www.baidu.com"))}...private fun openWebPage(context: Context, uri: Uri) {if (context.isChromeSupported()) {//設置顏色方案val schemeParams = CustomTabColorSchemeParams.Builder().setToolbarColor(ContextCompat.getColor(context, R.color.colorPrimary)).setSecondaryToolbarColor(ContextCompat.getColor(context, R.color.colorPrimaryDark)).build()val bitmap = BitmapFactory.decodeResource(this.resources, R.mipmap.ic_setting)val intent = Intent(context, LoginActivity::class.java)val activity = PendingIntent.getActivity(context, 0, intent, 0)//內置啟動CustomTabsIntent.Builder().setActionButton(bitmap, "自定義Action", activity).setDefaultColorSchemeParams(schemeParams).build().launchUrl(context, uri)} else {//啟動默認瀏覽器context.startActivity(Intent(Intent.ACTION_VIEW, uri))}}private fun Context.isChromeSupported(): Boolean {val serviceIntent = Intent(CustomTabsService.ACTION_CUSTOM_TABS_CONNECTION)serviceIntent.setPackage("com.android.chrome")val resolveInfos = packageManager.queryIntentServices(serviceIntent, 0)return !resolveInfos.isNullOrEmpty()}

感謝

  • 官方文檔
  • 提升體驗-支持Chrome Custom Tabs

總結

以上是生活随笔為你收集整理的Android 打开网页之CustomTabs的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。