首页 > 代码库 > ViewPager+Fragment实现左右切换,还有点击事件

ViewPager+Fragment实现左右切换,还有点击事件

技术分享技术分享技术分享

 

activity_main.xml

1 <?xml version="1.0" encoding="utf-8"?>2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"3     android:orientation="vertical" android:layout_width="match_parent"4     android:layout_height="match_parent">5     <android.support.v4.view.ViewPager6         android:id="@+id/viewPager"7         android:layout_width="match_parent"8         android:layout_height="match_parent"/>9 </LinearLayout>

MainActivity.java

 1 package com.example.lession30_fragment; 2  3 import android.os.Bundle; 4 import android.support.annotation.Nullable; 5 import android.support.v4.app.Fragment; 6 import android.support.v4.app.FragmentManager; 7 import android.support.v4.app.FragmentPagerAdapter; 8 import android.support.v4.view.ViewPager; 9 import android.support.v7.app.AppCompatActivity;10 11 import java.util.ArrayList;12 import java.util.List;13 14 /**15  * Created by 世宽 on 2016/11/30.16  */17 18 public class MainActivity extends AppCompatActivity {19     private ViewPager viewPager;20     private MyFragment adapter;21     @Override22     protected void onCreate(@Nullable Bundle savedInstanceState) {23         super.onCreate(savedInstanceState);24         setContentView(R.layout.activity_main);25         viewPager = (ViewPager) findViewById(R.id.viewPager);26         adapter = new MyFragment(getSupportFragmentManager(), getFragment());27         viewPager.setAdapter(adapter);28     }29 30     public List<Fragment> getFragment() {31         List<Fragment> fragments=new ArrayList<>();32         fragments.add(new Activity_Manager());33         fragments.add(new Activity_n());34         return fragments;35     }36 37     class MyFragment extends FragmentPagerAdapter{38         private List<Fragment> fragments;39         public MyFragment(FragmentManager fm, List<Fragment> fragments) {40             super(fm);41             this.fragments = fragments;42         }43 44         @Override45         public Fragment getItem(int position) {46             return fragments.get(position);47         }48 49         @Override50         public int getCount() {51             return fragments==null?0:fragments.size();52         }53     }54 }

activity_manager.xml

 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3     xmlns:tools="http://schemas.android.com/tools" 4     android:id="@+id/activity_main" 5     android:layout_width="match_parent" 6     android:layout_height="match_parent" 7     tools:context="com.example.lession30_fragment.Activity_Manager"> 8  9     <Button10         android:id="@+id/btn1"11         android:layout_width="wrap_content"12         android:layout_height="wrap_content"13         android:text="第一个界面" />14 15     <Button16         android:id="@+id/btn2"17         android:layout_width="wrap_content"18         android:layout_height="wrap_content"19         android:layout_alignParentRight="true"20         android:text="第二个界面" />21 22     <FrameLayout23         android:id="@+id/fl"24         android:layout_width="match_parent"25         android:layout_height="match_parent"26         android:layout_below="@id/btn1"/>27 </RelativeLayout>

