実現が結構めんどうくさそうなのでライブラリ等あれば良かったのですが、ちょっと探したところ見つからなかったのでこうすれば実現できるであろうと言う方法をひとつ記載させていただきます。(他にも良い方法はあるかもしれません)
おそらくScrollViewにTextViewを配置して実装していると思いますが、ScrollViewの現在位置を取得して動的にレイアウトを変更していくような方法をとると実現できると思います。
タイトル部分は固定で表示しておいて、次の商品のエリアに入ってきたらタイトルを入れ替えるような感じです。
スクロールイベントを検知するのは下記のような記事を参考に、これでスクロールしている状態と位置を知ります。
スクロールはMotionEvent.ACTION_MOVE
やonScrollStateChanged
、位置はgetScrollY
などで取得できると思います。
[Android] ScrollViewのスクロール中のイベントを取得する3つの方法
ScrollViewで最下部までスクロールしたときに処理を実行する
どの位置にきたらタイトルを変更するか、などの計算方法(中身のViewの高さなどから計算させる、体系的な仕組みを実装する必要がありそう。今どのエリアにいるのか、エリアの入れ替わりの判定などなど)
また、ただタイトルが入れ替わるだけなら上記だけで良さそうですが、押し出すと言う部分を含めると、タイトル部分とタイトル部分がかぶるエリアに入ったときに、固定で表示していた部分を非表示にして(非表示のような実装じゃなくても良さそうですがその方がわかりやすそうだとは思いますあくまで一例)下からくるタイトル部分の上に動的にレイアウトを変更してもってきてやる。そして上のタイトルが完全に消えた状態になったら固定部分を表示状態にしてやる(下からきたタイトルになる)のような処理を付け加える必要があります。
上記のような考え方で実装すればとりあえずは目的のものができると思います。
(あくま個人的な感想としては結構めんどうくさそうなのであまり自前では実装したくないですね・・・、なにか良いライブラリがあれば良いのですが・・・。案件やアプリの構成などにもよると思いますが、Webだと結構そう言うページがあったりすると思うのでWebでのライブラリとか実装方法見つけてWebViewとかで実装しちゃうとか?このようなものが自分で作れるようになるとかなりスキルアップになるとは思います!)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/25 13:31
2018/07/25 13:45