自定义选项卡支持库
Custom Tabs Support Library
最近添加了这个支持库,但找不到任何示例。
这个库的用途是什么?
你能post任何使用这个库的例子吗?
CustomTabs
用于在支持CustomTabs
的浏览器中打开links。最有可能在 Chrome 上完成打开,因此 CustomTabs
是 chromium 平台的一部分。
目的是避免在您的应用程序中实施 WebView,同时为您提供设置实际 chrome 选项卡样式的选项,例如工具栏颜色、标题、各种 exit/enter 转换、添加操作按钮和菜单。 CustomTabs
将允许您的应用程序绑定到 chrome 服务并使 chrome 作为您应用程序的一部分工作。样式会让您感觉打开的 Web 资源是您的应用程序的一部分。
除了样式之外,CustomTabs 将为您提供标准 WebView
.
可能无法实现的完整 chrome Web 功能
这里是demos,很直接。
编辑:
A snippet from my application 是 Google 演示的 "simplified" 版本,目前缺少回退机制。
助手的用法如下:
- 当你的 activity 活着时初始化它
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_preview);
mCustomTabHelper = new SimpleCustomChromeTabsHelper(this);<br>
}
</pre>
2. 当实例处于活动状态并且我们有一个 url 准备好打开时,我们可以调用:
mCustomTabHelper.prepareUrl(mProduct.getRedirectUrl());
它将绑定到 Chrome 服务,如果之前没有绑定,或者只会通知 Chrome 服务我们将来可能会打开 link。
CustomTabSession
可以用来打开或准备多个url.
打开url
mCustomTabHelper.openUrl(mProduct.getRedirectUrl());
openUrl
的重载方法正在使用 ui 选项 builder,它是 CustomTabIntent.Builder
的副本,但我删除了 CustomTabsSession
参数,所以 helper 稍后将在内部 build CustomTabIntent
。
我是 运行 Chrome 开发版和稳定版。如果我选择稳定版,我根本无法使用 CustomTabs
。作为 Google 的建议,CustomTabs 仅适用于 Chrome 45 和 Chrome 的 beta 版本。
来自我的应用程序的演示:https://youtu.be/fnIZwuJXjHI
编辑:Post
@NikolaDespotoski 提到了 demo project on github,它可以部分重用。
解决方案基于this article。
将项目 shared 添加到您的项目。 Shared 是项目的名称(我不知道为什么 Google 没有将它添加到 customtabs
库中)。 link to shared project
将演示项目中的 Activity 帮助程序复制到您的项目中,并放置正确的包。 CustomTabActivityHelper
要预取 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 的预取比较复杂。可以看this demo更好理解
试试这个:
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);
最近添加了这个支持库,但找不到任何示例。
这个库的用途是什么?
你能post任何使用这个库的例子吗?
CustomTabs
用于在支持CustomTabs
的浏览器中打开links。最有可能在 Chrome 上完成打开,因此 CustomTabs
是 chromium 平台的一部分。
目的是避免在您的应用程序中实施 WebView,同时为您提供设置实际 chrome 选项卡样式的选项,例如工具栏颜色、标题、各种 exit/enter 转换、添加操作按钮和菜单。 CustomTabs
将允许您的应用程序绑定到 chrome 服务并使 chrome 作为您应用程序的一部分工作。样式会让您感觉打开的 Web 资源是您的应用程序的一部分。
除了样式之外,CustomTabs 将为您提供标准 WebView
.
这里是demos,很直接。
编辑:
A snippet from my application 是 Google 演示的 "simplified" 版本,目前缺少回退机制。
助手的用法如下:
- 当你的 activity 活着时初始化它
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_preview); mCustomTabHelper = new SimpleCustomChromeTabsHelper(this);<br> } </pre>
2. 当实例处于活动状态并且我们有一个 url 准备好打开时,我们可以调用:
mCustomTabHelper.prepareUrl(mProduct.getRedirectUrl());
它将绑定到 Chrome 服务,如果之前没有绑定,或者只会通知 Chrome 服务我们将来可能会打开 link。
CustomTabSession
可以用来打开或准备多个url.
打开url
mCustomTabHelper.openUrl(mProduct.getRedirectUrl());
openUrl
的重载方法正在使用 ui 选项 builder,它是CustomTabIntent.Builder
的副本,但我删除了CustomTabsSession
参数,所以 helper 稍后将在内部 buildCustomTabIntent
。我是 运行 Chrome 开发版和稳定版。如果我选择稳定版,我根本无法使用
CustomTabs
。作为 Google 的建议,CustomTabs 仅适用于 Chrome 45 和 Chrome 的 beta 版本。来自我的应用程序的演示:https://youtu.be/fnIZwuJXjHI
编辑:Post
@NikolaDespotoski 提到了 demo project on github,它可以部分重用。
解决方案基于this article。
将项目 shared 添加到您的项目。 Shared 是项目的名称(我不知道为什么 Google 没有将它添加到
customtabs
库中)。 link to shared project将演示项目中的 Activity 帮助程序复制到您的项目中,并放置正确的包。 CustomTabActivityHelper
要预取 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 的预取比较复杂。可以看this demo更好理解
试试这个:
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);