Activity_manager.xml

 1 package com.example.lession30_fragment; 2  3 import android.support.annotation.Nullable; 4 import android.support.v4.app.Fragment; 5 import android.support.v4.app.FragmentManager; 6 import android.support.v4.app.FragmentTransaction; 7 import android.os.Bundle; 8 import android.view.LayoutInflater; 9 import android.view.View;10 import android.view.ViewGroup;11 import android.widget.Button;12 13 public class Activity_Manager extends Fragment {14     private Button btn1;15     private Button btn2;16     private FragmentManager fm;17     private FragmentTransaction ft;18     private Activity_1 a1;19     private Activity_2 a2;20     private View v;21     @Nullable22     @Override23     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {24         if (v == null) {25             v = inflater.inflate(R.layout.activity_manager, null);26             btn1 = (Button) v.findViewById(R.id.btn1);27             btn2 = (Button) v.findViewById(R.id.btn2);28             a1 = new Activity_1();29             a2 = new Activity_2();30             btn1.setOnClickListener(clickListener);31             btn2.setOnClickListener(clickListener);32             //窗体加载的时候先把两个Fragment界面添加进来33             fm = getFragmentManager();34             ft = fm.beginTransaction();35             ft.add(R.id.fl, a1, Activity_1.class.getName());//添加第一个窗体36             ft.add(R.id.fl, a2, Activity_2.class.getName());//添加第二个窗体37             ft.show(a1);//显示第一个界面38             ft.hide(a2);//隐藏第二个界面39             ft.commit();//提交事务40         }41         return v;42     }43 44     private View.OnClickListener clickListener = new View.OnClickListener() {45         @Override46         public void onClick(View v) {47             ft = fm.beginTransaction();48             switch (v.getId()) {49                 case R.id.btn1:50                     //点击界面一的时候界面一显示界面二隐藏51                     ft.show(a1);52                     ft.hide(a2);53                     break;54                 case R.id.btn2:55                     //点击界面二的时候界面一隐藏界面二显示56                     ft.show(a2);57                     ft.hide(a1);58                     break;59             }60             ft.commit();61         }62     };63 }

activity_n.xml

 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3     android:orientation="vertical" android:layout_width="match_parent" 4     android:layout_height="match_parent"> 5     <TextView 6         android:layout_width="wrap_content" 7         android:layout_height="wrap_content" 8         android:text="第N个界面" 9         android:layout_centerHorizontal="true"10         android:layout_centerVertical="true"11         android:textSize="30sp"/>12 </RelativeLayout>

Activity_n.java

 1 package com.example.lession30_fragment; 2  3 import android.os.Bundle; 4 import android.support.annotation.Nullable; 5 import android.support.v4.app.Fragment; 6 import android.view.LayoutInflater; 7 import android.view.View; 8 import android.view.ViewGroup; 9 10 /**11  * Created by 世宽 on 2016/11/30.12  */13 14 public class Activity_n extends Fragment {15     private View v;16     @Nullable17     @Override18     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {19         if(v==null){20             v=inflater.inflate(R.layout.activity_n,null);21         }22         return v;23     }24 }

activity_1.xml

 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3     android:orientation="vertical" android:layout_width="match_parent" 4     android:layout_height="match_parent"> 5     <TextView 6         android:layout_width="wrap_content" 7         android:layout_height="wrap_content" 8         android:text="我是第一个界面" 9         android:textSize="30sp"10         android:layout_centerHorizontal="true"11         android:layout_centerVertical="true"/>12 </RelativeLayout>

Activity_1.java

 1 package com.example.lession30_fragment; 2  3 import android.os.Bundle; 4 import android.support.annotation.Nullable; 5 import android.support.v4.app.Fragment; 6 import android.view.LayoutInflater; 7 import android.view.View; 8 import android.view.ViewGroup; 9 10 /**11  * Created by 世宽 on 2016/11/30.12  */13 14 public class Activity_1 extends Fragment {15     private View v;16     @Nullable17     @Override18     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {19         if(v==null){20             v=inflater.inflate(R.layout.activity_1,null);21         }22         return v;23     }24 }

 

activity_2.xml

 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3     android:orientation="vertical" android:layout_width="match_parent" 4     android:layout_height="match_parent"> 5     <TextView 6         android:layout_width="wrap_content" 7         android:layout_height="wrap_content" 8         android:text="我是第二个界面" 9         android:textSize="30sp"10         android:layout_centerHorizontal="true"11         android:layout_centerVertical="true"/>12 </RelativeLayout>

Activity_2.java

 1 package com.example.lession30_fragment; 2  3 import android.os.Bundle; 4 import android.support.annotation.Nullable; 5 import android.support.v4.app.Fragment; 6 import android.view.LayoutInflater; 7 import android.view.View; 8 import android.view.ViewGroup; 9 10 /**11  * Created by 世宽 on 2016/11/30.12  */13 14 public class Activity_2 extends Fragment {15     private View v;16     @Nullable17     @Override18     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {19         if(v==null){20             v=inflater.inflate(R.layout.activity_2,null);21         }22         return v;23     }24 }

 

ViewPager+Fragment实现左右切换,还有点击事件