Red de conocimiento del abogados - Preguntas y respuestas sobre la Ley de patentes - Cómo jugar con gráficos vectoriales de Android VectorDrawable

Cómo jugar con gráficos vectoriales de Android VectorDrawable

A partir de la versión 5.0 (API nivel 21), Android comienza a admitir gráficos vectoriales. Con respecto a qué son los gráficos vectoriales y cuáles son sus ventajas y desventajas, este artículo está fuera del alcance de este artículo. Para obtener más información, consulte la Enciclopedia de gráficos vectoriales. Sin embargo, estas son sus ventajas:

Guarda la menor cantidad de información, el tamaño del archivo es más pequeño que los mapas de bits y el tamaño del archivo no tiene nada que ver con el tamaño del objeto.

Ampliar vector gráficos de forma arbitraria y no se pueden perder detalles o claridad porque los gráficos vectoriales son independientes de la resolución.

De las dos ventajas anteriores, el uso de imágenes vectoriales en el proyecto puede al menos reducir el tamaño de nuestro paquete apk y puede proporcionar una gran comodidad al adaptarse a la pantalla, porque las imágenes vectoriales son independientes de la resolución. de.

Como se mencionó anteriormente, los gráficos vectoriales solo se admiten desde 21. Entonces, ¿qué debo hacer si quiero cambiarlo a compatibilidad con versiones anteriores? Si esta pregunta se hubiera hecho en el pasado, habría dicho que la respuesta que desea está disponible en github. Pero no diría eso ahora, porque Google actualizó la biblioteca de soporte hace algún tiempo y la hizo oficialmente compatible con el uso de gráficos vectoriales. Si quieres preguntar con qué versión es compatible, te diré que los gráficos vectoriales son compatibles con API7 y las animaciones de gráficos vectoriales son compatibles con API11 (¿ya es suficiente para tu uso)?

Bien, hablemos de cómo utilizar gráficos vectoriales en proyectos.

1. Uso de VectorDrawable

Según la declaración oficial, para usar gráficos vectoriales en versiones inferiores, es necesario introducir una nueva biblioteca de compatibilidad support-vector-drawable en el proyecto. y appcompat La versión de la biblioteca -v7 debe ser 23.2.0 (23.2.1 se ha publicado al momento de escribir este artículo). Y también debe modificar la configuración relevante de gradle. No permita que gradle genere archivos png para diferentes densidades en versiones bajas (por debajo de API 21) al compilar, porque Android Studio 1.4 admite gráficos vectoriales.

Modificar la versión de appcompat-v7

compilar 'com.android.support:appcompat-v7:23.2.0'

NOTA: Aquí solo introduje Para la versión 23.2.0 de la biblioteca appcompat-v7, support-vector-drawable-23.2.0 y animación-vector-drawable-23.2.0 se compilan después de sincronizar gradle.

Modifica el archivo de configuración de Gradle

Si la versión de tu complemento de Gradle es inferior a 2.0, debes modificarlo así

android {

defaultConfig {

//No permitir que Gradle genere automáticamente imágenes png con diferentes resoluciones de pantalla

generatedDensities = []

}

aaptOptions {

additionalParameters "--no-version-vectors"

}

}

Si su versión del complemento Gradle es 2.0, deberías modificarlo así

android {

defaultConfig {

vectorDrawables.useSupportLibrary = true

}

}

Después de modificar los pasos anteriores, puede utilizar gráficos vectoriales en su proyecto. Entonces, hablemos formalmente sobre cómo usarlo.

Android Studio nos proporciona una herramienta Vector Asset Studio que nos permite generar imágenes vectoriales a partir de iconos de materiales y archivos svg. Para un uso específico, consulte la documentación oficial, por lo que no entraré en detalles aquí.

Las imágenes vectoriales en Android existen en forma de documentos xml. Una imagen vectorial se define de la siguiente manera y contiene información de datos sobre la imagen vectorial.

lt;!-- res/drawable/heart.xml --gt;

lt;vector xmlns: android="/apk/res/android"

android:ancho="24dp"

android:altura="24dp"

android:viewportHeight="24.0"

android:viewportWidth="24.0 "gt;

lt;ruta

android:fillColor="#FF000000"

android:pathData="M11.99, 2C6.47, 2 2 , 6.48 2, 12s4.47, 10 9.99, 10C17.52, 22 22, 17.52 22, 12S17.52, 2 11.99, 2zM12, 20c-4.42, 0 -8, -3.58 -8, -8s3.58, -8 8, -8 8, 3.58 8, 8 -3.58, 8 -8, 8zM15.5, 11c0.83, 0 1.5, -0.67 1.5, -1.5S16.33, 8 15.5, 8 14, 8.67 14, 9.5s0. 67, 1.5 1.5, 1.5zM8.5, 11c0.83, 0 1.5, -0.67 1.5, -1.5S9.33, 8 8.5, 8 7, 8.67 7, 9.5 7.67, 11 8.5, 11zM12, 17.5c2.33, 0 4.31, -1.46 5.11, -3.5L6.89, 14c0.8, 2.04 2.78, 3.5 5.11, 3.5z"/gt;

lt;/vectorgt;

Este soy yo Generado a través del icono de material, corresponde a la clase VectorDrawable en Android, que es la clase VectorDrawableCompat en el paquete de compatibilidad.

Después de definir el gráfico vectorial, podemos usarlo como un gráfico normal.

Sin embargo, hay algunos puntos a tener en cuenta:

*Cuando se utiliza el atributo android:src, debe reemplazarse con el atributo app:srcCompat

versión lt;?xml ="1.0" codificación="utf- 8"?gt;

lt; RelativeLayout xmlns: android="/apk/res/android"

xmlns: tools="/tools "

xmlns :app="/apk/res-auto"

android: layout_width="match_parent"

android: layout_height="match_parent"

android: paddingBottom= "@dimen/activity_vertical_margin"

android: paddingLeft="@dimen/activity_horizontal_margin"

android: paddingRight="@dimen/activity_horizontal_margin"

android: paddingTop ="@dimen/activity_vertical_margin"

tools:context="com.damon.vectordrawabledemo.MainActivity"gt;

lt;ImageView

android:layout_width= "wrap_content"

android:layout_height="wrap_content"

app:srcCompat="@drawable/ic_mood_black_24dp" /gt;

lt;/RelativeLayoutgt;

*Cuando utilice gráficos vectoriales en lugares distintos a los atributos src, debe envolver los gráficos vectoriales en un contenedor dibujable (como StateListDrawable, InsetDrawable, LayerDrawable, LevelListDrawable y Girar dibujable). De lo contrario, se informará un error si la versión es baja.

El uso en el código no es diferente de las imágenes png ordinarias y se llama a la misma API.