Enviar pesquisa
Carregar
僕は上スワイプでBottomSheetを出したかっただけなんだ
•
0 gostou
•
2,349 visualizações
Takao Sumitomo
Seguir
2019-03-27 potatotips #60 の発表資料です。
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 29
Baixar agora
Baixar para ler offline
Recomendados
アプリを成長させるためのログ取りとログ解析に必要なこと
アプリを成長させるためのログ取りとログ解析に必要なこと
Takao Sumitomo
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
Masatoshi Tada
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
Masatoshi Tada
ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説
ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説
Masatoshi Tada
ゼロ幅スペースという悪夢
ゼロ幅スペースという悪夢
swamp Sawa
Git flowの活用事例
Git flowの活用事例
Hirohito Kato
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
onozaty
Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回
kinme modoki
Recomendados
アプリを成長させるためのログ取りとログ解析に必要なこと
アプリを成長させるためのログ取りとログ解析に必要なこと
Takao Sumitomo
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
Masatoshi Tada
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
Masatoshi Tada
ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説
ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説
Masatoshi Tada
ゼロ幅スペースという悪夢
ゼロ幅スペースという悪夢
swamp Sawa
Git flowの活用事例
Git flowの活用事例
Hirohito Kato
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
onozaty
Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回
kinme modoki
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
Hironobu Isoda
GoによるiOSアプリの開発
GoによるiOSアプリの開発
Takuya Ueda
Hyperledger Fabric Private Chaincodeについて
Hyperledger Fabric Private Chaincodeについて
Hyperleger Tokyo Meetup
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
Open Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere Liberty
Takakiyo Tanaka
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Masatoshi Tada
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
こわくない Git
こわくない Git
Kota Saito
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
Takayuki Shimizukawa
ChatGPTがもたらす未来予測
ChatGPTがもたらす未来予測
Koji Fukuoka
gRPC入門
gRPC入門
Kenjiro Kubota
Go入門
Go入門
Takuya Ueda
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
Takayuki Shimizukawa
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
例外設計における大罪
例外設計における大罪
Takuto Wada
Google Cloud ベストプラクティス:Google BigQuery 編 - 01 : BigQuery とは?
Google Cloud ベストプラクティス:Google BigQuery 編 - 01 : BigQuery とは?
Google Cloud Platform - Japan
Git超入門_座学編.pdf
Git超入門_座学編.pdf
憲昭 村田
技術ブログを書こう
技術ブログを書こう
akira6592
とにかく分かりづらいTwelve-Factor Appの解説を試みる
とにかく分かりづらいTwelve-Factor Appの解説を試みる
Masatoshi Tada
sharedUserIdを使った俺得開発ツールの作り方
sharedUserIdを使った俺得開発ツールの作り方
Takao Sumitomo
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
Takao Sumitomo
Mais conteúdo relacionado
Mais procurados
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
Hironobu Isoda
GoによるiOSアプリの開発
GoによるiOSアプリの開発
Takuya Ueda
Hyperledger Fabric Private Chaincodeについて
Hyperledger Fabric Private Chaincodeについて
Hyperleger Tokyo Meetup
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
Open Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere Liberty
Takakiyo Tanaka
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Masatoshi Tada
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
こわくない Git
こわくない Git
Kota Saito
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
Takayuki Shimizukawa
ChatGPTがもたらす未来予測
ChatGPTがもたらす未来予測
Koji Fukuoka
gRPC入門
gRPC入門
Kenjiro Kubota
Go入門
Go入門
Takuya Ueda
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
Takayuki Shimizukawa
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
例外設計における大罪
例外設計における大罪
Takuto Wada
Google Cloud ベストプラクティス:Google BigQuery 編 - 01 : BigQuery とは?
Google Cloud ベストプラクティス:Google BigQuery 編 - 01 : BigQuery とは?
Google Cloud Platform - Japan
Git超入門_座学編.pdf
Git超入門_座学編.pdf
憲昭 村田
技術ブログを書こう
技術ブログを書こう
akira6592
とにかく分かりづらいTwelve-Factor Appの解説を試みる
とにかく分かりづらいTwelve-Factor Appの解説を試みる
Masatoshi Tada
Mais procurados
(20)
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
GoによるiOSアプリの開発
GoによるiOSアプリの開発
Hyperledger Fabric Private Chaincodeについて
Hyperledger Fabric Private Chaincodeについて
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Open Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere Liberty
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
こわくない Git
こわくない Git
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
ChatGPTがもたらす未来予測
ChatGPTがもたらす未来予測
gRPC入門
gRPC入門
Go入門
Go入門
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
例外設計における大罪
例外設計における大罪
Google Cloud ベストプラクティス:Google BigQuery 編 - 01 : BigQuery とは?
Google Cloud ベストプラクティス:Google BigQuery 編 - 01 : BigQuery とは?
Git超入門_座学編.pdf
Git超入門_座学編.pdf
技術ブログを書こう
技術ブログを書こう
とにかく分かりづらいTwelve-Factor Appの解説を試みる
とにかく分かりづらいTwelve-Factor Appの解説を試みる
Mais de Takao Sumitomo
sharedUserIdを使った俺得開発ツールの作り方
sharedUserIdを使った俺得開発ツールの作り方
Takao Sumitomo
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
Takao Sumitomo
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド
Takao Sumitomo
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
Takao Sumitomo
高速でトライ&エラーを するために気をつけてること
高速でトライ&エラーを するために気をつけてること
Takao Sumitomo
Maker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきた
Maker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきた
Takao Sumitomo
Viewを動的に変化させるアプローチ
Viewを動的に変化させるアプローチ
Takao Sumitomo
プロダクトを育てるのにGoogleのサービスが助けてくれること
プロダクトを育てるのにGoogleのサービスが助けてくれること
Takao Sumitomo
AdapterToolboxでRecyclerViewを楽にする
AdapterToolboxでRecyclerViewを楽にする
Takao Sumitomo
エンジニアがプロダクト育成を始めるまでにやったこと
エンジニアがプロダクト育成を始めるまでにやったこと
Takao Sumitomo
Wantedlyのテスト事情
Wantedlyのテスト事情
Takao Sumitomo
用途に合わせたアニメーションの実装方法
用途に合わせたアニメーションの実装方法
Takao Sumitomo
Uml速習会
Uml速習会
Takao Sumitomo
potatotips (iOS/Android開発Tips共有会) 第19回 資料
potatotips (iOS/Android開発Tips共有会) 第19回 資料
Takao Sumitomo
SQLiteDatabaseを無理矢理覗く
SQLiteDatabaseを無理矢理覗く
Takao Sumitomo
開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程
Takao Sumitomo
テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜
Takao Sumitomo
勉強会資料 データ構造とアルゴリズム
勉強会資料 データ構造とアルゴリズム
Takao Sumitomo
勉強会資料 Uml概要
勉強会資料 Uml概要
Takao Sumitomo
Firefox OSの何が嬉しいか
Firefox OSの何が嬉しいか
Takao Sumitomo
Mais de Takao Sumitomo
(20)
sharedUserIdを使った俺得開発ツールの作り方
sharedUserIdを使った俺得開発ツールの作り方
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
高速でトライ&エラーを するために気をつけてること
高速でトライ&エラーを するために気をつけてること
Maker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきた
Maker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきた
Viewを動的に変化させるアプローチ
Viewを動的に変化させるアプローチ
プロダクトを育てるのにGoogleのサービスが助けてくれること
プロダクトを育てるのにGoogleのサービスが助けてくれること
AdapterToolboxでRecyclerViewを楽にする
AdapterToolboxでRecyclerViewを楽にする
エンジニアがプロダクト育成を始めるまでにやったこと
エンジニアがプロダクト育成を始めるまでにやったこと
Wantedlyのテスト事情
Wantedlyのテスト事情
用途に合わせたアニメーションの実装方法
用途に合わせたアニメーションの実装方法
Uml速習会
Uml速習会
potatotips (iOS/Android開発Tips共有会) 第19回 資料
potatotips (iOS/Android開発Tips共有会) 第19回 資料
SQLiteDatabaseを無理矢理覗く
SQLiteDatabaseを無理矢理覗く
開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程
テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜
勉強会資料 データ構造とアルゴリズム
勉強会資料 データ構造とアルゴリズム
勉強会資料 Uml概要
勉強会資料 Uml概要
Firefox OSの何が嬉しいか
Firefox OSの何が嬉しいか
Último
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Último
(11)
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
僕は上スワイプでBottomSheetを出したかっただけなんだ
1.
2019-03-27 potatotips #60
@cattaka_net 僕は上スワイプでBottomSheetを 出したかっただけなんだ Takao Sumitomo @cattaka_net
2.
2019-03-27 potatotips #60
@cattaka_net 自己紹介 ● 住友 孝郎(Takao Sumitomo) ● Wantedly, Inc. 所属 ● Androidアプリを主に担当 ● @cattaka_net Goは書かないけどゴーファーが好き (アイコンは気分で変わる)
3.
2019-03-27 potatotips #60
@cattaka_net
4.
2019-03-27 potatotips #60
@cattaka_net 本題
5.
2019-03-27 potatotips #60
@cattaka_net BottomSheetはご存知ですよね
6.
下から出てくるやつ ● BottomSheetDialogが有名 ● 例)Material Design ● by Eajy ● https://goo.gl/YrChM4
7.
これを上スワイプで出るようにしたかった こんなのが作りたかった→
8.
処理の本体はBottomSheetBehavior ←親のCoordinatorLayout ←子要素のView 1:Nested Scrollが親に伝わる 2:イベントをリレー BottomSheetBehavior 3:子要素のViewの座標を動かす
9.
アプローチ
10.
アプローチ ←ここのスクロールイベントを奪う BottomSheetBehavior 奪ったイベント どちらかにリレー
11.
スクロール量の奪い方
12.
親のViewにOnTouchListenerを仕込んで頑張る? ● 独自実装したくない... ● 別件でロングタップも使いたい ● スクロール開始の閾値とかやりたくない ←この部分に仕込む
13.
強引にNestedScrollする? 見た目上はBottomSheetの後ろにあるけど、 ViewTree上はNested ScrollできるViewを置く? Viewの構造的に無理だよね、、
14.
GestureDetectorを使う ● タッチイベントからユーザー操作の識別してくれる ● i.e. ロングタップやスクロール ←この部分に仕込む
15.
OnGestureListener ● GestureDetectorとセットで使う ● 便利なリスナー達 ● onDown ● onShowPress ● onFling ● onSingleTapUp ● onLongPress ● onScroll
16.
スクロール量の喰わせ方
17.
BottomSheetBehaviorに強引に喰わせる? ● そもそもスクロール量のsetterがない、、 BottomSheetBehavior 奪ったイベント
18.
NestedScrollイベントを捏造して喰わせる 奪ったイベント 子ViewがNested Scrollしたかのように して、親Viewにイベントを送る
19.
NestedScrollイベントの捏造方法 @Override public boolean onScroll(MotionEvent
e1, MotionEvent e2, float distanceX, float distanceY) { if (!isScrolling) { isScrolling = true; mCoordinatorLayout.onStartNestedScroll( mBottomSheetView, mBottomSheetView, ViewCompat.SCROLL_AXIS_VERTICAL, ViewCompat.TYPE_TOUCH ); } mCoordinatorLayout.onNestedPreScroll( mBottomSheetView, (int) distanceX, (int) distanceY, new int[2], ViewCompat.TYPE_TOUCH ); return true; } ←初回はNestedScrollの開始を伝える ←スクロールイベントを送る
20.
NestedScrollイベントの捏造方法 @Override public boolean onTouch(View
v, MotionEvent event) { if (event.getActionMasked() == MotionEvent.ACTION_UP) { if (isScrolling) { isScrolling = false; mCoordinatorLayout.onStopNestedScroll( mBottomSheetView, ViewCompat.TYPE_TOUCH ); } } return gestureDetector.onTouchEvent(event); } ←NestedScrollの終わりを伝える
21.
なんとか動いた!
22.
学んだこと
23.
NestedScrollは危険が危ない
24.
イベントハンドラがいっぱいある ● boolean onStartNestedScroll ●
void onNestedScrollAccepted ● void onStopNestedScroll ● void onNestedScroll ● void onNestedPreScroll ● boolean onNestedFling ● boolean onNestedPreFling
25.
メソッドの実装が2系統ある ● 新しいもの ● NestedScrollingChild2 ● NestedScrollingParent2 ● 古いもの ● NestedScrollingChild ● NestedScrollingParent
26.
ライブラリによっては1部分しか実装してない ● Viewの構造を入れ替えたとき、 途中にPreとか新旧とか、 片方しか実装してないのが混ざると、 動かない ● デバッガでステップ実行してると、 「ぉ、、、ぉぅ、、、」ってなる ● BottomSheetBehaviorはPreのみ実装
27.
みなさんも気をつけてください
28.
この発表のサンプルコード&アプリ ● cattaka/AndroidSnippets ● http://github.com/cattaka/AndroidSnippets/ ● BottomSheetBehaviorOpenBySwipeUpActivity.java ● Google Play ● https://goo.gl/HuAtZG ● Open by
up
29.
ご清聴ありがとうございました Takao Sumitomo @cattaka_net
Baixar agora