使用viewpage加載fragment

簡單的ViewPage佈局:

/2013.09.05_ViewPage_Fragment_Demo/res/layout/activity_main.xml

[html] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent" >  
  5.     <android.support.v4.view.ViewPager  
  6.         android:id="@+id/viewpager"  
  7.         android:layout_width="wrap_content"  
  8.         android:layout_height="wrap_content"  
  9.         android:flipInterval="30"  
  10.         android:persistentDrawingCache="animation" />  
  11. </RelativeLayout>  

/2013.09.05_ViewPage_Fragment_Demo/res/layout/viewpager1.xml

[html] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:background="@drawable/guide_1" >  
  6.   
  7.     <Button  
  8.         android:id="@+id/btn"  
  9.         android:layout_width="wrap_content"  
  10.         android:layout_height="wrap_content"  
  11.         android:layout_alignParentBottom="true"  
  12.         android:layout_centerHorizontal="true"  
  13.         android:layout_marginBottom="54dp"  
  14.         android:background="@drawable/butten"  
  15.         />  
  16.   
  17. </RelativeLayout>  

/2013.09.05_ViewPage_Fragment_Demo/res/layout/viewpager2.xml

[html] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:background="@drawable/guide_2" >  
  6.   
  7.     <Button  
  8.         android:id="@+id/btn"  
  9.         android:layout_width="wrap_content"  
  10.         android:layout_height="wrap_content"  
  11.         android:layout_alignParentBottom="true"  
  12.         android:layout_centerHorizontal="true"  
  13.         android:layout_marginBottom="54dp"  
  14.         android:background="@drawable/butten" />  
  15.   
  16. </RelativeLayout>  


再來一個適配器:

/2013.09.05_ViewPage_Fragment_Demo/src/com/wwj/vf/adapter/FragAdapter.java

