vectorizar vectoriales vectorial una que programacion para mapa imagenes imagen ejemplos definicion caracteristicas aplicaciones android vector vector-graphics vectordrawable

android - vectoriales - Cómo cambiar el color de la ruta de dibujo vectorial en un clic de botón



manual de programacion android pdf (7)

El color de todo el vector se puede cambiar usando setTint.

Tienes que configurar tu ImageView en tu archivo de diseño como esto:

<ImageView android:id="@+id/myImageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:tint="@color/my_nice_color" android:src="@drawable/ic_my_drawable" android:scaleType="fitCenter" />

Luego para cambiar el color de tu imagen:

DrawableCompat.setTint(myImageView.getDrawable(), ContextCompat.getColor(context, R.color.another_nice_color));

Nota: myImageView.getDrawable() da nullpointerexception si el vector dibujable se establece en imageView como fondo.

Con la nueva actualización de soporte de Android, los vectores dibujables obtienen compatibilidad con versiones anteriores. Tengo una imagen vectorial con varios caminos. Quiero que el color de las rutas cambie al hacer clic en un botón o programáticamente en función de un valor de entrada. ¿Es posible acceder al parámetro de nombre de la ruta del vector? Y luego cambiar el color.


Hay varias formas de hacer lo mismo, pero esto funciona tanto para Vector Drawables como para SVG (Local / Network).

imageView.setColorFilter(ContextCompat.getColor(context, R.color.headPink), android.graphics.PorterDuff.Mode.SRC_IN);

(Cambie R.color.headPink con el color de su elección)


Puede cambiar el color de la ruta individual en tiempo de ejecución, sin utilizar la reflexión.

VectorMaster introduce control dinámico sobre los dibujos vectoriales. Todos y cada uno de los aspectos de un vector dibujable se pueden controlar dinámicamente (a través de instancias de Java), utilizando esta biblioteca.

Solo agrega la siguiente dependencia en el build.gradle de tu aplicación

dependencies { compile ''com.sdsmdg.harjot:vectormaster:1.0.9'' }

En su caso necesita un simple cambio de color:

Ejemplo de vector: your_vector.xml

<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24.0" android:viewportHeight="24.0"> <path android:name="outline" android:pathData="M20.84,4..." android:strokeColor="#5D5D5D" android:fillColor="#00000000" android:strokeWidth="2"/>

XML :

<com.sdsmdg.harjot.vectormaster.VectorMasterView android:id="@+id/your_vector" android:layout_width="150dp" android:layout_height="150dp" app:vector_src="@drawable/your_drawable" />

Java :

VectorMasterView heartVector = (VectorMasterView) findViewById(R.id.your_drawable); // find the correct path using name PathModel outline = heartVector.getPathModelByName("outline"); // set the stroke color outline.setStrokeColor(Color.parseColor("#ED4337")); // set the fill color (if fill color is not set or is TRANSPARENT, then no fill is drawn) outline.setFillColor(Color.parseColor("#ED4337"));

Desde: https://github.com/harjot-oberai/VectorMaster , licenciado bajo MIT.

Ahora tienes control total sobre los vectores dibujables.


Puede usar este método para cambiar el color en la API inferior para cambiar el color del vector en el fragmento

int myVectorColor = ContextCompat.getColor(getActivity(), R.color.colorBlack); myButton.getIcon().setColorFilter(myVectorColor, PorterDuff.Mode.SRC_IN);

en lugar de getActivity, debe usar MainActivity.this para cambiar el color del vector en la actividad


Según lo indicado por @Eyal en esta publicación https://.com/a/32007436/4969047

No puede cambiar el color de la ruta individual en tiempo de ejecución. En cuanto al código fuente de VectorDrawableCompat , el único método para exponer el elemento interno por nombre es getTargetByName que está presente en la clase de estado privado interno VectorDrawableCompatState de VectorDrawableCompat .

Dado que es un paquete privado (predeterminado), no puede usarlo (a menos que use reflection ).


Usa esto para cambiar el color de una ruta en tu dibujo vectorial

VectorChildFinder vector = new VectorChildFinder(this, R.drawable.my_vector, imageView); VectorDrawableCompat.VFullPath path1 = vector.findPathByName("path1"); path1.setFillColor(Color.RED);

La biblioteca está aquí: https://github.com/devsideal/VectorChildFinder


Verifique mi respuesta en esta otra pregunta: https://.com/a/38418049/1335438 .

Es una gran idea sobre cómo gestionar esto mediante el uso de Temas y la parametrización de las rutas para poder configurarlas dinámicamente.