android 初識ViewPager
1.準備工作
每一個view,只是img不一樣,其他都是一樣的
<framelayout android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"> </framelayout>
2.主布局。xml
//這裡要做相容 //這裡這得是引導欄
3.activity.java裡面的代碼
public class MainActivity extends Activity { private ViewPager pager; //定義一個泛型用於儲存每一個view private Listviewlist; private PagerTabStrip tab; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化 viewlist = new ArrayList(); pager =(ViewPager) findViewById(R.id.pager); tab = (PagerTabStrip)findViewById(R.id.tab); //將每一個xml布局檔案轉化為view View view1 = View.inflate(this, R.layout.view1, null); View view2 = View.inflate(this, R.layout.view2, null); View view3 = View.inflate(this, R.layout.view3, null); View view4 = View.inflate(this, R.layout.view4, null); //把view放進數組空間裡面 viewlist.add(view1); viewlist.add(view2); viewlist.add(view3); viewlist.add(view4); //設定引導欄的屬性,更多請查閱api tab.setBackgroundColor(Color.BLACK); tab.setTextColor(Color.WHITE); tab.setDrawFullUnderline(false); tab.setTabIndicatorColor(Color.WHITE); //這裡面是viewpager的適配器 MyPagerAdapter adapter = new MyPagerAdapter(viewlist); //設定轉換動畫,也可以不設定轉換動畫,那樣切換的效果就很死板 pager.setPageTransformer(true, new DepthPageTransformer()); //這是另外一個不同效果的轉換動畫 //pager.setPageTransformer(true, new ZoomOutPageTransformer()); pager.setAdapter(adapter); }}
4.viewpager的適配器,這裡沒有什麼要註明的,相應的參數都記住怎麼填的就行了,如果要設定title則加個getPageTitle方法,定義一個titlelist,把每一頁的title寫進list裡面
public class MyPagerAdapter extends PagerAdapter{ private Listviewlist; public MyPagerAdapter(Listviewlist){ this.viewlist=viewlist; } @Override public int getCount() { // TODO Auto-generated method stub return viewlist.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { // TODO Auto-generated method stub return arg0==arg1; } @Override public Object instantiateItem(ViewGroup container, int position) { // TODO Auto-generated method stub container.addView(viewlist.get(position)); return viewlist.get(position); } @Override public void destroyItem(ViewGroup container, int position, Object object) { // TODO Auto-generated method stub container.removeView(viewlist.get(position)); }}
原理:
將xml檔案轉換為view放進list泛型裡面,用pageradapter適配器綁定viewlist資料來源呈現出來,想要加動畫就setPageTransformer參數第一個是true,第二個是一個動畫類,api中也可以查到一個是DepthPageTransformer,一個是ZoomOutPageTransformer