31

最近添加了这个支持库,但我找不到任何示例。

这个图书馆的目的是什么?

你能发布任何使用这个库的例子吗?

4

3 回答 3

34

CustomTabs用于在支持CustomTabs. 最有可能在 Chrome 上完成打开,因此CustomTabs是铬平台的一部分。

目的是避免在您的应用程序中实现 WebView,但为您提供设置实际 chrome 选项卡样式的选项,例如工具栏颜色、标题、各种退出/进入转换、添加操作按钮和菜单。CustomTabs将允许您的应用程序绑定到 chrome 服务并使 chrome 作为您应用程序的一部分工作。样式会让您感觉打开的 Web 资源是您的应用程序的一部分。

除了样式之外,CustomTabs 还将为您提供完整的 chrome web 功能,这些功能可能无法通过标准WebView.

这是演示,它们是直截了当的。

编辑:

我的应用程序的一个片段,它是谷歌演示的“简化”版本,目前缺少回退机制。

助手的用法如下:

  1. 当你的活动还活着时初始化它

      @Override
      protected void onCreate(Bundle savedInstanceState) { 
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_preview);
         mCustomTabHelper = new SimpleCustomChromeTabsHelper(this);
}
2. 当实例处于活动状态并且我们有一个可以打开的 url 时,我们可以调用:

mCustomTabHelper.prepareUrl(mProduct.getRedirectUrl());

它将绑定到 Chrome 服务,如果之前没有绑定,或者只是通知 Chrome 服务我们将来可能会打开该链接。 CustomTabSession可用于打开或准备多个url。

  1. 打开网址

    mCustomTabHelper.openUrl(mProduct.getRedirectUrl());

的重载方法openUrl是使用某种 ui 选项构建器,它是 的副本CustomTabIntent.Builder,但我已经删除了CustomTabsSession参数,因此稍后将在CustomTabIntent内部构建助手。

我正在运行稳定版的 Chrome 开发版。如果我选择稳定的,我根本无法使用CustomTabs。正如 Google 建议的那样,CustomTabs 仅适用于 Chrome 45 和测试版 Chrome。

我的应用程序演示:https ://youtu.be/fnIZwuJXjHI

编辑发布

于 2015-08-24T11:31:58.487 回答
2

试试这个:

梯度依赖:

dependencies {
    ...
    compile 'com.android.support:customtabs:25.1.0'
}

代码 :

Uri uri = Uri.parse("https://github.com/mzelzoghbi");

// create an intent builder
CustomTabsIntent.Builder intentBuilder = new CustomTabsIntent.Builder();

// Begin customizing
// set toolbar colors
intentBuilder.setToolbarColor(ContextCompat.getColor(this, R.color.colorPrimary));
intentBuilder.setSecondaryToolbarColor(ContextCompat.getColor(this, R.color.colorPrimaryDark));

// build custom tabs intent
CustomTabsIntent customTabsIntent = intentBuilder.build();

// launch the url
customTabsIntent.launchUrl(activity, uri);
于 2017-01-11T14:00:18.300 回答
0

@NikolaDespotoski 提到的github 上有演示项目,可以部分重用。

解决方案基于这篇文章

  1. 将项目共享添加到您的项目。Shared 是项目的名称(我不知道为什么 Google 没有将它添加到customtabs库中)。链接到共享项目

  2. 将 Activity 助手从演示项目复制到您的项目并放置正确的包。CustomTabActivityHelper

  3. 预取 url 使用CustomTabActivityHelper#mayLaunchUrl方法(如果需要)并CustomTabActivityHelper#openCustomTab打开 Chrome 自定义选项卡。

例如打开自定义选项卡:

CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder().build();
CustomTabActivityHelper.openCustomTab(this, customTabsIntent, uri,
        new CustomTabActivityHelper.CustomTabFallback() {
            @Override
            public void openUri(Activity activity, Uri uri) {
                Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                startActivity(intent);
            }
        });

url 的预取比较复杂。您可以查看此演示以更好地理解。

于 2016-04-21T08:10:25.977 回答