package com.yokmama.learn10.chapter04.lesson18.fragment;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.yokmama.learn10.chapter04.lesson18.R;
/**
* A simple {@link Fragment} subclass.
*/
public class ViewPagerFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_view_pager, container, false);
//ViewPagerのインスタンスを取得
ViewPager viewPager = (ViewPager) rootView.findViewById(R.id.viewPager);
//ViewPagerにAdapterをセット
viewPager.setAdapter(new MyFragmentAdapter(getFragmentManager()));
//リスナーをセット
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels) {
// ページのスワイプ中に呼ばれる
// position : スクロール中のページ。
// positionOffset : ドラッグ量(0〜1)
// positionOffsetPixels : ドラッグされたピクセル数
}
@Override
public void onPageSelected(int position) {
// 移動先のページが確定された後に呼ばれる。
// position : 移動先のページ
Toast.makeText(getActivity(), "selected " + position, Toast.LENGTH_SHORT).show();
}
@Override
public void onPageScrollStateChanged(int state) {
// ページのスクロール状態が通知される。
// state : ページスクロール状態
// ViewPager.SCROLL_STATE_IDLE 初期状態。ページスクロール完了後に通知
// ViewPager.SCROLL_STATE_DRAGGING ドラッグ開始時に通知
// ViewPager.SCROLL_STATE_SETTLING ドラッグ終了時に通知
}
});
return rootView;
}
public class MyFragmentAdapter extends FragmentPagerAdapter {
public MyFragmentAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
if (position == 0) {
return new ListViewFragment();
} else if (position == 1) {
return new GridViewFragment();
} else {
return new ScrollViewFragment();
}
}
@Override
public int getCount() {
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
if (position == 0) {
return "List";
} else if (position == 1) {
return "Grid";
} else {
return "Scroll";
}
}
}
/**
* PagerAdapterの実装例
* 本サンプルプログラムでは使用していません。
*/
public class MyPagerAdapter extends PagerAdapter {
private LayoutInflater mLayoutInflaternflater = null;
private Object mCurrentObject;
public MyPagerAdapter(Context c) {
super();
mLayoutInflaternflater = (LayoutInflater) c
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
mCurrentObject = object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View layout = mLayoutInflaternflater.inflate(R.layout.view_pager_item, null);
switch (position) {
case 0:
layout.setBackgroundColor(Color.RED);
break;
case 1:
layout.setBackgroundColor(Color.GREEN);
break;
case 2:
layout.setBackgroundColor(Color.BLUE);
break;
}
container.addView(layout);
return layout;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public int getCount() {
return 3;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view.equals(object);
}
}
}