Android
RecyclerView

「Toro: RecyclerViewのスクロールに対してビデオを自動再生・中止するライブラリ」を作りました

More than 3 years have passed since last update.


TL,DR:

ソースコードと仕様がここからアクセスできますから、是非楽しんでください


https://github.com/eneim/Toro



WHY? なぜ?


モチベーション

FacebookやTwitterさんがやっているからなんとかやりたいね


ライブラリの性能一覧、あるいはやりたいこと(案)



  • メインな草案


    • スクロールが止まったら、自動再生をトリガーする。

    • ビデオがスクリーンの中に「綺麗」に見えないと再生しない


      • 「綺麗」という基準がなんとか人間で決められるもの






  • 拡張機能


    • 再生時刻のキャッシュや復元

    • 長押しで、なんとかする

    • 簡単なリストだけでなく、グリッドもサポートする(ビデオ数が多いと、配置がさらに複雑な違い)

    • 「再生戦略」というものを使用して、再生しかたを決める

    • 「再生ライフサイクル」を定義し、なんとか使えるようにする

    • 。。。(実装しながら考える)



以上の機能を頭の中に置いて、なんとかします。


HOW? どう実装すた?

初心者のようなコードでToroを書きました。詳しくは、


https://github.com/eneim/Toro


で確認ください

だいたい、Interface design patternっぽい仕組みで、コア部分を定義し、Toroという神様クラスでつなぐ。あとはカスタマイズViewやViewHolderなどを用意しました。

一応RepoのWikiをご覧ください


WHAT? 作ったものの姿

もう一回、


https://github.com/eneim/Toro


の使用やWiki確認ください。

Toro in action が次のようになります。Repo内にサンプルアプリがありますので、確認してみてください

Sample 1: Vertical linear RecyclerView with one Video


Sample 1: Vertical linear RecyclerView with one Video


Sample 2: Vertical staggered RecyclerView with items are Videos


Sample 2


Sample 3: Vertical staggered RecyclerView with items are Videos - Long press enabled (基本的、横にすると長押しが有効になります)


Sample 3


Sample 4: Vertical Grid RecyclerView with multiple type of ViewHolder


Sample 4


Sample 5: Overall visual, sample with 2 RecyclerViews, one Horizontal and one Vertical Staggered with a long portrait Video. Long press enabled for Horizontal RecyclerView


Sample 5



まとめ

一応紹介が以上となります。なんとかissueがあれば、ぜひあげてください。利用することになる方もフィードバックをよろしくお願いします。