スワイプで切り替わるが画面の作成

スワイプで切り替わるが画面の作成

いくつかのページがある場合
左右にスワイプで切り替えできると便利

スワイプで切り替わる画面を作成するには
ViewPagerクラスを使う

そして、表示するFragmentは
FragmentPagerAdapterを継承したクラスへ作る

まずは、レイアウト定義のファイル作成

1
2
3
4
5
6
7
8
9
10
11
12
13
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
 
<android.support.v4.view.viewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.viewPager>
 
</LinearLayout>

次に、PagerAdapterを継承したクラスを作成

これは、画面が切り替るタイミングで
Fragmentを生成する FragmentPagerAdapterクラスを作成する

まずは、レイアウト定義

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
 
<android.support.v4.view.viewPager
android:id="@+id/pager"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</android.support.v4.view.viewPager>
 
</LinearLayout>

次に、PagerAdapterを継承したクラスの作成

画面が切り替わったタイミングで
Fragmentを生成するFragmentPagerAdapterクラスを作成する

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public static class ViewPagerAdapter extends FragmentPagerAdapter{
 
private String[] values = new String[]{"page1","page2"};
 
public ViewPagerAdapter(FragmentManager fm){
super(fm);
}
 
@Override
public Fragment getItem(int position){
ViewPagerFragment fragment = new ViewPagerFragment();
 
Bundle args= new Bundle();
args.putString("value", values[position]) ;
fragment.setArguments(args);
return fragment;
 
}
 
@Override
public int getCount(){
return values.length;
}
}

長さ取得には lengthを使うと便利

次に、ViewPagerクラスへPagerAdapterクラスをセット

最初に、部品のインスタンスを取得してセットする

今回はonCreate()の中でやる

1
2
3
4
5
mAdapter = new ViewPagerAdapter(getSupportFragmentManager());
 
mPager = (ViewPager)findViewById(R.id.pager);
 
mPager.setAdapter(mAdapter);

これで、スワイプで切り替わる画面ができる

もし、大量のページがあるなら
FragmentPagerAdapterの代わりに
FragmentStatePagerAdapterを使う

レスポンスは悪くなるけど
ページが表示されなくなると破棄するため
メモリ節約になる

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です