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

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

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

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

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

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

<LinearLayout 
xmlns:android="http://scheams.android.com/apk/res/android"
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クラスを作成する

まずは、レイアウト定義

<LinearLayout 
xmlns:android="http://scheams.android.com/apk/res/android"
xmlns:ads="http://scheams.android.com/apk/lib/com.google.ads"
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クラスを作成する

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()の中でやる

mAdapter = new ViewPagerAdapter(getSupportFragmentManager());

mPager = (ViewPager)findViewById(R.id.pager);

mPager.setAdapter(mAdapter);

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

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

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

コメントを残す

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