Androidが開発したViewPagerはFragmentと連携してスライドページの効果を実現(ソースコード共有)
3908 ワード
先日のブログではViewPagerの使用について紹介していましたが、皆さんはそのブログに夢中になっていることに気づきました.今日はViewPagerのFragmentでの使用を見てみましょう.ViewPagerはパッチパッケージに追加された低バージョンのパッケージなので、Fragmentはandroid 3.0以上のプラットフォームで実行しなければなりません.ここでは矛盾が発生しています.この問題を解決するために、私たちのメインプログラムはFragmentActivityの代わりに前のActivityを継承しなければなりません.パッケージを導くときはV 4のパッケージに注意しなければなりません.そうしないと、エラーが発生します.ソースコードの注意点を分析してみましょう.
MainActivityのコード
前にレイアウトファイルのコードを貼ったことがありますが、今回はもう一度強調しましょう.
MainActivityのコード
package com.example.f20_fragement08;
import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerTitleStrip;
import android.support.v4.view.ViewPager;
import android.view.Menu;
public class MainActivity extends FragmentActivity {
private ViewPager pager;
private List<Fragment> list;
private FragmentManager manager;
private PagerTitleStrip pagerTitleStrip;
private List<String> title;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pager = (ViewPager) this.findViewById(R.id.pager);
pagerTitleStrip = (PagerTitleStrip) this.findViewById(R.id.pagertitle);
pagerTitleStrip.setTextSpacing(1000);//
list = new ArrayList<Fragment>();
title = new ArrayList<String>();
list.add(new AFragment());// add Fragment
list.add(new BFragment());
title.add(" ");//
title.add(" ");
manager = getSupportFragmentManager();// V4 , FragmentActivity
// manager
adapter = new MyAdapter(manager);
pager.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
// FragmentStatePagerAdapter ,
// getCount,getItem
public class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
return list.get(arg0);
}
@Override
public CharSequence getPageTitle(int position) {
// TODO Auto-generated method stub
return title.get(position);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
前にレイアウトファイルのコードを貼ったことがありますが、今回はもう一度強調しましょう.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center" >
<android.support.v4.view.PagerTitleStrip
android:id="@+id/pagertitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top" >
</android.support.v4.view.PagerTitleStrip>
</android.support.v4.view.ViewPager>
</RelativeLayout>