gpt4 book ai didi

android - 是否可以将 Chrome 自定义标签作为 View 对象

转载 作者:行者123 更新时间:2023-12-03 13:25:30 39 4
gpt4 key购买 nike

目前,这就是我实现 Chrome 自定义标签的方式

String url = "http://www.google.com/";
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
CustomTabsIntent customTabsIntent = builder.build();
customTabsIntent.launchUrl(WelcomeFragment.this.getActivity(), Uri.parse(url));

我想知道,是否可以将 Chrome 自定义标签作为 View 对象?

我问的原因是,以前,我有一个 fragment ,它有 ViewAnimator目的。 ViewAnimator将依次在 2 WebView 之间进行动画处理s。

一个 WevView正在显示网页的移动版本。另一个 WebView正在显示网页的桌面版本。

这是用于在 2 WebView 之间交替的代码s
public void updateWebView() {
int index = getCurrentWebViewHolderIndex();
final WebViewHolder webViewHolder = webViewHolders[index];
if (webViewHolder == null) {
return;
}

final WebView webView = webViewHolder.webView;

boolean loadUrl = false;
boolean reload = false;

synchronized (monitor) {
if (false == webViewHolder.loadUrl) {
webViewHolder.loadUrl = true;
loadUrl = true;
} else if (webViewHolder.error) {
webViewHolder.error = false;
reload = true;
}
}

if (loadUrl) {
webView.loadUrl(getUrl(index));
} else if (reload) {
webView.reload();
}

final WebViewFragmentActivity activity = (WebViewFragmentActivity)WebViewFragment.this.getActivity();
if (activity != null) {
final int progress = webViewHolder.progress;

if (progress >= 100) {
activity.setProgressBarVisibilityEx(false);
} else {
activity.setProgressBarVisibilityEx(true);
activity.setProgressEx(progress);
}
}

if (index == 0) {
// Slide from left.
Animation slideInLeftFast = AnimationUtils.loadAnimation(this.getActivity(), R.anim.slide_in_left_fast);
Animation slideOutRightSlow = AnimationUtils.loadAnimation(this.getActivity(), R.anim.slide_out_right_slow);
this.webViewViewAnimator.setInAnimation(slideInLeftFast);
this.webViewViewAnimator.setOutAnimation(slideOutRightSlow);
} else {
// Slide from right.
Animation slideInRightFast = AnimationUtils.loadAnimation(this.getActivity(), R.anim.slide_in_right_fast);
Animation slideOutLeftSlow = AnimationUtils.loadAnimation(this.getActivity(), R.anim.slide_out_left_slow);
this.webViewViewAnimator.setInAnimation(slideInRightFast);
this.webViewViewAnimator.setOutAnimation(slideOutLeftSlow);
}

if (webViewViewAnimator.getChildCount() >= 2) {
webViewViewAnimator.removeViewAt(0);
}
webViewViewAnimator.addView(webView);
webViewViewAnimator.setDisplayedChild(webViewViewAnimator.getChildCount() - 1);
}

这是 XML 代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/web_view_linear_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_horizontal" >

<ViewAnimator
android:id="@+id/web_view_view_animator"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>

</LinearLayout>

有人告诉我 Chrome Custom Tabs性能比 WebView 好得多.

但是,我没有找到让单个 fragment 包含 2 个不同的 Chrome 自定义选项卡的方法。因为,他们是 Intent ,而不是 View .

但是,有什么办法可以让 Chrome 自定义标签作为 View 对象?

最佳答案

Chrome 自定义选项卡将在全屏上启动自己的 UI。你不能像 XML 或 Java/Kotlin 中的 View 那样拥有它。
根据此处的文档 - https://developer.chrome.com/docs/android/custom-tabs/overview/ ,它只允许您在 UI 中自定义 3 件事 -

  • 工具栏颜色
  • 进入和退出动画
  • 为浏览器工具栏、溢出菜单和底部工具栏添加自定义操作
  • 关于android - 是否可以将 Chrome 自定义标签作为 View 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43158470/

    39 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com