18
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-02-08

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があれば、ぜひあげてください。利用することになる方もフィードバックをよろしくお願いします。

18
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?