AndroidではViewPager、Fragment、PagerTabStripでマルチページスライド効果を実現
4443 ワード
原帖:http://www.cnblogs.com/trinea/archive/2012/11/23/2771273.html
ここでは、ViewPager、Fragment、PagerTabStripを使用してマルチページスライド効果を実現する方法について説明します.Googleプレイのトップページ、新浪微博ニュース(at、コメント、私信、放送)ページの効果です.ViewPager+Fragmentの組み合わせはgoogleの推奨方式で、TabActivity+Activityよりも効率が高い.
この効果はかなりいいです!
1、新しいViewPagerのlayout、内容は以下の通りです.
ViewPagerはlayoutを管理し、各ページデータを左右にスライド表示し、PagerTabStripはページtitle,android:layout_を表示します.gravity=「top」はtitleが上部にあり、bottomなどを設定できることを示します.
2、新しいFragmentActivityページFragmentActivityページにはViewPager要素が含まれており、Fragmentを表示するために使用できます.定義は以下の通りです.
myPagerAdapterはragmentPagerAdapterから統合され、ViewPagerにデータソースを提供します.
onCreate関数はViewPagerインスタンスを取得し、データソースを設定します.getSupportFragmentManagerはFragmentマネージャを取得します.ViewPagerFragment 1は具体的なページを表しており、以下の説明を参照してください.
3、新規FragmentページFragmentページは左右にスライドして表示するページで、新規クラス統合Fragmentを作成し、onCreateView関数を書き換える.onCreateView関数はActivityのonCreate関数に相当します.次のようになります.
簡単な効果は次のとおりです.
ここでは、ViewPager、Fragment、PagerTabStripを使用してマルチページスライド効果を実現する方法について説明します.Googleプレイのトップページ、新浪微博ニュース(at、コメント、私信、放送)ページの効果です.ViewPager+Fragmentの組み合わせはgoogleの推奨方式で、TabActivity+Activityよりも効率が高い.
この効果はかなりいいです!
1、新しいViewPagerのlayout、内容は以下の通りです.
ViewPagerはlayoutを管理し、各ページデータを左右にスライド表示し、PagerTabStripはページtitle,android:layout_を表示します.gravity=「top」はtitleが上部にあり、bottomなどを設定できることを示します.
2、新しいFragmentActivityページFragmentActivityページにはViewPager要素が含まれており、Fragmentを表示するために使用できます.定義は以下の通りです.
FragmentActivity
public class ViewPagerDemo extends FragmentActivity {
/** list **/
List fragmentList = new ArrayList();
/** title list **/
List titleList = new ArrayList();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_pager_demo);
ViewPager vp = (ViewPager)findViewById(R.id.viewPager);
fragmentList.add(new ViewPagerFragment1(" 1"));
fragmentList.add(new ViewPagerFragment1(" 2"));
fragmentList.add(new ViewPagerFragment1(" 3"));
titleList.add("title 1 ");
titleList.add("title 2 ");
titleList.add("title 3 ");
vp.setAdapter(new myPagerAdapter(getSupportFragmentManager(), fragmentList, titleList));
}
/**
*
*
* @author [email protected] 2012-11-15
*/
class myPagerAdapter extends FragmentPagerAdapter {
private List fragmentList;
private List titleList;
public myPagerAdapter(FragmentManager fm, List fragmentList, List titleList){
super(fm);
this.fragmentList = fragmentList;
this.titleList = titleList;
}
/**
*
*/
@Override
public Fragment getItem(int arg0) {
return (fragmentList == null || fragmentList.size() == 0) ? null : fragmentList.get(arg0);
}
/**
* title
*/
@Override
public CharSequence getPageTitle(int position) {
return (titleList.size() > position) ? titleList.get(position) : "";
}
/**
*
*/
@Override
public int getCount() {
return fragmentList == null ? 0 : fragmentList.size();
}
}
}
myPagerAdapterはragmentPagerAdapterから統合され、ViewPagerにデータソースを提供します.
onCreate関数はViewPagerインスタンスを取得し、データソースを設定します.getSupportFragmentManagerはFragmentマネージャを取得します.ViewPagerFragment 1は具体的なページを表しており、以下の説明を参照してください.
3、新規FragmentページFragmentページは左右にスライドして表示するページで、新規クラス統合Fragmentを作成し、onCreateView関数を書き換える.onCreateView関数はActivityのonCreate関数に相当します.次のようになります.
public class ViewPagerFragment1 extends Fragment {
private String text;
private TextView tv = null;
public ViewPagerFragment1(String text){
super();
this.text = text;
}
/**
* , inflater inflate view
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.view_pager_fragment_demo1, container, false);
tv = (TextView)v.findViewById(R.id.viewPagerText);
tv.setText(text);
return v;
}
}
簡単な効果は次のとおりです.