La Red de Conocimientos Pedagógicos - Currículum vitae - ¿Cuáles son los tipos de recursos en el sistema Android?

¿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 ;

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

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 como

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;

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" ...

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);

// 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;

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"

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

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>

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;

lt;/stylegt;

lt;style name="textViewStyle1" parent="textViewStyle"gt;lt;/stylegt;lt;!-- Este estilo hereda de textViewStyle --gt ;

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; ;