Android だけではありません.
iPhone やタブレットやMacなどすべてが
分かりやすくまとめられています.
Device Metrics - Google Design




いままでなんでなかったのか.
とりあえず, デザインや開発に便利に使えますね.
Android だけではありません.
iPhone やタブレットやMacなどすべてが
分かりやすくまとめられています.
Device Metrics - Google Design




いままでなんでなかったのか.
とりあえず, デザインや開発に便利に使えますね.
![]()
[I/O 2015] Chrome Custom Tabs Will Add Easy And Rich Web Content To Any App With Chrome Capabilities
サービス経由で「ウォームアップ」,「URL先読み」を行って
高速に開く.
公開されている Googleサンプルのうち利用するヘルパークラスなどは
前回エントリを参照.
ウォームアップも同時に行う.
アクテビティのライフサイクルに合わせて.
public class SampleActivity extends AppCompatActivity
implements CustomTabActivityHelper.ConnectionCallback {
private CustomTabActivityHelper mCustomTabActivityHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCustomTabActivityHelper = new CustomTabActivityHelper();
mCustomTabActivityHelper.setConnectionCallback(this);
}
@Override
protected void onStart() {
super.onStart();
mCustomTabActivityHelper.bindCustomTabsService(this);
}
@Override
protected void onStop() {
super.onStop();
mCustomTabActivityHelper.unbindCustomTabsService(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
mCustomTabActivityHelper.setConnectionCallback(null);
}
@Override
public void onCustomTabsConnected() {
}
@Override
public void onCustomTabsDisconnected() {
}
}
開くであろうURLが確定した時点でバックグランドで先読み.
mCustomTabActivityHelper.mayLaunchUrl(uri, null, null);
前回とほぼ同じ.
タイトル, アニメーションを付けてなめらかな体感に.
R.anim.slide_* はサンプルのものを利用.
CustomTabsIntent customTabsIntent =
new CustomTabsIntent.Builder(mCustomTabActivityHelper.getSession())
.setShowTitle(true)
.setStartAnimations(this, R.anim.slide_in_right, R.anim.slide_out_left)
.setExitAnimations(this, android.R.anim.slide_in_left, android.R.anim.slide_out_right)
.build();
CustomTabActivityHelper.openCustomTab(this, customTabsIntent, uri, new WebViewFallback());
public class SampleActivity extends AppCompatActivity
implements CustomTabActivityHelper.ConnectionCallback {
private CustomTabActivityHelper mCustomTabActivityHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCustomTabActivityHelper = new CustomTabActivityHelper();
mCustomTabActivityHelper.setConnectionCallback(this);
}
private void preFetchUrl(Uri uri) {
mCustomTabActivityHelper.mayLaunchUrl(uri, null, null);
}
private void open(Uri uri) {
CustomTabsIntent customTabsIntent =
new CustomTabsIntent.Builder(mCustomTabActivityHelper.getSession())
.setShowTitle(true)
.setStartAnimations(this, R.anim.slide_in_right, R.anim.slide_out_left)
.setExitAnimations(this, android.R.anim.slide_in_left, android.R.anim.slide_out_right)
.build();
CustomTabActivityHelper.openCustomTab(this, customTabsIntent, uri, new WebViewFallback());
}
@Override
protected void onStart() {
super.onStart();
mCustomTabActivityHelper.bindCustomTabsService(this);
}
@Override
protected void onStop() {
super.onStop();
mCustomTabActivityHelper.unbindCustomTabsService(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
mCustomTabActivityHelper.setConnectionCallback(null);
}
@Override
public void onCustomTabsConnected() {
}
@Override
public void onCustomTabsDisconnected() {
}
}
イベントからプリフェッチしてからのオープンすればよい.
しかし「先読みのタイミング」て…
(つづく)
スマホでブラウザを起動する, っての最近では面倒.
LINEとかメッセージでリンクを送ってくる人とか.

さりげなく開かずにテキトーな会話を続けたりします.
考えてみると「なんかブラウザって重いしトロい」から.
そこで, 最近登場したのが「Chrome Custom Tabs」というしくみ.
Chrome Custom Tabs - Google Chrome

表示までが非常に高速化されてるようにに見える.
実装しようとサンプルをダウンロードしてみる.
GoogleChrome/custom-tabs-client
アプリ内モジュールやヘルパーやプロセス間の通信など
依存関係があるのでわかりづらい.
とりあえずシンプルにURLを渡すだけでで起動してみたいだけなので以下で.
compile 'com.android.support:customtabs:23.0.1'
サンプル内モジュール customtabs 以下は不要.
CustomTabsHelper
KeepAliveService
CustomTabActivityHelper
WebViewFallback
shared というモジュールは作らずベタクラスとしてコピペ.
アプリ内モジュール依存はなしで.
...
Uri uri = Uri.parse("http://google.com/");
CustomTabsIntent customTabsIntent =
new CustomTabsIntent.Builder().build();
CustomTabActivityHelper
.openCustomTab(this, customTabsIntent, uri, new WebViewFallback());
...
UIカスタマイズはしない. するならここで.
...
//Intent intent = new Intent(activity, WebViewActivity.class);
//intent.putExtra(WebActivity.EXTRA_URL, uri.toString());
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(uri);
activity.startActivity(intent);
...
Chromeアプリ (stable/beta/dev) をインストールしてない場合は,
デフォルトブラウザなどに暗黙的に投げる.
起動はできる.
が, これだけでは恩恵にありつけない.

サイト内検索などはできるようにはなるが
「なんかブラウザって重いしトロい」が解消せず.
以下の機能があるという.
Pre-warming of the Browser in the background, while avoiding stealing resources from the application.
Providing a likely URL in advance to the browser, which may perform speculative work, speeding up page load time.
これを使わないと意味ないな...