![見出し画像](https://assets.st-note.com/production/uploads/images/28367083/rectangle_large_type_2_b00815a09dd8544829d4bb082768bec1.png?width=800)
未だにヒントの情報すらないランチャーループスクロール(Android Java)
皆様、おはようございます。
もう引退したんですが、私は昔IT企業の技術者だったんです。
いろんなモノを創っていたんですが、一番長く携わっいたのがスマホの開発です。
ここからはわかる人にしかわからない話だと思いますが、AOSP(Android Open Source Project)のLancher3をループスクロール(無限スクロール、英語圏ではInfinite Scroll)させるプログラミングの仕事を任されたことがありました。
当時、ネットや書籍で調べても全然やり方が思い浮かばなくて、もう気が狂いそうになった記憶があります。結局、この機能は実装できたんですが、未だにネットではどう言ったプログラミングをしたら良いか日本語でも英語でも全然書いていないですね。
私はもう引退してしまったんで、細かい説明までする自信がないですし、実際にコードを載っけてしまうと実装しようとしているプログラマーのためにならないので概念だけ説明いたします。
まず、Lancher3のホーム画面が3ページあったとします。
1ページ目(最初のページ)の前に3ページ目(最後のページ)の視覚上のダミーを創り、3ページ目(最後のページ)の後に1ページ目(最初のページ)の視覚上のダミーを創ります。
次に、これらのダミーのページまでスクロールできるような座標設定をします。
このダミーのページへスクロールした時に座標計算上はダミー元のページに移動するようにコーディングします。
つまり、1ページ目→3ページ目のダミーの場合は座標計算上1ページ目→3ページ目、3ページ目→1ページ目のダミーの場合は座標計算上3ページ目→1ページ目に行くようにします。
要するに、視覚上はループしているように見えるが、座標計算上では最初または最後のページに高速移動するプログラミングをするということです。
(もともとこのオープンソースがループを想定したプログラムの組まれ方をしていないのでこれが限界かなぁ。本当の意味でループさせるならプログラムを根底から潰さないと無理かなぁ。)
あまり役に立たないかもしれませんが、この記事を参考にして技術者の残業時間が減れば良いなぁと妄想しています。
#プログラミング #Java #Android #AOSP #IT #技術者 #スマートフォン
よろしければサポートお願いいたします(^^)