Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Yahoo!デベロッパーネットワーク
PDF, PPTX
4,237 views
タブブラウザSDKを作った話 #yjcamp
2017/04/19 CAMPFIRE Android #1 https://yj-meetup.connpass.com/event/53419/
Technology
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 31
2
/ 31
3
/ 31
4
/ 31
5
/ 31
6
/ 31
7
/ 31
8
/ 31
9
/ 31
10
/ 31
11
/ 31
12
/ 31
13
/ 31
14
/ 31
15
/ 31
16
/ 31
17
/ 31
18
/ 31
19
/ 31
20
/ 31
21
/ 31
22
/ 31
23
/ 31
24
/ 31
25
/ 31
26
/ 31
27
/ 31
28
/ 31
29
/ 31
30
/ 31
31
/ 31
More Related Content
PDF
Prestoクエリログの保存/分析機能の構築 #yjdsnight
by
Yahoo!デベロッパーネットワーク
PDF
ニュースアプリで起きた不具合から学んだ 最適への一歩
by
Yahoo!デベロッパーネットワーク
PDF
Presto in Yahoo! JAPAN #yjdsnight
by
Yahoo!デベロッパーネットワーク
PDF
市場で勝ち続けるための品質とテストの技術①
by
Yahoo!デベロッパーネットワーク
PDF
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
by
Yahoo!デベロッパーネットワーク
PDF
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
by
Yahoo!デベロッパーネットワーク
PDF
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
by
Yahoo!デベロッパーネットワーク
PDF
Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~
by
Yahoo!デベロッパーネットワーク
Prestoクエリログの保存/分析機能の構築 #yjdsnight
by
Yahoo!デベロッパーネットワーク
ニュースアプリで起きた不具合から学んだ 最適への一歩
by
Yahoo!デベロッパーネットワーク
Presto in Yahoo! JAPAN #yjdsnight
by
Yahoo!デベロッパーネットワーク
市場で勝ち続けるための品質とテストの技術①
by
Yahoo!デベロッパーネットワーク
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
by
Yahoo!デベロッパーネットワーク
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
by
Yahoo!デベロッパーネットワーク
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
by
Yahoo!デベロッパーネットワーク
Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~
by
Yahoo!デベロッパーネットワーク
What's hot
PDF
決済金融から始めるデータドリブンカンパニー #yjmu
by
Yahoo!デベロッパーネットワーク
PDF
ヤフーにおけるHadoop Operations #tdtech
by
Yahoo!デベロッパーネットワーク
PDF
YJTC18 A-1 大規模サーバの戦略
by
Yahoo!デベロッパーネットワーク
PDF
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
by
Yahoo!デベロッパーネットワーク
PPTX
全社デザインシステムとサービスの付き合い方
by
Yahoo!デベロッパーネットワーク
PDF
Yahoo!ブラウザーにおける市場環境の分析と戦略化
by
Yahoo!デベロッパーネットワーク
PDF
AMPと広告とOpenRTBと #yjmu
by
Yahoo!デベロッパーネットワーク
PDF
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
by
Yahoo!デベロッパーネットワーク
PDF
kukai: 省エネ世界2位のディープラーニング・スパコン
by
Yahoo!デベロッパーネットワーク
PDF
ヤフーでHardeningを実施する意味 (#sec_kansai #sosaisec)
by
Yahoo!デベロッパーネットワーク
PDF
decode17
by
Yahoo!デベロッパーネットワーク
PDF
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
by
Yahoo!デベロッパーネットワーク
PDF
プランニングツールにおけるインタラクティブな可視化を支えるバックエンド
by
Yahoo!デベロッパーネットワーク
PDF
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
by
Yahoo!デベロッパーネットワーク
PDF
Bonfire API #1 APIのリトライ処理
by
Yahoo!デベロッパーネットワーク
PDF
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
by
Yahoo!デベロッパーネットワーク
PDF
Serving Engine as a Service at Yahoo! JAPAN #SolrJP
by
Yahoo!デベロッパーネットワーク
PDF
GitHubを導入したいとき、どう説得していこう #GitHubSatelliteTokyo
by
Yahoo!デベロッパーネットワーク
PDF
Spring Cloud Data Flow の紹介 #streamctjp
by
Yahoo!デベロッパーネットワーク
PPTX
セキュリティ教育とUX ~結ばれていた赤い糸~
by
Yahoo!デベロッパーネットワーク
決済金融から始めるデータドリブンカンパニー #yjmu
by
Yahoo!デベロッパーネットワーク
ヤフーにおけるHadoop Operations #tdtech
by
Yahoo!デベロッパーネットワーク
YJTC18 A-1 大規模サーバの戦略
by
Yahoo!デベロッパーネットワーク
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
by
Yahoo!デベロッパーネットワーク
全社デザインシステムとサービスの付き合い方
by
Yahoo!デベロッパーネットワーク
Yahoo!ブラウザーにおける市場環境の分析と戦略化
by
Yahoo!デベロッパーネットワーク
AMPと広告とOpenRTBと #yjmu
by
Yahoo!デベロッパーネットワーク
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
by
Yahoo!デベロッパーネットワーク
kukai: 省エネ世界2位のディープラーニング・スパコン
by
Yahoo!デベロッパーネットワーク
ヤフーでHardeningを実施する意味 (#sec_kansai #sosaisec)
by
Yahoo!デベロッパーネットワーク
decode17
by
Yahoo!デベロッパーネットワーク
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
by
Yahoo!デベロッパーネットワーク
プランニングツールにおけるインタラクティブな可視化を支えるバックエンド
by
Yahoo!デベロッパーネットワーク
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
by
Yahoo!デベロッパーネットワーク
Bonfire API #1 APIのリトライ処理
by
Yahoo!デベロッパーネットワーク
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
by
Yahoo!デベロッパーネットワーク
Serving Engine as a Service at Yahoo! JAPAN #SolrJP
by
Yahoo!デベロッパーネットワーク
GitHubを導入したいとき、どう説得していこう #GitHubSatelliteTokyo
by
Yahoo!デベロッパーネットワーク
Spring Cloud Data Flow の紹介 #streamctjp
by
Yahoo!デベロッパーネットワーク
セキュリティ教育とUX ~結ばれていた赤い糸~
by
Yahoo!デベロッパーネットワーク
Viewers also liked
PDF
Kotlin と Rxjava2
by
Recruit Lifestyle Co., Ltd.
PPTX
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
by
Toshiyuki Hirata
PDF
"大規模アプリケーション"を支える設計 #yjcamp
by
Yahoo!デベロッパーネットワーク
PDF
WWDC2017 レポート & Quick Look Preview Extension について
by
Yahoo!デベロッパーネットワーク
PDF
Yahoo! JAPANアプリのデータベース処理改善 #yjcamp
by
Yahoo!デベロッパーネットワーク
PPTX
DeNAにおけるSWETの役割
by
Toshiyuki Hirata
Kotlin と Rxjava2
by
Recruit Lifestyle Co., Ltd.
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
by
Toshiyuki Hirata
"大規模アプリケーション"を支える設計 #yjcamp
by
Yahoo!デベロッパーネットワーク
WWDC2017 レポート & Quick Look Preview Extension について
by
Yahoo!デベロッパーネットワーク
Yahoo! JAPANアプリのデータベース処理改善 #yjcamp
by
Yahoo!デベロッパーネットワーク
DeNAにおけるSWETの役割
by
Toshiyuki Hirata
Similar to タブブラウザSDKを作った話 #yjcamp
PDF
スマートフォンブラウザ不具合特集
by
Hiroaki Wakamatsu
PDF
Web1.0のハイブリッドアプリ開発
by
Kenta Tsuji
PPTX
20111204 WebBroser Control Tips for Windows Phone
by
Kenji Wada
PPTX
AndroidではじめるJava
by
Yutaka Tsumori
PPTX
Androidアプリ本格開発入門 webブラウザ編
by
bg1 333
PDF
Fragment の利用パターン
by
Android UI勉強会
PDF
チュートリアルをリッチにしよう
by
shinya sakemoto
PDF
CSS3 / JavaScriptで作るスマートフォンUIと落とし穴
by
西畑 一馬
PPTX
Html5minute #5
by
Misaki Shibata
PDF
Androidハイブリッドアプリを約2年間メンテンナンスしてきて分ったこと
by
Shuichi Takaya
スマートフォンブラウザ不具合特集
by
Hiroaki Wakamatsu
Web1.0のハイブリッドアプリ開発
by
Kenta Tsuji
20111204 WebBroser Control Tips for Windows Phone
by
Kenji Wada
AndroidではじめるJava
by
Yutaka Tsumori
Androidアプリ本格開発入門 webブラウザ編
by
bg1 333
Fragment の利用パターン
by
Android UI勉強会
チュートリアルをリッチにしよう
by
shinya sakemoto
CSS3 / JavaScriptで作るスマートフォンUIと落とし穴
by
西畑 一馬
Html5minute #5
by
Misaki Shibata
Androidハイブリッドアプリを約2年間メンテンナンスしてきて分ったこと
by
Shuichi Takaya
More from Yahoo!デベロッパーネットワーク
PDF
ゼロから始める転移学習
by
Yahoo!デベロッパーネットワーク
PDF
継続的なモデルモニタリングを実現するKubernetes Operator
by
Yahoo!デベロッパーネットワーク
PDF
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
by
Yahoo!デベロッパーネットワーク
PDF
オンプレML基盤on Kubernetes パネルディスカッション
by
Yahoo!デベロッパーネットワーク
PDF
LakeTahoe
by
Yahoo!デベロッパーネットワーク
PDF
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
by
Yahoo!デベロッパーネットワーク
PDF
Persistent-memory-native Database High-availability Feature
by
Yahoo!デベロッパーネットワーク
PDF
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
by
Yahoo!デベロッパーネットワーク
PDF
eコマースと実店舗の相互利益を目指したデザイン #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
ビッグデータから人々のムードを捉える #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
サイエンス領域におけるMLOpsの取り組み #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
「新しいおうち探し」のためのAIアシスト検索 #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
by
Yahoo!デベロッパーネットワーク
ゼロから始める転移学習
by
Yahoo!デベロッパーネットワーク
継続的なモデルモニタリングを実現するKubernetes Operator
by
Yahoo!デベロッパーネットワーク
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
by
Yahoo!デベロッパーネットワーク
オンプレML基盤on Kubernetes パネルディスカッション
by
Yahoo!デベロッパーネットワーク
LakeTahoe
by
Yahoo!デベロッパーネットワーク
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
by
Yahoo!デベロッパーネットワーク
Persistent-memory-native Database High-availability Feature
by
Yahoo!デベロッパーネットワーク
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
by
Yahoo!デベロッパーネットワーク
eコマースと実店舗の相互利益を目指したデザイン #yjtc
by
Yahoo!デベロッパーネットワーク
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
by
Yahoo!デベロッパーネットワーク
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
by
Yahoo!デベロッパーネットワーク
ビッグデータから人々のムードを捉える #yjtc
by
Yahoo!デベロッパーネットワーク
サイエンス領域におけるMLOpsの取り組み #yjtc
by
Yahoo!デベロッパーネットワーク
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
by
Yahoo!デベロッパーネットワーク
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
by
Yahoo!デベロッパーネットワーク
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
by
Yahoo!デベロッパーネットワーク
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
by
Yahoo!デベロッパーネットワーク
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
by
Yahoo!デベロッパーネットワーク
「新しいおうち探し」のためのAIアシスト検索 #yjtc
by
Yahoo!デベロッパーネットワーク
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
by
Yahoo!デベロッパーネットワーク
タブブラウザSDKを作った話 #yjcamp
1.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 小林 俊 Yahoo! JAPAN アプリエンジニア タブブラウザSDK を 作った話 2017年4月20日
2.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. アジェンダ 2 ・自己紹介 ・背景 ・タブブラウザSDKとは ・三桁を実現させるタブの管理 ・WebViewとCoordinatorLayout
3.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 自己紹介 3 名前: 小林 俊(こばやし しゅん) 担当サービス: Yahoo! JAPAN アプリ Android歴:そろそろ2年 アイマス歴:そろそろ10年
4.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 背景 4 Yahoo! JAPANYahoo!ブラウザ ブラウザ機能を持つ2つのアプリ
5.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 背景 5 Yahoo! JAPANYahoo!ブラウザ 実は、共通化されたブラウザ機能を利用
6.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. タブブラウザSDKとは 6 どんな機能があるの?
7.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. タブブラウザSDKとは 7 ・WebView管理 ・タブ管理 ・CoordinatorLayout対応 ・URLスキーマハンドリング ・ページ内検索 ・標準的な振る舞いの提供
8.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. タブブラウザSDKとは 8 ・WebView管理 ・タブ管理 ・CoordinatorLayout対応 ・URLスキーマハンドリング ・ページ内検索 ・標準的な振る舞いの提供
9.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. タブ管理 9 三桁を実現させるタブの管理
10.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 三桁を実現させるタブの管理 10 タブ1 タブ2 タブ3 タブN … WebView1 WebView2 WebView M … 上限M 上限N 全体像 「タブの上限」と 「WebViewの上限」は別扱い
11.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 三桁を実現させるタブの管理 11 タブ1 タブ2 タブ3 上限N WebView1 WebView2 WebView3 上限3 タブ1→2→3の順に開かれた状態 4つ目のタブを開くと?
12.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 三桁を実現させるタブの管理 12 タブ1 タブ2 タブ3 上限N WebView2 WebView3 上限3 タブ4 New!!! WebView4 破棄 新しく4つ目のタブが開かれると 最もアクセス時刻の古いWebView1 が破棄される
13.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 三桁を実現させるタブの管理 13 タブ1 上限N ・open Tab1 ・open Tab2 ・open Tab3 ・attach Tab1 ・attach Tab3 ・open Tab4 上記手順を踏んだ場合はWebView2が破 棄 WebView1 上限3 New!!!
14.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 三桁を実現させるタブの管理 14 タブ1 タブ2 上限N ・open Tab1 ・open Tab2 ・open Tab3 ・attach Tab1 ・attach Tab3 ・open Tab4 上記手順を踏んだ場合はWebView2が破 棄 WebView1 WebView2 上限3 New!!!
15.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 三桁を実現させるタブの管理 15 タブ1 タブ2 タブ3 上限N ・open Tab1 ・open Tab2 ・open Tab3 ・attach Tab1 ・attach Tab3 ・open Tab4 上記手順を踏んだ場合はWebView2が破 棄 WebView1 WebView2 WebView3 上限3 New!!!
16.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 三桁を実現させるタブの管理 16 タブ1 タブ2 タブ3 上限N ・open Tab1 ・open Tab2 ・open Tab3 ・attach Tab1 ・attach Tab3 ・open Tab4 上記手順を踏んだ場合はWebView2が破 棄 WebView1 上限3 再表示 WebView2 WebView3
17.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 三桁を実現させるタブの管理 17 タブ1 タブ2 タブ3 上限N ・open Tab1 ・open Tab2 ・open Tab3 ・attach Tab1 ・attach Tab3 ・open Tab4 上記手順を踏んだ場合はWebView2が破 棄 WebView2 WebView3 上限3 再表示 WebView1
18.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 三桁を実現させるタブの管理 18 タブ1 タブ2 タブ3 上限N タブ4 ・open Tab1 ・open Tab2 ・open Tab3 ・attach Tab1 ・attach Tab3 ・open Tab4 上記手順を踏んだ場合はWebView2が破 棄 WebView1 WebView3 上限3 New!!! WebView4 破棄
19.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 三桁を実現させるタブの管理 19 破棄されたWebView 保存・復元はどうなるか?
20.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 三桁を実現させるタブの管理 20 final Bundle state = new Bundle(); webview.saveState(state); // 保存用のメソッドが用意されている state.putString(“url”, url); state.putString(“title”, title); // あとはファイルへ保存 ■保存
21.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 三桁を実現させるタブの管理 21 // ファイルからBundleを読み込む final String url = state.getString(“url”); final String title = state.getString(“title”); webview.restoreState(state); // 復元も同様に用意されている ■復元
22.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 三桁を実現させるタブの管理 22 まとめ ・タブとWebViewは別々に管理 ・不要なWebViewは小まめに破棄 ・WebViewの saveState/restoreStateが便利
23.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. CoordinatorLayout対応 23 WebViewとCoordinatorLayout
24.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. WebViewとCoordinatorLayout 24 これだけではダメ! <CoordinatorLayout> <AppBarLayout> <Toolbar app:layout_scrollFlags="scroll|enterAlwaysCollapsed" /> </AppBarLayout> <FrameLayout app:layout_behavior=“AppBarLayout$ScrollingViewBehavior"> <WebView /> </FrameLayout> </CoordinatorLayout>
25.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. WebViewとCoordinatorLayout 25 https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html https://developer.android.com/reference/android/webkit/WebView.html WebViewにはNestedScrollingChildが実装され ていない。自分で実装が必要。
26.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. WebViewとCoordinatorLayout 26 public class CommonWebView extends WebView implements NestedScrollingChild { private final NestedScrollingChildHelper mHelper; private float mPrevY; @SuppressWarnings("CheckStyle") private final int[] mConsumed = new int[2]; public CommonWebView(final @NonNull Context context) { super(context); mHelper = new NestedScrollingChildHelper(this); setNestedScrollingEnabled(true); } @Override public boolean onTouchEvent(MotionEvent event) { final int action = event.getAction(); switch (action) { … } return super.onTouchEvent(event); } @Override public void setNestedScrollingEnabled(final boolean enabled) { mHelper.setNestedScrollingEnabled(enabled); } (省略) } これだけでは不十分 ウェブの表現を考慮す る必要がある ・地図操作 ・カルーセル ・ピンチイン・アウト 対応例を次スライドか ら紹介
27.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. WebViewとCoordinatorLayout 27 public CommonWebView(final @NonNull Context context) { super(context); final ViewConfiguration configuration = ViewConfiguration.get(context); mTouchSlop = configuration.getScaledPagingTouchSlop(); } private void onTouchMove(MotionEvent event) { if (mScrolling) { final int dy = (int) (mPrevY - event.getRawY()); dispatchNestedPreScroll(0, dy, mConsumed, null); final int consumedY = mConsumed[1]; dispatchNestedScroll(0, consumedY, 0, dy - consumedY, null); } else { final float dx = Math.abs(mStartX - event.getRawX()); final float dy = Math.abs(mStartY - event.getRawY()); if (dy > dx && dy > mTouchSlop && mScrollable) { mScrolling = true; startNestedScroll(ViewCompat.SCROLL_AXIS_VERTICAL); } } } 横スクロール時に縦スクロールが発生する事による、 WebViewの移動&サイズ変更による操作の阻害 ・縦横の移動量を考慮(dy > dx) ・縦についても遊びを持たせる(dy > mTouchSlop) ・地図操作 ・カルーセル ・ピンチイン・アウト
28.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. WebViewとCoordinatorLayout 28 @Override public boolean onTouchEvent(MotionEvent event) { final int action = event.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: (略) case MotionEvent.ACTION_MOVE: if (event.getPointerCount() != 1) { break; } onTouchMove(event); break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: (略) default: break; } mPrevY = event.getRawY(); return super.onTouchEvent(event); } スクロール操作以外で動かないようにする。 ・タッチポイントの数を検知 (event.getPointerCount() != 1) ・地図操作 ・カルーセル ・ピンチイン・アウト
29.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. WebViewとCoordinatorLayout 29 @Override protected int computeVerticalScrollRange() { final int verticalScrollRange = super.computeVerticalScrollRange(); mScrollable = verticalScrollRange > getHeight() + mScrollMargin; return verticalScrollRange; } WebViewサイズいっぱいで 操作させるページで動かないように。 ・サイトのコンテンツサイズ(高さ)と WebViewのサイズを比較 ・地図操作 ・カルーセル ・ピンチイン・アウト
30.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. WebViewとCoordinatorLayout 30 まとめ ・WebViewにNestedScrollChildを実装 ・ウェブサイトの作りへの考慮が必要
31.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. ご静聴ありがとうござ いました!
Download