废话:在上一篇的博客中我们给出了Fragment的简单介绍,这一片博客给大家介绍一下Fragment到底该怎样用。主要都用在哪方面等等。
需求:现有一个界面,要求,竖屏时界面的背景颜色为红色,横屏时界面的的背景颜色为黄色。(主要目的是为了给大家演示一下Fragment实现动态UI效果)
直接看代码好了:
一、背景颜色为红色的Fragment
package com.yw.myapiupdate.fragment; import android.annotation.SuppressLint; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.yw.myapiupdate.R; @SuppressLint("NewApi") public class FragmentRed extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragmentred, container,false); } }
红色布局:
<?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="fill_parent" android:layout_height="fill_parent" android:background="#ff0000" android:text="这是一个fragment的测试程序"/> </LinearLayout>
二、背景颜色为黄色的Fragment
package com.yw.myapiupdate.fragment; import android.annotation.SuppressLint; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.yw.myapiupdate.R; @SuppressLint("NewApi") public class FragmentYellow extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragmentyellow, container,false); } }
黄色布局:
<?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="fill_parent" android:layout_height="fill_parent" android:text="这是一个fragment的测试程序" android:background="#ffff00"/> </LinearLayout>
三、承载这两个布局的Activity
package com.yw.myapiupdate.fragment; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.view.Display; import com.yw.myapiupdate.R; @SuppressLint("NewApi") public class MainActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_layout); Display display = getWindowManager().getDefaultDisplay(); if(display.getWidth() > display.getHeight()){ FragmentRed red = new FragmentRed(); getFragmentManager().beginTransaction().replace(R.id.fragment_linear_layout, red).commit(); }else{ FragmentYellow yellow = new FragmentYellow(); getFragmentManager().beginTransaction().replace(R.id.fragment_linear_layout, yellow).commit(); } } }
主文件布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/fragment_linear_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:baselineAligned="false"> </LinearLayout>