Android第一行代码-碎片

作者 汪小祯 日期 2016-08-07
Android第一行代码-碎片

第四章的学习了,感觉碎片有点难,慢慢码代码。

布局中添加碎片

新建两个布局文件,left_fragment.xml和right_fragment.xml

线性布局,不用特别设置,

新建两个继承Fragment的类

另一个类类似以下代码

public class LeftFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.left_fragment, container, false);
return view;
}
}

修改activity_main.xml代码

注意为相对布局

<fragment
android:id="@+id/left_fragment"
android:name="com.example.test.LeftFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<fragment
android:id="@+id/right_fragment"
android:name="com.example.test.RightFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />

动态加载碎片

新建一个碎片

新建一个another_right_fragment.xml和AnotherRightFragment类作为另一个右侧碎片
代码类似LeftFragment

修改activity_main.xml代码

将右侧碎片放在了一个FrameLayout中

<FrameLayout
android:id="@+id/right_layout"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" >
<fragment
android:id="@+id/right_fragment"
android:name="com.example.test.RightFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>

在按钮中添加事件

1.创建待添加的碎片实例。
2.获取到FragmentManager,直接调用getFragmentManager()方法可以得到
3.开启一个事务,通过beginTransaction()方法开启。
4.向容器内加入碎片,一般通过replace()方法实现,需要传入容器的id和待添加的碎片实例。
5.提交事务,调用commit()方法来完成。

AnotherRightFragment fragment = new AnotherRightFragment();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager
.beginTransaction();
transaction.replace(R.id.right_layout, fragment);
transaction.addToBackStack(null); //添加返回栈,Back键返回上一个碎片
transaction.commit();

碎片事件

1.运行状态
2.暂停状态
3.停止状态
4.销毁状态

动态加载布局的技巧

使用限定符

修改layout文件夹下面的activty_main.xml文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/left_fragment"
android:name="com.example.test.LeftFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>

在res文件夹下新建一个layout-large文件夹

新建一个布局,也是activty_main.xml文件。这个文件就会适配平板等大屏幕

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/left_fragment"
android:name="com.example.test.LeftFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<fragment
android:id="@+id/right_fragment"
android:name="com.example.test.RightFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3" />
</LinearLayout>

可以依照其他限定符,small,normal,large,xlarge,也可以使用最小宽度限定符。layout-sw600dp