satohu20xx's diary

思ったことをつらつらと

android-support-v4を使ってスワイプする

スワイプ動作をやるために必要なこと

サンプル的なコード

android-support-v4.jarを取ってくる

以下の場所にあるからコピーして場所を移してimportするなりそのままでimportするなりしましょう

android-sdk-windows\extras\android\compatibility\v4

ViewPagerを含んだLayoutファイルを作成
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

  <android.support.v4.view.ViewPager
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:id="@+id/viewpager"/>

</LinearLayout>
FragmentActivityを作成
public class TopFragmentActivity extends FragmentActivity {

    private ViewPager mViewPager;
    private TopViewPagerAdapter mPagerAdapter;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment);

        mPagerAdapter = new TopViewPagerAdapter(getSupportFragmentManager());
        mViewPager = (ViewPager) findViewById(R.id.viewpager);
        mViewPager.setAdapter(mPagerAdapter);
    }
}
ViewPagerAdapterを作成
public class TopViewPagerAdapter extends FragmentPagerAdapter {

    // こいつがページ数
    private static final int PAGE_NUM = 2;

    public TopViewPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        Fragment fragment = null;

        /*
         * このpositionに表示するViewの番号が来る
         * 初期表示は0で右にスワイプするごとにインクリメントみたいな
         * 毎回newせずにコンストラクタでnewして渡すほうがいいはず
         */
        fragment = new TopFragment();

        return fragment;
    }

    /*
     * こいつの返却数がページ数になる
     */
    @Override
    public int getCount() {
        return PAGE_NUM;
    }
}
Fragmentを作成する
public class TopFragment extends Fragment {

    private Button button;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View v = inflater.inflate(R.layout.play_list_select, container, false);
        Activity act = getActivity();

        // こんな感じでLayoutファイルのViewを取ってくる
        button= (Button)v.findViewById(R.id.button);

        /*
         * あとは好きに書いてくださいなー
         */

        return v;
    }
}

あとがき

こんな感じでスワイプ動作ができるようになるはず。
やっぱりスマホならスワイプ動作が使いやすいよね。