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.
これを使わないと意味ないな...