Androidアプリ再び

DLNA(UPnP)のカレンダー型プレイヤーを作ろう。
最初に考えたのは、4年前でした。(もうひとつのアプリ)
具体的にGUIを考えてみたら、割と単純そう。

とりあえず、ゆっくり作っていくことにします。

第一歩は、ViewPagerで左右に無限にスワイプする。
ところが、googleってみても思うような実装が見つからない。
私がやりたいのは、
1. ページの遷移だけViewPagerのActivityで実現する。
  1〜3ページを用意して、スワイプ後は常に第2ページに戻る。
2. その上のFragmentの内容を書き換える。
シームレスな見た目にできるし、これが一番シンプルな実装だと思うのですが。
とりあえず、ViewPagerだけ実装できました。
SectionsPagerAdapterで3ページを用意する。

@Override
public int getCount() {
// Show 3 total pages.
return 3;
}

onCreate()に次で、第2ページから開始する。

// Start with central page.
mViewPager.setCurrentItem(1);

mViewPagerにonPageScrollStateChanged()を実装し、ページ遷移後に第2ページへ戻る。

mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
        // 確認用のカウンタ
switch (position) {
case 0:
counter -=1;
break;
case 2:
counter +=1;
break;
}
}
@Override
public void onPageScrollStateChanged(int state) {
if (mViewPager.getId() != 1) {
if (ViewPager.SCROLL_STATE_IDLE == state) {
// ページ遷移が終わった後
try {
Thread.sleep(200); // 自然に見えるように(?)、タイムラグを設ける。
} catch (InterruptedException e) {
}
mViewPager.setCurrentItem(1); // 第2ページへ戻る。
String position = Integer.toString(counter);
Button button = (Button) findViewById(R.id.button_test);
button.setText(position);
}
}
}
});

ついでに、Fragmentの差し替えで、Month, Week, Day表示を切り替えもできる。