Fragment的理解
1,什么是Fragment
Fragment的意为碎片,在Android studio中可以理解为在一个Activity中进行不同界面的切换。
- 1
- 2
2,用Fragment能解决什么问题
Fragment可以解决不同屏幕分辨率的适配问题。
- 1
- 2
3,Fragment静态加载方法
Fragment静态加载,实现同一界面上存在不同的界面。
- 1
- 2
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>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
4,Fragment动态加载方法
Fragment的动态加载可以理解为屏幕的覆盖。需要用FrameLayout将Fragment进行包装
- 1
- 2
<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>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
在点击事件中实现点击换页
- 1
- 2
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
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
男装女装的实例用Fragment的转换的效果展示
- 1
- 2
5,Viewpager+Fragment实现页卡滑动切换
首先需要创建适配器以及布局文件
- 1
- 2
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的个数
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
使用ViewPager进行Fragment放置
- 1
- 2
<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>
- 1
- 2
- 3
- 4
- 5
- 6
按键绑定ID,设置监听并把ViewPager绑定适配器
- 1
- 2
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);
//绑定适配器
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
监听并设置按键跳转到ViewPager对应的界面
- 1
- 2
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;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
效果展示-点击和滑动皆可以进行页面的切换
- 1
- 2