¿Cuáles son los tres métodos de diseño de UI más utilizados en el sistema Android?
1. Recursos de cadenas
cadenas ordinarias
matrices de cadenas
Copiar código
ltresourcegt
ltstring-array name = " planets _ array "
litem gtaaa lt/item gt;
litem gtbbb lt/item gt ;
lt/string-array gt;
lt/resources gt;
Copiar código
Obtener método :getresources(). getstring array(r . array . planetas _ array).
gt gt3. Recursos de cadenas complejas
En algunos lenguajes naturales, diferentes números tienen diferentes usos, como un libro y dos libros. Cuando el número es mayor que 1, se utilizará un sustantivo diferente u otra forma plural;
Copiar código
ltresourcegt
ltplural name = " numberOfp " gt
litem cantidad="one " >Una persona lt/item gt;
litem cantidad="other " >Más personas lt/item gt; /plural gt
lt/resources gt;
Copiar código
Además de uno y otros, el valor del atributo cantidad también puede ser cero, dos , fiebre, Muchos;
Cadena compleja de referencia:
//El número de referencia es 1.
obtenerRecursos(). getQuantityString(r . pluarlas . number ofp, 1);
//El número de referencia es una cadena compleja con otros valores.
obtenerRecursos(). getQuantityString(r. pluarlas. number ofp, 10, 10);
gt gt4. Cadena de formato de marcador de posición
Hay tres métodos comunes para formatear cadenas:
gt gt1. Utilice comillas en cadenas
Aunque puede especificar el valor en la cadena a voluntad, cuando encuentre símbolos especiales (comillas dobles, comillas simples), deberá utilizar métodos especiales para procesar estos símbolos.
Si es una comilla simple ('), puede usar el carácter de escape (\) o comillas dobles (") para encerrar toda la cadena. Si es una comilla doble, puede usar el carácter de escape carácter antes de la comilla doble (\).
ltresourcegt
ltstring name="str1 " >"Esto funcionará" lt/string gt;Esto será útil
.ltstring name="str2 " >Esto funcionarált/string gt;Esto será útil
ltstring name="str3" >\ "Apple\" lt/string gt;"Apple" p>
lt/resources gt;
gt gt2. Usar marcadores de posición para formatear cadenas
El método String.format (cadena, objeto...) puede usar marcadores de posición Cadenas formateadas con caracteres. , los recursos de cadena se pueden formatear con cadenas.
El método Format requiere 1,,...,n. De hecho, el enésimo marcador de posición corresponde al valor del parámetro n 1 del método format;
lt recurso gt
lt! -$s significa que el marcador de posición se reemplaza por una cadena, $d significa que el marcador de posición se reemplaza por un número entero - gt;
ltstring name="str1 ">¡Hola, 1$s! Tienes 2$d nuevos correos electrónicos lt/string gt;
lt/resources gt;
string str 1 = string format(get resources().getString(R.string .str1. ), "ly", 17);
gt gt3. Formatee los recursos de cadena con etiquetas HTML
Los recursos de cadena admiten algunas etiquetas HTML, por lo que puede usar estas etiquetas HTML para formatear la cadena. directamente en el recurso de cadena.
Los recursos de cadenas admiten las siguientes etiquetas HTML
fuente ltb gt negrita
configuración de lti gt cursiva
palabras subrayadas ltu gt
A veces es necesario formatear cadenas con etiquetas HTML y marcadores de posición. Si la cadena se formatea utilizando el método String.format, se ignorarán todas las etiquetas HTML de la cadena. Para que el método de formato formatee la banda
Las etiquetas HTML son de hecho caracteres, debe usar el método Html.formHTML para procesar cadenas;
ltresourcegt
ltstring name = " hola _ mundo " gtBienvenido a ltb gtandroid lt/b gt; lt/string gt
ltstring name="str2 " >¡Hola, 1$s! Tienes ltb gt2d nuevos mensajes lt/b gt; - una cadena que contiene marcadores de posición y etiquetas html ->;
lt/resources>
Porque necesitas usar el método Html.formHTML para manejar la cadena,
Obtener cadena:
texto de cadena = cadena. formato(obtener recursos().getString(R.string.str2), "ly", 10);
secuencia de caracteres styledText = html . from html(text);
//Si el parámetro de formato contiene caracteres especiales HTML, como "
cadena de escape nombre de usuario = textutils . html encode(" " );
texto de cadena 1 = cadena .formato(obtener recursos(). getString(R.string.str2), "ly", 20
2.
1. Si el nodo raíz es una vista, excepto
2. El nodo raíz es un ViewGroup y los diseños comúnmente utilizados son todas subclases de ViewGroup.
3. Reutilizar archivos de diseño
Si desea reutilizar archivos de diseño, puede usar ltinclude layout = "@layout/xx _layout"/ gt
Si desea que otro archivo de diseño haga referencia a un archivo de diseño (usando
3. Recursos de imagen
Los archivos de imagen se pueden almacenar en recursos de imagen, imágenes en formato xml. Los recursos también se pueden se utiliza para controlar el estado y el comportamiento de las imágenes
gt gt1. Recursos de imágenes comunes
p>Drawable da = getDrawable(r . drawable . XXX). > recurso de imagen gt gt2.xml
El recurso de imagen XML es en realidad un archivo XML especificado en el directorio dibujable. Además, puede especificar algunos atributos de la imagen, como la extracción y la disposición de la imagen. p>
lt bitmap xmlns: android=" "
Android: src = " @ drawable/IC _ launcher "
Android: modo mosaico = " repetir " gt ;
lt/bitmap gt;
gt gt3. Recurso de imagen de nueve parches
El archivo de recurso de imagen de nueve parches debe tener 9.png como extensión de archivo. por ejemplo abc.9.png.
La función principal de este recurso de imagen es evitar que una determinada parte de la imagen se estire para determinar la posición de visualización del contenido en el control con la imagen como; la imagen de fondo;
El SDK de Android proporciona una herramienta Draw 9-patch. Inicie el comando \tools\draw9patch.bat para iniciar la herramienta;
Usando esta herramienta, puede dibujar. una línea recta con un grosor de 1 píxel alrededor del mapa png. Las líneas rectas en el borde superior y el borde izquierdo representan respectivamente el rango de valor potencial de la imagen en las direcciones horizontal y vertical. no es necesario estirar la dirección, no es necesario dibujar las líneas rectas correspondientes; las líneas rectas en el borde derecho y el borde inferior respectivamente Representan el rango de visualización del contenido en el control donde se encuentra la imagen. solo se muestra en el área donde se dibujan líneas rectas en el borde derecho y el borde inferior. Una diferencia importante entre las dos líneas rectas que representan el rango de visualización de contenido y el rango extendido es la mitad de la línea recta que representa el rango de visualización de contenido. No se puede desconectar, pero el medio de la línea recta que representa el rango de extensión se puede desconectar.
El método de referencia para los recursos de imágenes de nueve parches es el mismo que el de los recursos de imágenes normales. escriba el nombre del archivo vitality.9.png;
p>gt gt4.XML recurso de imagen de nueve parches
El recurso de imagen de nueve parches también tiene un recurso de imagen xml correspondiente, por lo que utilice
recurso de capa gt gt5.
Los recursos de capa son similares
De forma predeterminada, la imagen llena la imagen mostrada tanto como sea posible y la imagen puede ser estirado. Para evitar estirar la imagen, puede utilizar
Copiar código
lt Layer List xmlns: Android = " " gt
lt project
<; p >Android: bottom="10dip "Desplazamiento de píxeles inferiores.Android: left="10dip "Píxeles desplazados a la izquierda.
android:right="10dip"...
Android:top="10dip">...
ltbitmap
Android: gravedad="center"
Android: src="@drawable/hell"/gt;
lt/item gt;
lt/layer- list gt;
Copiar código
En algunos casos, puede usar capas en su lugar
gt gt6. Recursos de estado de imagen, procesando El estado de visualización del control en diferentes estados.
Copiar código
lt selector xmlns: Android = " " gt;
litem Android: drawable = " @drawable/BM " Android: state_focused = " true " gt; lt/item gt;
litem Android: drawable = " @ drawable/BM " Android: state_pressed = " true " gt; lt/item gt;
litem Android: drawable = " @ drawable/BM " gt; lt/item gt;
lt/selector gt;
//Android: Establecer state_focused/pressed Si es verdadero, significa que el dibujable La propiedad del elemento actual es el estilo dibujable cuando se enfoca y se presiona.
Copiar código
gt gt7.Recursos a nivel de imagen
El estado del recurso de imagen solo puede especificar un número limitado de estados, y se pueden especificar más estados a través de la imagen. nivel. El nivel de imagen es un intervalo entero y las imágenes en diferentes estados se pueden cambiar mediante el método ImageView.setImageLevel o Drawable.setLevel. El recurso de nivel de imagen es un archivo xml y debe usarse
lt; lista de niveles xmlns: Android = " " gt ;
litem Android: nivel máximo = " 2 " Android: nivel mínimo = " 0 " Android: drawable = " @ drawable/hell "/ gt; >
litem Android: nivel máximo = " 4 " Android: nivel mínimo = " 3 " Android: drawable = " @ drawable/hell "/ gt
lt/level-list gt; p>
gt gt8.cross Fundir recursos
También cambia dos imágenes (no se admite el cambio de más de dos imágenes), de modo que las dos imágenes tengan un efecto de aparición y desaparición gradual. , como que la luz se ilumina u oscurece gradualmente al cambiar;
p>ltTransition xmlns: Android = " " gt;
litem Android: drawable = " @ drawable/hell "/ gt ;
litem Android: drawable = " @ drawable/hell "/ gt;
lt/transition gt;
TransitionDrawable da =...; p>
// Cambiar de la primera imagen a la segunda En las dos imágenes, el efecto de tiempo es de 1 segundo.
da . start Transition(1000);
// Cambia de la segunda imagen a la primera, el efecto de tiempo es de 1 segundo.
da .transición inversa(1000);
gt gt9. Insertar recursos de imagen
Escenario de uso: se requiere que la imagen que se mostrará sea más pequeña que la vista que carga la imagen (el gráfico es más pequeño que el área de vista), también definida usando recursos xml, con un solo nodo insertado.
ltinset xmlns: android=" "
Android: draw able = " @ drawable/hell "
Android: inset left = " 10 dip " gt ;es! -Distancia que se extiende hacia la izquierda desde la imagen- gt; distancia superior/inferior/derecha- gt;
lt/inset gt
gt gt10. muestra la parte de la imagen, como hacer una barra de progreso;
ltclip xmlns: android=" "
Android: clip orientación = "horizontal"//Especifica la dirección del clip.
Android: draw able = " @ draw able/hell " //Especifica la imagen que se recortará.
Android: Gravity = "left" gt; //Especifica el método de interceptación, en este caso, intercepta desde la izquierda.
lt/clip gt;
Clipable cd =...;
CD establecido nivel(1000); setLevel(nivel) arriba establece el ancho de la imagen capturada. El valor máximo predeterminado de ClipDrawable es 10000 (lo que indica que no se captura) y el valor mínimo es 0 (lo que indica que no se muestra).
gt gt11. Escalar recursos de imagen
ltscale xmlns: android= " "
Android: draw able=" @ drawable/hell "
Android: escala de gravedad = "centro"//Establece la posición donde se muestra la imagen.
Android: scaleHeight="70" //Establece la altura de visualización de la imagen.
Android: scale width = "80" gt; //Establece el ancho de visualización de la imagen.
lt/scale gt;
gt gt12 Recurso de forma
Copiar código
ltshape xmlns: android= " "
Android: forma = "rectángulo" gt; La forma se puede especificar como rectángulo, elipse, línea y anillo.
lt Corners gt define esquinas redondeadas
lt/corners gt
lt gradient
android: angle="45 " p>
android: startColor="#000000 "
Android: end color = " # FFFFFF " gt; Define el degradado de color desde la esquina inferior izquierda hasta la esquina superior izquierda.
lt/gradient gt;
lt padding gt define la distancia desde el contenido del control hasta el borde.
lt/padding gt;
lt trazo gt define el borde
lt/stroke gt
lt sólido gt define el relleno;
p>
lt/solid gt;
ltsize gt define el tamaño
lt/size gt
lt/shape; gt;
Copiar código
13. Recursos de menú
Los menús no solo se pueden crear a través del código en el método onCreateContextMenu o onCreateOptionsMenu, sino también crear el menú correspondiente. Los archivos de recursos en el directorio res/menu Los recursos del menú se pueden cargar mediante los dos métodos anteriores.
El archivo de recursos del menú debe ser
Copiar código
@overwrite
público booleano onCreateOptionsMenu(menú menú){
//Inflar menú; esto agregará el elemento a la barra de acciones si existe.
MenuInflater inflador = getMenuInflater();
inflador.inflate(R.menu.main, menú)
Devuelve verdadero
}
Copiar código
Comprueba menuinflater.infect(int, menu).
Copiar código
/**
* Expande la jerarquía del menú desde el recurso XML especificado.
*
* @param menuResEl ID del recurso de diseño XML que se va a cargar (como ltcodegtr.menu.main_activitylt;/codegt;)
* @param menu El menú al que se ampliará. Se agregarán elementos y submenús al menú.
*/
public void inflate(int Menú, Menú menú) {
XmlResourceParser parser = null
Prueba {
analizador = mContext.getResources(). get layout(menuRes);
AttributeSet attrs = XML . asattributeset(parser);
parseMenu(parser, atributo, menú);
}Conectar en vivo. ..finalmente {
if (parser != null) parser close()
}
}
Copiar código<. /p>
14. Estilo/tema
gt gt1. Estilo
Los estilos en Android tienen las mismas funciones que los estilos en CSS. Se utilizan para definir el estilo de visualización de los elementos de la interfaz, que son colecciones que contienen una o más propiedades de control.
El estilo definido debe definirse en res/values/styles.xml. La siguiente es la definición del estilo:
ltstyle name="textViewStyle "
.nombre del elemento = " Android: tamaño del texto " gt; 22sp lt/elemento gt;
nombre del elemento = " Android: color del texto " gt; p> lt/estilo gt;
ltstyle nombre = " textViewStyle 1 " parent = " textViewStyle " > lt/estilo gt; -Este estilo hereda del estilo textview- gt;
ltstyle name="textViewStyle.Livingstone">;lt! -¿Otra forma de escribir herencia de estilos, pero no puede heredar los estilos definidos por Android de esta manera? - gt;
litem name = "Android: color de texto" gt;# 00FF00 lt/item gt;
lt/style gt;
Todos los estilos definidos generará automáticamente una identificación de recurso en el archivo R. Agregar un punto para indicar la herencia de estilo generará el ID de recurso que se muestra arriba.
Referencia al estilo:
lttextView
style="@style/textViewStyle "
Android: layout_width = " fill _ parent "
Android: layout_height = " wrap_content "
Android: text = " hola "/ gt;
gt Temas Temas
Los temas se aplican a toda la aplicación o actividad y los estilos se aplican a controles específicos. La aplicación del tema es la misma que la definición de estilo, excepto que el tema también puede establecer el estilo de visualización de la ventana; se debe citar una referencia al tema en el archivo de manifiesto. Si se refiere a toda la aplicación, debe configurarse en el nodo de la aplicación. Si se refiere a una sola actividad, solo debe configurarse en esta actividad.
Copiar código
ltstyle name="Livingstonetheme" > lt! -Esto se define como un tema sin título->;
litem name = " Android: ventana no título " gt; true lt/item gt
litem name = " Android: ventana pantalla completa "gt;? Android: ventana sin título lt;/item gt;
lt! - El signo de interrogación indica una referencia al valor del atributo Android:window not title en este tema-->;
litem name = "Android: tamaño del texto" gt;18sp lt;/item gt;
lt/style gt;
Copiar código
El sistema Android define algunos atributos, como Android:theme = "@Android:style/theme.dialog ", que puede hacer que las actividades parezcan un cuadro de diálogo. Se pueden encontrar más temas en la referencia de documentación - gt; Android - gt; Ver en R.style Cuando un valor de atributo de estilo en el tema entra en conflicto con un valor de atributo en el estilo, se mostrará el valor en el estilo
15. Otros recursos
Las dimensiones de recursos también pueden incluir dimensiones, números enteros, valores booleanos, matrices de enteros, matrices de recursos y colores.
TypedArray ta = getResources(). getTypedArray(int id); //Obtener recursos de matriz, incluidas matrices de enteros y matrices.
Resumen final:
A excepción de los nombres de recursos en el directorio res/values, los recursos en otros directorios generarán variables en las subclases correspondientes de la clase R, con nombres de archivos. ; Los recursos en res/values generarán variables con el atributo de nombre como nombre de variable en la subclase correspondiente de la clase R;