演示
项目结构
layout
- activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<androidx.viewpager.widget.ViewPager
android:id="@+id/main_viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="10"/>
</LinearLayout>
- frgmentone.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff0"
android:text="fragment1"/>
</LinearLayout>
- frgmenttwo.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#f00"
android:text="fragment2"/>
</LinearLayout>
java
- FragmentOne
public class FragmentOne extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//加载对应的布局
return inflater.inflate(R.layout.fragmentone,container,false);
}
}
- FragmentTwo
public class FragmentTwo extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragmenttwo,container,false);
}
}
- MyFragmentAdapter
public class MyFragmentAdapter extends FragmentPagerAdapter {
List<Fragment> list;
//api有点老,但是能用。used:2020.4.15
public MyFragmentAdapter(FragmentManager fm, List<Fragment> list) {
super(fm);
this.list=list;
}
@NonNull
@Override
public Fragment getItem(int position) {
return list.get(position);
}
@Override
public int getCount() {
return list.size();
}
}
- MainActivity
public class MainActivity extends AppCompatActivity {
private ViewPager viewPager;
private Fragment fragment1;
private Fragment fragment2;
private List<Fragment> fragmentList;
MyFragmentAdapter fragmentPagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//加载要放的盒子,就是fragment要放在哪里
viewPager=findViewById(R.id.main_viewpager);
fragment1=new FragmentOne();
fragment2=new FragmentTwo();
//取得fragment的实列,配置适配器。
fragmentList=new ArrayList<>();
fragmentList.add(fragment1);
fragmentList.add(fragment2);
fragmentPagerAdapter=new MyFragmentAdapter(getSupportFragmentManager(),fragmentList);
//用viewpager2就不行,版本不一样会导致错误
viewPager.setAdapter(fragmentPagerAdapter);
viewPager.setCurrentItem(0);
}
}
结束语
这是一个最简单的dome,之后的功能还会完善的。