Latest web development tutorials

fragmentation Android trame unique

débris de cadre unique: fragments d'un seul cadre est conçu pour les appareils à petit écran, tels que les appareils portables (téléphones mobiles), 3.0 ou version ultérieure support Android.


Exemples

Cet exemple explique comment créer vos propres morceaux. Ici, nous créons deux fragments dont l'un est utilisé dans le dispositif est un multi-écran lorsque l'appareil est utilisé dans un autre temps vertical de l'écran. Suivons les étapes commencent.

étape description
1 Utilisation de Studio Android IDE pour créer une application Android, nommé Fragments simples, le nom du package cn.uprogrammer.singlefragments.
2 Modifiez le fichier actif principal comme indiqué ci-dessous MainActivity.java. Ici, nous allons vérifier l'orientation de l'appareil, et sur cette base pour basculer entre les différentes pièces.
3 Créer PortraitFragment.java et LandscapeFragment.java deux fichiers dans cn.uprogrammer.singlefragments package et un procédé associé.
4 Créer une résolution de fichier de mise en page / mise en page / landscape_fragment.xml et res / layout / portrait_fragment.xml pour définir la disposition des deux fragments.
5 Modifier res / layout / activity_main.xml pour contenir deux fragments.
6 Définir un besoin constant dans la res / valeurs / strings.xml dans.
7 Lancez l'émulateur Android pour exécuter l'application et de vérifier les résultats des modifications apportées à l'application.

Voici les principaux contenus du fichier actif src / cn.uprogrammer.singlefragments / MainActivity.java de:

package cn.uprogrammer.singlefragment;

import android.os.Bundle;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.res.Configuration;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Configuration config = getResources().getConfiguration();

        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction =
                fragmentManager.beginTransaction();

        /**
         * 检测设备方向,并做相应地操作。
         */
        if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            /**
             * 设备的横屏模式。
             */
            LandscapeFragment ls_fragment = new LandscapeFragment();
            fragmentTransaction.replace(android.R.id.content, ls_fragment);
        }else{
            /**
             * 设备的竖屏模式。
             */
            PortraitFragment pm_fragment = new PortraitFragment();
            fragmentTransaction.replace(android.R.id.content, pm_fragment);
        }
        fragmentTransaction.commit();
    }
}

Créer deux fichiers fragmentés LandscapeFragment.java et PortraitFragment.java dans cn.uprogrammer.singlefragments de package.

Ce qui suit est le fichier LandscapeFragment.java contenu:

package cn.uprogrammer.singlefragment;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


public class LandscapeFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        /**
         * Inflate the layout for this fragment
         */
        return inflater.inflate(
                R.layout.landscape_fragment, container, false);
    }

}

Ce qui suit est le fichier de contenu de PortraitFragment.java:

package cn.uprogrammer.singlefragment;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class PortraitFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        /**
         * Inflate the layout for this fragment
         */
        return inflater.inflate(
                R.layout.portrait_fragment, container, false);
    }
}

Créer deux fichiers de mise en page landscape_fragment.xml et portrait_fragment.xml dans la résolution de répertoire / répertoire de mise en page.

Ce qui suit est le fichier landscape_fragment.xml contenu:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#7bae16">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/landscape_message"
        android:textColor="#000000"
        android:textSize="28sp" />

    <!-- More GUI components go here  -->

</LinearLayout>

Ce qui suit est le fichier portrait_fragment.xml contenu:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#666666">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/portrait_message"
        android:textColor="#000000"
        android:textSize="28sp" />

    <!-- More GUI components go here  -->

</LinearLayout>

Ce qui suit est le contenu de la mise en page res fichier / / activity_main.xml, qui contient deux pièces:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal">

    <fragment
        android:id="@+id/landscape_fragment"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="match_parent" />

    <fragment
        android:id="@+id/portrait_fragment"
        android:layout_weight="2"
        android:layout_width="0dp"
        android:layout_height="match_parent" />

</LinearLayout>

Assurez-res / valeurs / fichier strings.xml contient les éléments suivants:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Single Fragment</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    <string name="landscape_message">这是横屏模式碎片</string>
    <string name="portrait_message">这是竖屏模式碎片</string>
</resources>

Disons simplement exécuter une applications Fragments simples modifiés. Je suppose que vous avez créé AVD au cours de l'environnement d'installation. Ouvrez votre projet dans le fichier actif, cliquez sur la barre d'outils image Icône pour exécuter l'application Dans Android Studio. Android studio installer l'application sur la DAV et démarre. Si tout va bien, il sera affiché sur la fenêtre de l'émulateur comme suit:

image

Conformément à ce qui suit pour changer la direction du mode d'écran de l'émulateur:

  • fn + commande + F11 changement mac dans le paysage que portrait et vice versa
  • ctrl + F11 sur les fenêtres
  • ctrl + F11 sur Linux

Lorsque vous changez le mode, vous verrez le mode approprié pour la réalisation de la page de paysage:

image

De cette façon, vous pouvez au même événement en utilisant des pièces non utilisées pour réaliser des interfaces différentes. Vous pouvez construire l'interface en fonction de vos besoins en utilisant un type de composants d'interface différente.