無数の画面を左右フリックで切り替えるには?

2,274 views
Skip to first unread message

shimanebito

unread,
May 27, 2012, 6:37:20 AM5/27/12
to 日本Androidの会
はじめまして。お世話になります。

表題の件なのですが、カレンダーのように無数の画面を
左右フリックで切り替える方法がわからず苦戦しています。

スケジュールアプリで有名な「ジョルテ」のカレンダーのように
左右フリックで画面を切り替えたいのですが、
ViewPagerでこれを試したものの、カレンダーのように無数に
画面がある場合、どのような処理をすれば良いかわかりません。

現在の実装 ------------
無理やりですが、前・現在・次の3ページのViewPagerを作って
ViewPager.setCurrentItem(1, false);
で強制的に現在のページを表示させ、前後に移動された場合、
前・現在・次の画面を更新して、再度上記のメソッドを
呼び出すことで、なんとかループするような形はできました。

ただ、これだと画面が一瞬ちらつくため
やはりやり方がまずいように思います。

もっとシンプルな方法はありますでしょうか?
ご教授頂けると幸いです。

杉田敏典

unread,
May 27, 2012, 10:44:30 AM5/27/12
to android-g...@googlegroups.com

こんばんは。杉田です。

無数の、と書かれていますが、本当に無制限のページ数が必要でしょうか?
もし、かなり大きな数値でも無限ではないのであれば、指定されたページ番号のデータを返すような adapter を作ることで ViewPager で普通に実装することができますよ

2012/05/27 19:38 "shimanebito" <shima...@gmail.com>:

Katsumi

unread,
May 28, 2012, 12:29:18 AM5/28/12
to android-g...@googlegroups.com
こんにちは。katsummyです。

ViewPagerで、データを動的に変更させる場合、adapter .notifyDataSetChanged()のタイミングで、画面が一瞬ちらつくと思います。

わたしは、ページ数を多く設定してちらつくタイミングを減らすなどしてます。


com.android.calendarの実装では、ViewSwitcherを使用しています。
http://tools.oesf.biz/android-4.0.4_r1.0/xref/packages/apps/Calendar/src/com/android/calendar/DayView.java
フリック、アニメーションを実装しないとダメなので結構めんどくさいです。

画面のちらつきを許容できるのであれば、楽に実装できるViewPagerの方が良いとは思います。

以上です。

2012年5月27日 19:37 shimanebito <shima...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>

shimanebito

unread,
May 28, 2012, 6:23:46 AM5/28/12
to 日本Androidの会
ご回答ありがとうございます。

> 指定されたページ番号のデータを返すような adapter を作る

こちらの考え方を参考にごっそり書き直したところ、無事に解決しました。
ずっと悩んでいたため大変参考になりました。

本当にありがとうございました。
> 2012/05/27 19:38 "shimanebito" <shimaneb...@gmail.com>:

shimanebito

unread,
May 28, 2012, 6:27:35 AM5/28/12
to 日本Androidの会
ご回答ありがとうございます。

> わたしは、ページ数を多く設定してちらつくタイミングを減らすなどしてます。

できる限り最小限に抑えることばかり考えていたため、
こちらはとても参考になる実装方法ですね。

今回は実装方法をデザインしなおすことで解決できましたが、
是非今後活用したいアイディアでした。

ありがとうございました。


On 5月28日, 午後1:29, Katsumi <katsu...@gmail.com> wrote:
> こんにちは。katsummyです。
>
> ViewPagerで、データを動的に変更させる場合、adapter .notifyDataSetChanged()のタイミングで、画面が一瞬ちらつくと思います。
>
> わたしは、ページ数を多く設定してちらつくタイミングを減らすなどしてます。
>
> com.android.calendarの実装では、ViewSwitcherを使用しています。http://tools.oesf.biz/android-4.0.4_r1.0/xref/packages/apps/Calendar/...
> フリック、アニメーションを実装しないとダメなので結構めんどくさいです。
>
> 画面のちらつきを許容できるのであれば、楽に実装できるViewPagerの方が良いとは思います。
>
> 以上です。
>
> 2012年5月27日 19:37 shimanebito <shimaneb...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages