AndroidのPull to Refreshをちょっとだけ調べた

はじめに


ここの内容は完全に備忘録です。
何故かというと、自分がちょっと実現したい機能があったけどできるのだろうかと調べてみたメモだからです。

普通のPull To Refresh


所謂、下向きに引っ張るとListViewが更新されるやつですね。

これはAPI Level19のSupport V4 Libraryにて機能提供されているので、簡単に実現できます。
(ちょっと癖はあるかもしれませんが・・・)

以下にデモとReferenceを記載

# デモを見ればわかりますが、扱うだけなら非常に楽に使えるような感じになっています(カスタムは面倒臭さそう)
# ぐぐれば、いっぱい記事は見つかるので詳細はそちらに譲ります

やりたかったこと


下から上にListViewを引っ張ると、ListViewが更新されること
俗に言う、bottomup to refreshってやつです

調べてみた


ライブラリは?

Android-PullToRefreshが、対応している 但し、作者がdeprecated宣言

カスタム実装は?

少し試してみた感じだと、標準機能を駆使して実現(Classの継承など)は、まず無理かも

# そもそも、そんな感じで簡単にrefreshする機能を上下を入れ替え作られているような感じにはなってなかった

ソースコードを見れば?

結論から言うと、onTouchEventでアニメーションの実施の有無など詳細な条件判定とかやっているので今のところ難しそう

SwipeRefreshLayout.java

# 追いかけた結果を書くのは割愛します

他の人はどうなの?

同じことを考える方はいらっしゃるようですね。

SwipeRefreshLayout - Pull From Bottom

ざっくり書くと、こんな感じ

  • 今のAPIだと簡単には無理
  • OSSのコードをコピーして、自前で実装した
  • ここを参考に実装すればもしかしたらできるかも

# ソースコード見た感触とあまり変わらない(´・ω・`)

ちょっと調べてとりあえず分かったこと


API叩いて直ぐ実現可能というわけではないようですね(´・ω・`)

  • クラスを継承した独自のLayoutにすればなんとかできそうかもしれない
  • 但し、onTouchEventを自前で実装するのと処理中のアニメーションを挟むため、一筋縄ではいかない
  • 実現方法の参考実装はあるので、うまくできそうかやってみればいいかもしれない
  • deprecated宣言しているが、ライブラリを使えば楽にはできる(その後のメンテナンスコストは払う必要は出そうだが・・・)