En muchas aplicaciones, hemos visto la pantalla de Configuración, que es la más común en la mayoría de las aplicaciones. Esta pantalla de configuración se utiliza para gestionar las preferencias de los usuarios. Para crear esta pantalla de configuración, Android proporciona una función para crear una pantalla de preferencias de configuración. En este artículo, echaremos un vistazo a la implementación de la pantalla de configuración de preferencias en Android.
¿Qué vamos a construir en este artículo?
Construiremos una aplicación simple en la que mostraremos un botón simple y al hacer clic en ese botón abriremos una pantalla de configuración que crearemos usando las preferencias de configuración. Esta pantalla de configuración se verá similar a lo que podemos llegar a ver en la configuración de YouTube en la opción General. qué
Implementación paso a paso
Paso 1: crear un nuevo proyecto
Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.
Paso 2: trabajar con el archivo activity_main.xml
Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. A continuación se muestra el código para el archivo activity_main.xml .
XML
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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" tools:context=".MainActivity"> <!--button for opening settings activity--> <Button android:id="@+id/idBtnSettings" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="Settings" android:textAllCaps="false" /> </RelativeLayout>
Paso 3: Creación de una nueva actividad para mostrar la pantalla de configuración
Vaya a la aplicación > java > el nombre del paquete de su aplicación > haga clic con el botón derecho en él > Nuevo > Actividad y seleccione Actividad vacía y asígnele el nombre SettingsActivity .
Paso 4: trabajar con el archivo MainActivity.java
Vaya al archivo MainActivity.java y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity.java . Se agregan comentarios dentro del código para comprender el código con más detalle.
Java
import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { // creating a variable for our button. private Button settingsBtn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // initializing our button. settingsBtn = findViewById(R.id.idBtnSettings); // adding on click listener for our button. settingsBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // opening a new intent to open settings activity. Intent i = new Intent(MainActivity.this, SettingsActivity.class); startActivity(i); } }); } }
Paso 5: Creación de un archivo de preferencias para mostrar nuestra configuración
Navegue a la aplicación> res> Haga clic con el botón derecho en él> Nuevo> Archivo de recursos de Android y verá la pantalla a continuación.
Paso 6: agregue el siguiente código en el archivo strings.xml
Vaya a la aplicación > res > valores > archivo strings.xml y agréguele el siguiente código.
XML
<resources> <string name="app_name">GFG App</string> <string name="remind_to_take_a_break">Remind me to take a break</string> <string name="key_upload_quality">key_upload_quality</string> <string name="remind_me">Remind me to take a break</string> <string name="remind_me_for_bed_time">remind_me_for_bed_time</string> <string name="remind_for_bed_time">Remind me for bed time</string> <string name="limit_data_usage">prefs_limit_data_usage</string> <string name="stream_video">Only stream HD video on Wi-Fi</string> <string name="limit_mobile_usage">Limit mobile data usage</string> <string name="double_tap_to_seek">Double-tap to seek</string> <string name="pref_seek_val">pref_seek_val</string> <string name="seconds">seconds</string> <string name="uploads">Uploads</string> <string name="pref_uploads">pref_uploads</string> <string name="specify_network_prefs">Specify network preferences for uploads</string> <string name="prefs_restricted_mode">prefs_restricted_mode</string> <string name="restricated_mode">Restricted Mode can help to hide videos with potentially mature content.No filter is 100% accurate, but it should help you to avoid most of this type of content.</string> <string name="restricated_mode_description">Restricted Mode</string> <string name="prefs_enable_stats">prefs_enable_stats</string> <string name="enable_stats">Enable stats for nerds</string> <string-array name="pref_upload_quality_entries"> <item>360p</item> <item>480p</item> <item>720p</item> <item>1080p</item> <item>Original</item> </string-array> <string-array name="pref_remind_me_to_take_a_break"> <item>1 hours</item> <item>2 hours</item> <item>3 hours</item> <item>5 hours</item> <item>10 hours</item> </string-array> <string-array name="pref_seek_values"> <item>5</item> <item>10</item> <item>15</item> <item>20</item> <item>30</item> </string-array> <string-array name="pref_duration"> <item>0</item> <item>1</item> <item>2</item> <item>3</item> <item>4</item> </string-array> <string-array name="pref_uploads"> <item>Only when on Wi-Fi</item> <item>On any network</item> </string-array> </resources>
Paso 7: trabajar con el archivo preferencias.xml
En preferencias existen diferentes tipos de preferencias las cuales se enumeran a continuación:
- EditTextPreference : esto se usa para obtener el texto del usuario.
- ListPreference : esta opción se utiliza para mostrar un cuadro de diálogo con la lista de opciones para elegir.
- CheckBoxPreference : esta opción se usa para mostrar una casilla de verificación para alternar una configuración.
- SwitchPreference : esta opción se utiliza para encender y apagar el interruptor.
- RingtonePreference : esta opción se utiliza para abrir la página de tono de llamada de su dispositivo.
- Preferencia con una acción de intención android.intent.action.VIEW: para abrir un navegador externo navegando a una URL.
Vaya a la aplicación > res > xml > archivo preferencias.xml y agréguele el siguiente código. Se agregan comentarios en el código para conocer con más detalle.
XML
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <!--below line is to create preference category--> <PreferenceCategory android:title="General"> <!--in below line we are creating a list preference and we are adding default selected value in list for 3 rd index--> <!--dialog title is to set title for our dialog box entries is used to add list of data which we are adding from our strings file entry values is to add values to our entries. key is use to add key to our list preferences summary is use to add description to our option title is use to add title to our list preferences.--> <!--this list preference is for remind me option--> <ListPreference android:defaultValue="3" android:dialogTitle="@string/remind_to_take_a_break" android:entries="@array/pref_remind_me_to_take_a_break" android:entryValues="@array/pref_duration" android:key="@string/key_upload_quality" android:summary="@string/remind_me" android:title="@string/remind_me" /> <!--on below line we are creating a switch preference default value is use to set switch on or off key is use to set key title is use to add title to our switch--> <!--this switch preference option is to remind for a bed time--> <SwitchPreference android:defaultValue="false" android:key="@string/remind_me_for_bed_time" android:title="@string/remind_for_bed_time" /> <!--below switch preference is use for mobile data usage--> <SwitchPreference android:defaultValue="false" android:key="@string/limit_data_usage" android:summary="@string/stream_video" android:title="@string/limit_mobile_usage" /> <!--below list preference is use for double tap to seek option--> <ListPreference android:defaultValue="1" android:dialogTitle="@string/double_tap_to_seek" android:entries="@array/pref_seek_values" android:entryValues="@array/pref_duration" android:key="@string/pref_seek_val" android:summary="@string/seconds" android:title="@string/double_tap_to_seek" /> <!--below option is use to create a list preference for Upload preferences--> <ListPreference android:defaultValue="1" android:dialogTitle="@string/uploads" android:entries="@array/pref_uploads" android:entryValues="@array/pref_duration" android:key="@string/pref_uploads" android:summary="@string/specify_network_prefs" android:title="Uploads" /> <!--below switch preferences is use to restrict mode--> <SwitchPreference android:defaultValue="false" android:key="@string/prefs_restricted_mode" android:summary="@string/restricated_mode" android:title="@string/restricated_mode_description" /> <!--below switch pref is use for enable stats option--> <SwitchPreference android:defaultValue="false" android:key="@string/prefs_enable_stats" android:title="@string/enable_stats" /> </PreferenceCategory> </PreferenceScreen>
Paso 8: ahora cree una nueva clase Java para mostrar nuestro fragmento de preferencia
Vaya a la aplicación > java > el nombre del paquete de su aplicación > haga clic con el botón derecho en él > Nuevo > clase Java y asígnele el nombre Fragmento de configuración y agréguele el siguiente código. Se agregan comentarios en el código para conocer con más detalle.
Java
import android.os.Bundle; import android.preference.PreferenceFragment; import androidx.annotation.Nullable; public class SettingsFragment extends PreferenceFragment { @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); // below line is used to add preference // fragment from our xml folder. addPreferencesFromResource(R.xml.preferences); } }
Paso 9: trabajar con el archivo activity_settings.xml
Navegue hasta el archivo activity_settings.xml y agréguele el siguiente código. Se agregan comentarios en el código para conocer con más detalle.
XML
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout 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" tools:context=".SettingsActivity"> <!--frame layout for displaying our preference fragment--> <FrameLayout android:id="@+id/idFrameLayout" android:layout_width="match_parent" android:layout_height="match_parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
Paso 10: trabajar con el archivo SettingsActivity.java
Vaya a la aplicación > java > el nombre del paquete de su aplicación > el archivo SettingsActivity.java y agréguele el siguiente código. Se agregan comentarios en el código para conocer con más detalle.
Java
import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; public class SettingsActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_settings); // below line is to change // the title of our action bar. getSupportActionBar().setTitle("Settings"); // below line is used to check if // frame layout is empty or not. if (findViewById(R.id.idFrameLayout) != null) { if (savedInstanceState != null) { return; } // below line is to inflate our fragment. getFragmentManager().beginTransaction().add(R.id.idFrameLayout, new SettingsFragment()).commit(); } } }
Ahora ejecute su aplicación y vea el resultado de la aplicación.
Producción:
Publicación traducida automáticamente
Artículo escrito por chaitanyamunje y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA