自定义标签支持库

时间:2015-08-24 11:24:00

标签: android android-support-library android-customtabs

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

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

您可以使用此库发布任何示例吗?

3 个答案:

答案 0 :(得分:32)

CustomTabs用于在支持CustomTabs的浏览器中打开链接。最有可能的开放是在Chrome上完成的,因此CustomTabs是Chrome平台的一部分。

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

除了样式之外,CustomTabs还将为您提供完整的Chrome网页功能,这些功能可能无法通过标准WebView实现。

以下是demos,这是直截了当的。

修改

snippet from my application,简化了""谷歌演示的版本,目前缺乏回退机制。

帮助程序的用法如下:

  1. 当您的活动活着时将其初始化
  2.       @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可用于打开或准备多个网址。

    1. 打开网址

      mCustomTabHelper.openUrl(mProduct.getRedirectUrl());

    2. openUrl的重载方法使用的是ui选项构建器,它是CustomTabIntent.Builder的副本,但我删除了CustomTabsSession参数,以便稍后构建帮助器{{1在内部。

      我正在运行Chrome Dev版本。如果我选择稳定版,我根本无法使用CustomTabIntent。根据Google的建议,CustomTabs仅适用于Chrome 45和Beta版Chrome。

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

      修改Post

答案 1 :(得分:0)

@NikolaDespotoski提到的demo project on github可以部分重复使用。

解决方案基于this article

  1. 将项目共享添加到您的项目中。共享是项目的名称(我不知道为什么Google没有将其添加到customtabs库中)。 link to shared project

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

  3. 要预先获取网址,请使用CustomTabActivityHelper#mayLaunchUrl方法(如果需要)和CustomTabActivityHelper#openCustomTab打开Chrome自定义标签。

  4. 例如,打开自定义标签:

    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);
                }
            });
    

    预取网址更复杂。您可以看到this demo以便更好地理解。

答案 2 :(得分:0)

试试这个:

gradle依赖:

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);