Fragment应用的几种方法
1,什么是Fragment
Fragment的意为碎片,在Android studio中可以理解为在一个Activity中进行不同界面的切换。
2,用Fragment能解决什么问题
Fragment可以解决不同屏幕分辨率的适配问题。
3,Fragment静态加载方法
Fragment静态加载,实现同一界面上存在不同的界面。
- Fragment的XML展示:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<fragment
android:id="@+id/f_one"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:name="com.example.abc.myapplication.fragment.BlankFragment"
//Fragment的路径
/>
<fragment
android:id="@+id/f_two"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:name="com.example.abc.myapplication.fragment.BlankFragment2"
/>
</LinearLayout>
4,Fragment动态加载方法
Fragment的动态加载可以理解为屏幕的覆盖,在屏幕里额外添加可动的部分。需要用FrameLayout将Fragment进行包装
- 书写方式
<FrameLayout
android:id="@+id/fra"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_toRightOf="@id/main_rll1"
android:layout_marginLeft="10dp">
</FrameLayout>
- 在点击事件中实现点击换页
public void onClick(View view) {
FragmentManager manager = getFragmentManager();//创建FragmentManager的对象
FragmentTransaction transaction = manager.beginTransaction();//创建FragmentTransaction对象
switch (view.getId()) {
case R.id.btn_one:
//显示男装
if (fragmentOne == null) {//判断Fragment是否为空
fragmentOne=new FragmentOne();//为空新建一个Fragment
}
transaction.replace(R.id.fra, fragmentOne);//否则用第一个界面替换
break;
case R.id.btn_two:
//显示女装
if (fragmentTwo == null) {
fragmentTwo=new FragmentTwo();
}
transaction.replace(R.id.fra, fragmentTwo);
break;
default:
break;
}
transaction.commit();//提交Fragment
}
男装女装的实例用Fragment的转换的效果展示
5,Viewpager+Fragment实现页卡滑动切换
- 首先需要创建适配器以及布局文件
public class Weixi extends FragmentPagerAdapter{
private List<Fragment> mfragmentList;
//用来存放Fragment的列
public Weixi(FragmentManager fm,List<Fragment> fragmentList) {
super(fm);
this.mfragmentList=fragmentList;
//用来接收传来的Fragment
}
@Override
public Fragment getItem(int position) {
return mfragmentList.get(position);
//返回Fragment的列表。获取位置。
}
@Override
public int getCount() {
return mfragmentList.size();
//返回Fragment的个数
}
}
- 使用ViewPager进行Fragment放置
<android.support.v4.view.ViewPager
android:id="@+id/rll2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/rll1">
</android.support.v4.view.ViewPager>
- 按键绑定ID,设置监听并把ViewPager绑定适配器
private void bindID() {
btn1 = findViewById(R.id.rll1_one);
btn2 = findViewById(R.id.rll1_two);
btn3 = findViewById(R.id.rll1_three);
//给按键绑定ID
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
//对按键设置监听
lianFragment=new LianFragment();
friendFragment=new FriendFragment();
newFragment=new NewFragment();
//给每个Fragment创建对象
fragmentList.add(lianFragment);
fragmentList.add(friendFragment);
fragmentList.add(newFragment);
//将对象赋给创建的fragment列里面
Weixi adapter=new Weixi(getSupportFragmentManager(),fragmentList);
//创建适配器对象
viewPager.setAdapter(adapter);
//绑定适配器
}
- 监听并设置按键跳转到ViewPager对应的界面
public void onClick(View view) {
switch (view.getId()) {
case R.id.rll1_one:
//监听按键显示界面
viewPager.setCurrentItem(0);
//viewPager的第一个界面其他依次递增
break;
case R.id.rll1_two:
viewPager.setCurrentItem(1);
break;
case R.id.rll1_three:
viewPager.setCurrentItem(2);
break;
default:
break;
}
}
效果展示-点击和滑动皆可以进行页面的切换