¿Cuáles son los tipos de recursos en el sistema Android?
Tipos de recursos de Android
1. Recursos de cadena
gt;gt; 1. Cadenas ordinarias
gt;gt; array
Copiar código
lt;resourcesgt;
lt;string-array name="planets_array"gt;
lt;itemgt ;aaalt;/itemgt;
lt;itemgt;bbblt;/itemgt;
lt;/string-arraygt;
lt;/resourcesgt ; p>
Copiar código
Método de adquisición: getResources().getStringArray(R.array.planets_array)
gt;gt 3. Recursos de cadena plural
En algunos lenguajes naturales, diferentes números se usan de manera diferente, como un libro, dos libros. Cuando la cantidad es mayor que 1, se utiliza un sustantivo diferente u otra forma plural;
Copiar código
lt; resourcesgt;
lt plurals name= "numberOfp "gt;
lt; cantidad de artículo="one"gt; una personalt;/itemgt;
lt; cantidad de artículo="other"gt; ;
lt;/pluralsgt;
lt;/resourcesgt;
Copiar código
Además de uno y otro, el valor del atributo cantidad también puede ser cero, dos, pocos, muchos;
Cita la cadena plural:
//Cita la cadena plural con el número 1
getResources(). getQuantityString(R.pluarlas.numberOfp, 1);
// Los números de referencia son cadenas plurales de otros valores
getResources().getQuantityString(R.pluarlas .numberOfp, 10, 10);
gt;gt; 4. Cadena de formato de marcador de posición
Tres métodos comúnmente utilizados para formatear cadenas:
gt;gt ; 1. Utilice comillas en cadenas
Aunque los valores en la cadena se pueden especificar a voluntad, cuando se encuentran símbolos especiales (comillas dobles, comillas simples), se deben 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 (\).
lt;resourcesgt;
lt;string name="str1"gt;"Esto funcionará"lt;/stringgt; Esto funcionará
lt; string name="str2"gt; Esto funcionarált;/stringgt; Esto funcionará
lt; string name="str3"gt;\"apple\"lt;/stringgt; "apple"
lt;/resourcesgt;
gt;gt; 2. Formatee cadenas con marcadores de posición
Utilice String.format(String, Object... ) puede formatear una cadena con marcadores de posición. Solo necesita insertar un marcador de posición en la cadena y puede usar el método String.format para formatear el recurso de cadena. El marcador de posición requerido por el método de formato usa 1,,...,. n, de hecho, el enésimo marcador de posición corresponde al valor del parámetro n 1 del método de formato;
lt;resourcesgt;
lt;!-- $ s significa que el marcador de posición es reemplazado por una cadena, $d significa que el marcador de posición se reemplaza por un número entero--gt;
lt; string name="str1"gt hola, 1$s!Tienes 2$d mensaje nuevolt; ;/stringgt;
lt;/resourcesgt;
String str1 =String.format(getResources().getString(R.string.str1), "ly ", 17);
gt;gt; 3. Utilice etiquetas HTML para formatear recursos de cadenas
Los recursos de cadenas admiten algunas etiquetas HTML, por lo que se pueden usar directamente en recursos de cadenas. Estas cadenas de formato de etiquetas HTML p>
Los recursos de cadenas admiten las siguientes etiquetas HTML
lt; bgt; negrita
lt; italics
lt;ugt;palabras subrayadas
A veces es necesario utilizar etiquetas HTML y marcadores de posición para formatear una cadena al mismo tiempo. Si utiliza el método String.format para formatear una cadena, se ignorarán todas las etiquetas HTML de la cadena.
Para que el método de formato formatee los caracteres exactos con
etiquetas HTML, debe utilizar el método Html.formHTML para procesar la cadena
lt; >
lt; nombre de cadena="hello_world"gt; Bienvenido a lt; bgt; /bgt; , 1$s! Tienes lt ;bgt; 2d mensajes nuevos lt;/bgt;lt;/stringgt; lt;!--Una cadena que contiene marcadores de posición y etiquetas html--gt;
lt; /resourcesgt;
p>Dado que el método Html.formHTML debe usarse para procesar cadenas, "lt;" en la etiqueta HTML debe usar "lt;" para representar "gt;" necesita ser procesado
Obtener la cadena:
String text = String.format(getResources().getString(R.string.str2), "ly", 10);
CharSequence styledText = Html.fromHtml(text );
// Si un parámetro de formato contiene caracteres especiales de HTML, como "lt;", "amp;", puede hacerlo. use el siguiente método para leer el valor de la cadena
String escapedUsername = TextUtils.htmlEncode("");
String text1 = String.format(getResources().getString( R.string.str2), "ly", 20);
2.Recursos de diseño
1 Si el nodo raíz es una Vista, no se pueden agregar subetiquetas excepto. la etiqueta 2. El nodo raíz es ViewGroup, y los diseños de uso común son subclases de ViewGroup. 3. Reutilizar archivos de diseño Si desea reutilizar un archivo de diseño, puede hacerlo. use la etiqueta lt;include layout="@layout/ xx_layout" /gt; Si desea que otro archivo de diseño haga referencia a un archivo de diseño (usando la etiqueta lt; includegt; tag), puede usar lt; mergegt; como nodo raíz del archivo de diseño al que se hace referencia, porque lt ;mergegt; se hace referencia a los archivos de diseño), pero el archivo xml debe tener un nodo raíz, por lo que lt;mergegt; funciona como la raíz del nodo del archivo xml, para que el archivo xml no cause errores al compilar, puede usar 3. Recursos de imagen Se pueden almacenar en archivos de imagen de recursos de imagen, también puede utilizar recursos de imagen en formato xml para controlar el estado y el comportamiento de las imágenes; 3. p> gt;gt; 1. Recursos de imágenes ordinarios Dibujable da = getRe fuentes().getDrawable(R.drawable.xxx); gt;gt; 2.recursos de imagen xml Los recursos de imagen xml son en realidad archivos xml especificados en el directorio dibujable. El método también puede especificar ciertos atributos de la imagen, como la extracción y disposición de la imagen; lt bitmap xmlns: android="/apk/res/android" android: src= "@drawable/ic_launcher" android:tileMode="repeat" gt; lt /bitmapgt gt; recurso de imagen El archivo de recurso de imagen Nine-Patch debe tener 9.png como extensión de archivo, como abc.9.png La función principal de este recurso de imagen es: evitar imágenes Una cierta parte está estirada; determine la posición donde se muestra el contenido en el control que usa la imagen como imagen de fondo; El SDK de Android proporciona una herramienta Draw 9-patch, iníciela ; directorio sdk >\tools \draw9patch.bat el comando inicia esta herramienta; Puedes usar esta herramienta para dibujar una línea recta de 1 píxel de espesor alrededor de la imagen png. Las líneas rectas en el borde superior e izquierdo. El borde indica que la imagen se puede colocar en las direcciones horizontal y vertical respectivamente. Si no es necesario estirar un área determinada en la dirección horizontal o vertical, no es necesario dibujar la línea recta correspondiente. Las líneas rectas en el borde derecho y el borde inferior representan respectivamente el rango de visualización del contenido en el control; donde se encuentra la imagen, y el contenido solo dibuja líneas rectas en el borde derecho y en el borde inferior en la visualización del área, una diferencia importante entre las dos líneas rectas que representan el rango de visualización del contenido y el rango de extensión es que la línea recta representa el contenido. el rango de visualización no se puede desconectar en el medio, mientras que la línea recta que representa el rango de estiramiento se puede desconectar en el medio; El método de referencia para los recursos de imágenes de Nine-Patch es el mismo que el de los recursos de imágenes normales. Al hacer referencia, escriba solo el nombre del archivo, vitality.9.png; gt; 4.Recursos de imágenes XML de nueve parches Los recursos de imágenes de nueve parches también tienen su correspondiente xml. Utilice etiquetas lt; nine-patchgt; para hacer referencia a imágenes en formato Nine-Patch. Hay un atributo de tramado android: gt;gt; Los recursos de capa son similares a lt;FrameLayoutgt;La diferencia es que lt;FrameLayoutgt;las etiquetas pueden contener cualquier control, y cada capa de recursos de capa solo puede contener Imagen, la definición de recursos de capa debe usar lt;layer-listgt; nodo raíz del archivo de recursos, lt;layer-listgt; las etiquetas contienen múltiples etiquetas lt;itemgt; cada etiqueta representa una imagen, la última lt;itemgt;La etiqueta se muestra en el nivel superior; De forma predeterminada, la imagen intentará llenar el rango de la imagen mostrada y la imagen puede estirarse. Para evitar el estiramiento de la imagen, puede usar lt en la etiqueta lt; bitmapgt;Etiqueta de referencia de imagen; p> Copiar código lt;layer-list xmlns:android="/apk/res/android" gt; lt ;item android: píxeles inferiores="10dip" desplazados desde la parte inferior android: izquierda="10dip" píxeles desplazados desde la izquierda android: right="10dip" ... p> android: top="10dip"gt... lt; mapa de bits android: gravedad="centro" android: src="@drawable/hell" /gt; lt;/itemgt; lt;/layer-listgt; p> Copiar code En algunos casos, se pueden usar capas en lugar de lt;FrameLayoutgt; gt;gt; 6. Recursos de estado de imagen para manejar diferentes estados de controles Mostrar estado en Copiar código lt; selector xmlns: android="/apk/res/android"gt elemento android: drawable ="@drawable/bm" android: state_focused="true"gt; lt /itemgt; lt; elemento android: drawable="@drawable/bm" android: state_pressed="true"gt; p> lt;artículo andr oid: drawable="@drawable/bm"gt;lt;/itemgt; lt;/selectorgt; // android: state_focused/pressed se establece en verdadero para indicar el elemento actual El atributo dibujable es el estilo dibujable al enfocar y presionar Copiar código gt;gt 7. Recursos de nivel de imagen (Nivel) Recurso de imagen status Solo se pueden especificar unos pocos estados limitados y se pueden especificar más estados a través del nivel de imagen. El nivel de imagen es un rango entero y las imágenes en diferentes estados se pueden cambiar a través del método ImageView.setImageLevel o Drawable.setLevel; El recurso de nivel es un archivo xml. Debe ser "level-listgt" como nodo raíz. Cada elemento representa un intervalo de nivel. El siguiente es un archivo xml a través de ImageView.setImageLevel (nivel), los recursos de imagen mostrados se configuran de acuerdo con él. el intervalo donde se encuentra el nivel. Si el nivel no está en ningún Borre la imagen ImageView actual dentro de un rango lt nivel-list xmlns: android="/apk/res/android"gt; lt; elemento android: maxLevel=" 2" android: minLevel="0" android: drawable="@drawable/hell" /gt elemento android: maxLevel; ="4" android: minLevel="3" android: drawable= "@drawable/hell" /gt; lt;/level-listgt; gt;gt; Recursos de fundido cruzado También cambia dos imágenes (no se admite el cambio de más de dos imágenes) y las dos imágenes se cambian con un efecto de aparición y desaparición gradual, como una luz. gradualmente se vuelve más brillante o más oscuro cuando se enciende y apaga; lt; transición xmlns: android="/apk/res/android" gt lt; ="@drawable/hell"/gt; lt; elemento android: drawable="@drawable/hell"/gt; lt;/transitiongt; TransitionDrawable da = ...; // De la primera imagen cambia a la segunda imagen, el efecto de tiempo es de 1 segundo da.startTransition(1000); p> // Cambia de la segunda imagen a la primera, el efecto de tiempo es de 1 segundo da.reverseTransition(1000); gt; Incrustar (insertar) recursos de imagen Escenarios de uso: Requerido La imagen mostrada debe ser más pequeña que la Vista que carga la imagen (la imagen es más pequeña que el área de Vista También se define a través de recursos xml). y tiene solo un nodo insertado. lt; inset xmlns: android="/apk/res/android" android: drawable="@drawable/hell" android: insetLeft= "10dip" gt; lt; !--La distancia desde la imagen hacia la izquierda, extensión--gt; La distancia desde arriba/abajo/derecha--gt; lt;/insetgt; p> gt; 10. Recursos de imagen de clip. Utilice recursos de imagen de clip para mostrar solo una parte de la imagen. Por ejemplo, puede usar esto para crear una barra de progreso. xmlns: android= "/apk/res/android" android:clipOrientation="horizontal" //Especifica la dirección de intercepción android:drawable="@drawable/hell" //Especifica la dirección de intercepción image android: gravitation="left" gt // Especifica el método de intercepción, en este caso, intercepta desde el lado izquierdo lt;/clipgt ; ClipDrawable cd = ...; cd.setLevel(1000); ClipDrawable.setLevel(level) arriba establece el ancho de la imagen capturada, y ClipDrawable preestablece un valor máximo de 10000 (indica que no hay intercepción), el valor mínimo es 0 (indica que no se muestra); gt;gt 11. Escalar (Escalar) recurso de imagen lt; scale xmlns: android= "/apk/res/android" android: drawable="@drawable/hell" android: scaleGravity="center" // Establece el posición donde se muestra la imagen android:scaleHeight="70" //Establece la altura de visualización de la imagen android:scaleWidth="80" gt; de la visualización de la imagen lt;/ scalegt; gt;gt; 12. Recursos de forma Copiar código lt; xmlns: android="/apk/res/android" p> android: shape="rectangle" gt; La forma se puede especificar como rectángulo, óvalo (elipse), línea (línea recta), anillo (círculo) lt; cornersgt; Definir esquinas redondeadas p> lt;/cornersgt; lt;gradient android:angle="45" android:startColor="#000000" android: endColor="#FFFFFF" gt; Definir degradado de color, desde la esquina inferior izquierda hasta la esquina superior lt; /gradientgt; lt; paddinggt; Definir la distancia desde el contenido del control hasta el borde lt;/padding gt; lt;strokegt; Definir bordes lt;/strokegt; lt;solidgt; Definir relleno lt;/ solidgt; lt;sizegt; Definir tamaño lt;/sizegt; lt;/shapegt; Copiar código p> p> 13. Recursos de menú Los menús no solo se pueden crear mediante código en el método onCreateContextMenu o onCreateOptionsMenu, sino que también se pueden crear los archivos de recursos de menú correspondientes en el directorio res/menu y utilizado en los dos métodos anteriores Cargar recursos del menú; El archivo de recursos del menú debe usar la etiqueta lt;menugt; como nodo raíz, y cada elemento del menú está representado por un lt;itemgt;. Si desea definir un submenú, puede usar lt;itemgt; La etiqueta contiene lt;menugt;label; si desea agrupar varios elementos del menú en un grupo, puede usar lt;groupgt;contains multiple lt;itemgt;label; Copiar código @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflar el menú; barra de acciones si está presente. MenuInflater inflador = getMenuInflater(); inflador.inflate(R.menu.main, menu return true); } Copiar código Ver MenuInflater.inflate(int, Menú) Copiar código /** * Inflar una jerarquía de menú a partir del recurso XML especificado * * @param menuRes ID de recurso para que se cargue un recurso de diseño XML (. por ejemplo, lt; codegt; R.menu.main_activitylt; / codegt;) * @param menu El menú para inflar Los elementos y submenús se agregarán a este menú. > */ public void inflate (int menuRes, Menú menú) { XmlResourceParser analizador = null; prueba { analizador = mContext.getResources().getLayout(menuRes); AttributeSet attr s = Xml.asAttributeSet(parser); parseMenu(parser, attrs, menu); } captura ...finalmente { if (parser ! = null) parser.close(); } } Copiar código 14. ) gt;gt; 1. Estilo estilo El estilo en Android y el estilo en CSS tienen la misma función. Ambos se utilizan para definir el estilo de visualización de los elementos de la interfaz. Es una colección de una o más propiedades de control. El estilo definido debe definirse en res/values/styles.xml. La siguiente es la definición de un estilo: lt style name="textViewStyle"gt; /p> lt;item name="android:textSize"gt;22splt;/itemgt; lt;item name="android:textColor"gt;#FF0000lt;/itemgt; p> lt;/stylegt; lt;style name="textViewStyle1" parent="textViewStyle"gt;lt;/stylegt;lt;!-- Este estilo hereda de textViewStyle --gt ; p> lt;style name="textViewStyle.Livingstone"gt;lt;!--¿Otra forma de escribir la herencia de estilos, pero esta forma de escribir no se puede utilizar para heredar los estilos definidos que vienen con Android? --gt; lt;item name="android:textColor"gt;#00FF00lt;/itemgt; lt;/stylegt; Todo definido los estilos estarán en el archivo R. Generará automáticamente un ID de recurso; agregar un punto para indicar la herencia de estilo generará el ID de recurso que se muestra arriba; Referencia de estilo: lt; p> style="@style/textViewStyle" android: layout_width="fill_parent" android: layout_height="wrap_content" android: text="hello" /gt; gt; 2. Tema Tema El tema se aplica a toda la aplicación o actividad y el estilo se aplica a controles específicos. La aplicación del tema es la misma que la definición de estilo. La diferencia es que el tema también puede establecer el estilo de visualización de la ventana; si se hace referencia a todo el archivo de manifiesto, se debe hacer referencia a la referencia del tema. aplicación, la referencia debe configurarse en el nodo Aplicación, y la referencia A una sola Actividad, solo necesita hacer una referencia de configuración en esta Actividad; Copiar código lt ; style name="Livingstonetheme"gt;lt;!--Esta definición es un tema sin título--gt; lt;item name="android:windowNoTitle"gt;truelt;/itemgt; lt;item name="android:windowFullscreen"gt;? android:windowNoTitlelt;/itemgt; lt;!--El signo de interrogación indica una referencia al valor del android:windowNoTitle atributo en este tema--gt; lt;item name="android: textSize"gt;18splt;/itemgt; lt;/stylegt; Copiar código El sistema Android define algunos atributos, como android: theme="@android:style/Theme.Dialog", este tema puede hacer que la Actividad parezca un cuadro de diálogo Más. Los temas se pueden ver en el documento reference-gt; android-gt; Cuando el valor del atributo de estilo en el tema entra en conflicto con el valor del atributo en el estilo, se mostrará el valor en el estilo; Otros recursos El archivo de recursos también puede incluirlo. dimensiones (dimen), entero (entero), booleano (bool), recurso de matriz de enteros (matriz de enteros), matriz de recursos (matriz), color (color) TypedArray ta = getResources().obtainTypedArray. (int id); // Obtiene recursos de matriz, incluida matriz de enteros, matriz Resumen final: Además de los nombres de recursos en el directorio res/values, recursos en otros directorios se nombrarán mediante nombres de archivos. Genere variables en la subclase correspondiente de la clase R y los recursos en res/values usarán el valor del atributo de nombre como nombre de variable para generar variables en la subclase correspondiente de la clase R; ;