Android - Frammenti singoli

Single Frame Fragment

Il frammento di fotogramma singolo è progettato per dispositivi con schermo piccolo come dispositivi a mano (cellulari) e dovrebbe essere superiore alla versione Android 3.0.

Esempio

Questo esempio ti spiegherà come creare i tuoi frammenti . Qui creeremo due frammenti e uno di essi verrà utilizzato quando il dispositivo è in modalità orizzontale e un altro frammento verrà utilizzato in caso di modalità verticale. Quindi seguiamo i seguenti passaggi in modo simile a quello che abbiamo seguito durante la creazione di Hello World Example -

Passo Descrizione
1 Utilizzerai Android StudioIDE per creare un'applicazione Android e denominarla come MyFragments in un pacchetto com.example.myfragments , con Activity vuoto.
2 Modificare il file di attività principale MainActivity.java come mostrato di seguito nel codice. Qui controlleremo l'orientamento del dispositivo e di conseguenza passeremo tra diversi frammenti.
3 Crea due file java PM_Fragment.java e LM_Fragement.java nel pacchetto com.example.myfragments per definire i tuoi frammenti e i metodi associati.
4 Crea file di layout res / layout / lm_fragment.xml e res / layout / pm_fragment.xml e definisci i tuoi layout per entrambi i frammenti.
5 Modifica il contenuto predefinito del file res / layout / activity_main.xml per includere entrambi i frammenti.
6 Definire le costanti richieste in res / valori / strings.xml di file
7 Esegui l'applicazione per avviare l'emulatore Android e verifica il risultato delle modifiche apportate nell'applicazione.

Di seguito è riportato il contenuto del file di attività principale modificato MainActivity.java -

package com.example.myfragments;

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

public class MainActivity extends Activity {

   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      Configuration config = getResources().getConfiguration();

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

      /**
         * Check the device orientation and act accordingly
      */
		
      if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
         /**
            * Landscape mode of the device
         */
         LM_Fragement ls_fragment = new LM_Fragement();
         fragmentTransaction.replace(android.R.id.content, ls_fragment);
      }else{
         /**
            * Portrait mode of the device
         */
         PM_Fragement pm_fragment = new PM_Fragement();
         fragmentTransaction.replace(android.R.id.content, pm_fragment);
      }
      fragmentTransaction.commit();
   }

}

Crea due file di frammento LM_Fragement.java e PM_Fragment.java

Di seguito è riportato il contenuto di LM_Fragement.java file -

package com.example.myfragments;

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

/**
   * Created by TutorialsPoint7 on 8/23/2016.
*/

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

Di seguito è riportato il contenuto di PM_Fragement.java file -

package com.example.myfragments;

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

/**
   * Created by TutorialsPoint7 on 8/23/2016.
*/

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

Crea due file di layout lm_fragement.xml e pm_fragment.xmlnella directory res / layout .

Di seguito è riportato il contenuto di lm_fragement.xml file -

<?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="20px" />

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

</LinearLayout>

Di seguito è riportato il contenuto di pm_fragment.xml file -

<?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="20px" />

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

</LinearLayout>

Di seguito sarà il contenuto di res/layout/activity_main.xml file che include i tuoi frammenti -

<?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:name="com.example.fragments"
      android:id="@+id/lm_fragment"
      android:layout_weight="1"
      android:layout_width="0dp"
      android:layout_height="match_parent" />
   
   <fragment
      android:name="com.example.fragments"
      android:id="@+id/pm_fragment"
      android:layout_weight="2"
      android:layout_width="0dp"
      android:layout_height="match_parent" />

</LinearLayout>

Assicurati di avere il seguente contenuto di res/values/strings.xml file -

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="app_name">My Application</string>
   <string name="landscape_message">This is Landscape mode fragment</string>
   <string name="portrait_message">This is Portrait mode fragment></string>
</resources>

Proviamo a eseguire il nostro file modificato MyFragmentsapplicazione che abbiamo appena creato. Presumo che tu abbia creato il tuoAVDdurante la configurazione dell'ambiente. Per eseguire l'app da Android Studio, apri uno dei file di attività del tuo progetto e fai clic sull'icona Esegui dalla barra degli strumenti. Android Studio installa l'app sul tuo AVD e la avvia e se tutto va bene con la tua configurazione e applicazione, mostrerà la finestra Emulator dove farai clic sul pulsante Menu per vedere la seguente finestra. Sii paziente perché potrebbe volerci del tempo in base alla velocità del tuo computer -

Per cambiare la modalità della schermata dell'emulatore, procedi come segue:

  • fn+control+F11 su Mac per modificare il paesaggio in verticale e viceversa.

  • ctrl+F11 Su Windows.

  • ctrl+F11 su Linux.

Una volta modificata la modalità, sarai in grado di vedere la GUI che hai implementato per la modalità orizzontale come di seguito:

In questo modo puoi usare la stessa attività ma differenti GUI attraverso differenti frammenti. È possibile utilizzare diversi tipi di componenti della GUI per diverse GUI in base alle proprie esigenze.