Chess y Menu - (Parte IV) ¿Como agregar Settings?
Android ofrece una API para que trabajemos con los Settings de una forma cómoda.
Vamos a mostrar tan solo un ejemplo en este post, y dejar algunos links a otros lugares que amplían el tema.
El objetivo es identificar los componentes principales:
Comencemos
Agregando nuestros propios settings
En Android tenemos unos activities especiales para los settings, se llaman PreferenceActivity, y podríamos decir que son similares a los layouts, pero hay que crearlas como un XML dentro de res/xml
a) Creamos res/xml/settings.xml
dentro del directorio xml, con PreferenceScreen:
El contenido del archivo settings.xml es el siguiente:
Donde los valores de los string son definidos en el archivo strings.xml con el prefijo "pref_..."
ChessLab03-b
Open navigation drawer
Close navigation drawer
Settings
About
Idioma
Seleccionar Idioma
Idioma de la aplicación
Luego, tenemos la clase que extiende al PreferenceActivity:
public class UserSettingsActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
}
}
Importante: Hay que agregar el activity al AndroidManifest.xml
Por último, capturamos el evento del click sobre R.id.action_settings para cargar el activity que contiene los settings
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
Intent intent = new Intent(this, UserSettingsActivity.class);
startActivityForResult(intent, RESULT_SETTINGS);
return true;
}
return super.onOptionsItemSelected(item);
}
Observemos el resultado, cuando se seleccionan los Settings, en donde se puede agregar el idioma:
Leyendo el archivo de preferencias
¿Como podemos verificar que valor fue grabado? ¿Donde se persiste el valor?
Nuevamente, recurrimos al ADM Android Device Monitor, tal como lo habíamos hecho con las Shared Preferences:
Dentro de data/data/... etc:
Archivo: com.probarnocuestanada.chess.chesslab03_preferences.xml
Para ver su contenido, lo exportamos:
El contenido del archivo descargado es el siguiente, que hace referencia a la selección del idioma inglés:
Observamos que está también el archivo ChessLab03.xml del post de shared preferences
Distintos estilos para los Settings
Vamos a avanzar un poco mas, para ver distintos estilos aplicados y como influyen en el Look&Feel de los settings. Esto se edita en el AndroidManifest.xml donde está declarado el Activity de los settings
Estilo: @style/AlertDialog.AppCompat.Light
Observemos que con este estilo, no es modo dialog, sino un activity:
Además podemos agregar el botón de Volver con este estilo. (Con los Diálogos pequeños, se produce el crash de la aplicación si queremos agregar el botón de volver):
Con este ejemplo, cerramos el post de Settings en Android, aunque dejamos un par de links para ampliar el tema:
Links
Apple Developer sobre Settings:
Material Design sobre Settings:
Labels: android, Android Studio, chess
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home