#はじめに
二日目を担当させていただきます。
よろしくお願いします。
普段、Androidアプリの開発を担当しています。
ネイティブ化を進めていますが、
なんやかんやまだwebページを表示するという場合がまだあるのが現状なので、
試そう試そうと思ってできていなかった、ChromeCustomTabsについて書きます!
#ChromeCustomTabsを使ってみる
アプリでwebページを表示する際WebViewを使っていたのですが、
設定項目も多く結構自分で作り込まなければならない部分が多いのです...
(参考:WebView)
ユーザーがアプリを何気なく使っていて、
ムム!ここから急に遅い!って感じさせてしまうこともやはり良くない..
と、いうことでGoogle I/O 2015で発表されたChromeCustomTabsです。(もう1年前..w)
高速で動くと聞いていたので、期待!
最低限だと、下記で動きます。
dependencies {
compile 'com.android.support:customtabs:23.1.1'
}
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
final CustomTabsIntent tabsIntent = builder
.setShowTitle(true)
.enableUrlBarHiding().build();
tabsIntent.launchUrl(this, Uri.parse("url"));
導入はとっても簡単でした。
弊社の公式ページを表示してみました。
ただ、これだと普通に外部ブラウザを開いた感ですよね。
#ChromeCustomTabsをカスタマイズしてみる
ちょっといじってみます!
・toolbar変更(せっかくなのでコーポーレートカラーにw)
・closeボタン変更
・アクションとしてシェア機能を追加
・下にスクロールした時にtoolbarを消す
これらを追加したのが、下記です。
//シェア機能の処理
final Intent intent = new Intent(Intent.ACTION_SEND)
.setType("text/plain")
.putExtra(Intent.EXTRA_TEXT, "url");
final PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
final Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_share);
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
//toolbarの色、閉じるボタン設定
final CustomTabsIntent tabsIntent = builder
.setShowTitle(true)
.setToolbarColor(ContextCompat.getColor(this, R.color.orange))
.setCloseButtonIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_arrow_back))
.enableUrlBarHiding()
.setActionButton(icon, "share", pendingIntent).build();
tabsIntent.launchUrl(this, Uri.parse("url"));
公式で速さの比較がされていましたが、真似して自分も3パターンを表示してみました。
左から、
①ChromeCustomTabsを使ってカスタマイズしたもの
②外部ブラウザで開いたもの
③WebView(最低限の実装だとうまく対応してくれなかったのでちゃんと開けずすみませんw
今回はwebviewが主役ではないので一旦これでw)
少しカスタマイズしただけですが、
最低限のものと比べるとアプリっぽく馴染んだかと思います。
速さは1ページだと若干伝わりにくいですかね?
違いが伝わってるかちょっと不安になってきましたが、
気にして見てもらえると、結構いろんなアプリで使われています!
#所感
今回は公式ページで試しましたが、ECアプリ等で途中までしかネイティブ化出来てない!
という時に違和感なく操作してほしい場合は、とても有効だと思いました!
アプリから離れてwebページに遷移したときに感じるストレスを軽減できそうです。
今後現場などで本格的に導入する場合は、
遷移のときにアニメーションを加えたり、まだまだやりようがありそうなので色々検討しようと思います。
余談ですが、gifを貼るのが地味に苦労しましたw
ちゃんと動いてるか不安ですw
簡単にはなりますが、以上です!
#明日の担当は
EichiSandenさん!
よろしくお願いします^^
また、合同ビアバなり飲み会なりしましょうw