Latest web development tutorials

fragmentação Android único frame

único quadro de detritos: fragmentos de um único quadro é projetado para os dispositivos de tela pequena, tais como dispositivos portáteis (telemóveis), suporte a Android 3.0 ou posterior.


Exemplos

Este exemplo explica como criar suas próprias peças. Aqui criamos dois fragmentos, um dos quais é usado no dispositivo é uma tela de cruz, quando o dispositivo é utilizado num outro tempo de tela vertical. Vamos seguir os passos começar.

passo descrição
1 Usando Android Studio IDE para criar um aplicativo Android, com o nome de solteiro Fragments, cn.uprogrammer.singlefragments nome do pacote.
2 Modificar o principal arquivo ativo como mostrado abaixo MainActivity.java. Aqui nós estamos indo para verificar a orientação do dispositivo, e com base nisso para alternar entre diferentes peças.
3 Criar dois arquivos PortraitFragment.java e LandscapeFragment.java no pacote cn.uprogrammer.singlefragments e método associado.
4 Criar um res de arquivo layout / layout / landscape_fragment.xml e res / layout / portrait_fragment.xml para definir o layout dos dois fragmentos.
5 Modificar res / layout / activity_main.xml para conter dois fragmentos.
6 Definir uma necessidade constante na res / valores / strings.xml in.
7 Lançar emulador Android para executar o aplicativo e verificar os resultados das alterações feitas no aplicativo.

A seguir estão os principais conteúdos do src arquivo ativo / 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();
    }
}

Criar dois arquivos fragmentados LandscapeFragment.java e PortraitFragment.java em cn.uprogrammer.singlefragments pacote.

O seguinte é o arquivo LandscapeFragment.java conteúdo:

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);
    }

}

O seguinte é o arquivo de conteúdo 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);
    }
}

Criar dois arquivos de layout landscape_fragment.xml e portrait_fragment.xml no diretório res diretório / layout.

O seguinte é o arquivo landscape_fragment.xml conteúdo:

<?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>

O seguinte é o arquivo portrait_fragment.xml conteúdo:

<?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>

O seguinte é o conteúdo da res / layout arquivo / activity_main.xml, que contém duas partes:

<?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>

Certifique-res / valores / arquivo strings.xml contém o seguinte:

<?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>

Vamos apenas executar algumas aplicações individuais Fragmentos modificados. Presumo que você criou AVD durante o ambiente de instalação. Abra o projeto no arquivo ativo, clique na barra de ferramentas fotografia Ícone para executar o aplicativo no Android Studio. Estúdio Android instalar o aplicativo no AVD e inicia-lo. Se tudo correr bem, ele será exibido na janela do emulador da seguinte forma:

fotografia

De acordo com o seguinte para mudar a direção do modo de tela emulador:

  • fn + control + F11 mudança mac na paisagem como retrato e vice-versa
  • ctrl + F11 nas janelas
  • ctrl + F11 no Linux

Quando você alterar o modo, você verá o modo paisagem adequado para a realização da página:

fotografia

Desta forma, você pode ao mesmo evento usando peças não utilizadas para alcançar diferentes interfaces. Você pode construir a interface de acordo com suas necessidades usando um tipo diferente de componentes de interface.