[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. package com.wwj.vf.adapter;  
  2.   
  3. import java.util.List;  
  4.   
  5. import android.support.v4.app.Fragment;  
  6. import android.support.v4.app.FragmentManager;  
  7. import android.support.v4.app.FragmentPagerAdapter;  
  8. /** 
  9.  * FragmentPager適配器 
  10.  * @author wwj 
  11.  * 
  12.  */  
  13. public class FragAdapter extends FragmentPagerAdapter{  
  14.       
  15.     private List<Fragment> fragments;  
  16.       
  17.   
  18.     public FragAdapter(FragmentManager fm) {  
  19.         super(fm);  
  20.     }  
  21.       
  22.     public FragAdapter(FragmentManager fm, List<Fragment> fragments) {  
  23.         super(fm);  
  24.         this.fragments = fragments;  
  25.     }  
  26.   
  27.     @Override  
  28.     public Fragment getItem(int position) {  
  29.         return fragments.get(position);  
  30.     }  
  31.   
  32.     @Override  
  33.     public int getCount() {  
  34.         return fragments.size();  
  35.     }  
  36. }  


兩個自定義的Fragment

這裏很簡單,一張背景+一個按鈕

/2013.09.05_ViewPage_Fragment_Demo/src/com/wwj/vf/ui/MyFragment1.java

[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. package com.wwj.vf.ui;  
  2.   
  3. import com.wwj.vf.R;  
  4.   
  5. import android.os.Bundle;  
  6. import android.support.v4.app.Fragment;  
  7. import android.view.LayoutInflater;  
  8. import android.view.View;  
  9. import android.view.View.OnClickListener;  
  10. import android.view.ViewGroup;  
  11. import android.widget.Button;  
  12. import android.widget.Toast;  
  13. /** 
  14.  * 第一個Fragment 
  15.  *  
  16.  * @author wwj 
  17.  * 
  18.  */  
  19. public class MyFragment1 extends Fragment {  
  20.     private Button btn;  
  21.     @Override  
  22.     public void onCreate(Bundle savedInstanceState) {  
  23.         super.onCreate(savedInstanceState);  
  24.           
  25.     }  
  26.       
  27.       
  28.     @Override  
  29.     public View onCreateView(LayoutInflater inflater, ViewGroup container,  
  30.             Bundle savedInstanceState) {  
  31.         View view = inflater.inflate(R.layout.viewpager1, container, false);  
  32.         btn = (Button) view.findViewById(R.id.btn);  
  33.         btn.setOnClickListener(new OnClickListener() {  
  34.               
  35.             @Override  
  36.             public void onClick(View v) {  
  37.                 Toast.makeText(getActivity(), "你點我啦,好壞!!!", Toast.LENGTH_LONG).show();  
  38.             }  
  39.         });  
  40.         return view;  
  41.     }  
  42.       
  43.     @Override  
  44.     public void onActivityCreated(Bundle savedInstanceState) {  
  45.         super.onActivityCreated(savedInstanceState);  
  46.     }  
  47.       
  48.     @Override  
  49.     public void onPause() {  
  50.         super.onPause();  
  51.     }  
  52.       
  53. }  

/2013.09.05_ViewPage_Fragment_Demo/src/com/wwj/vf/ui/MyFragment2.java

[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. package com.wwj.vf.ui;  
  2.   
  3. import android.os.Bundle;  
  4. import android.support.v4.app.Fragment;  
  5. import android.view.LayoutInflater;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.view.ViewGroup;  
  9. import android.widget.Button;  
  10. import android.widget.Toast;  
  11.   
  12. import com.wwj.vf.R;  
  13. /** 
  14.  * 第2個Fragment 
  15.  *  
  16.  * @author wwj 
  17.  * 
  18.  */  
  19. public class MyFragment2 extends Fragment {  
  20.       
  21.     @Override  
  22.     public void onCreate(Bundle savedInstanceState) {  
  23.         super.onCreate(savedInstanceState);  
  24.     }  
  25.       
  26.       
  27.     @Override  
  28.     public View onCreateView(LayoutInflater inflater, ViewGroup container,  
  29.             Bundle savedInstanceState) {  
  30.         View view = inflater.inflate(R.layout.viewpager2, container, false);  
  31.         view.findViewById(R.id.btn).setOnClickListener(new OnClickListener() {  
  32.               
  33.             @Override  
  34.             public void onClick(View v) {  
  35.                 Toast.makeText(getActivity(), "這個Fragment2哦,要注意了!!", Toast.LENGTH_SHORT).show();  
  36.             }  
  37.         });  
  38.         return view;  
  39.     }  
  40.       
  41.     @Override  
  42.     public void onActivityCreated(Bundle savedInstanceState) {  
  43.         super.onActivityCreated(savedInstanceState);  
  44.     }  
  45.       
  46.     @Override  
  47.     public void onPause() {  
  48.         super.onPause();  
  49.     }  
  50.       
  51. }  

好啦,在Activity裏添加兩個Fragment

[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. package com.wwj.vf;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import android.os.Bundle;  
  7. import android.support.v4.app.Fragment;  
  8. import android.support.v4.app.FragmentActivity;  
  9. import android.support.v4.view.ViewPager;  
  10.   
  11. import com.wwj.vf.adapter.FragAdapter;  
  12. import com.wwj.vf.ui.MyFragment1;  
  13. import com.wwj.vf.ui.MyFragment2;  
  14. /** 
  15.  * 主Activity,包含兩個fragment 
  16.  *  
  17.  * @author wwj 
  18.  * 
  19.  */  
  20. public class MainActivity extends FragmentActivity {  
  21.       
  22.     private ViewPager vp;  
  23.     private FragAdapter adapter;  
  24.     @Override  
  25.     protected void onCreate(Bundle savedInstanceState) {  
  26.         super.onCreate(savedInstanceState);  
  27.         setContentView(R.layout.activity_main);  
  28.         vp = (ViewPager) findViewById(R.id.viewpager);  
  29.           
  30.         List<Fragment> fragments = new ArrayList<Fragment>();  
  31.         fragments.add(new MyFragment1());  
  32.         fragments.add(new MyFragment2());  
  33.           
  34.         adapter = new FragAdapter(getSupportFragmentManager(), fragments);  
  35.         vp.setAdapter(adapter);  
  36.         vp.setCurrentItem(0);  
  37.     }  
  38.   
  39. }  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章