una solo por otro online imagen igualar cs6 cs5 convertir como color capa cambiar android android-layout android-fragments android-activity android-xml

android - por - como convertir una imagen a un solo color en photoshop



Cambia programáticamente el color de la forma en la lista de capas (4)

En primer lugar, debe asignar ID a su elemento de layer-list .

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- First assign id to the list item--> <item android:id="@+id/your_shape"> <shape android:shape="rectangle"> <solid android:color="#000000" /> </shape> </item> <item android:left="5dp"> <shape android:shape="rectangle"> <solid android:color="@color/bg" /> </shape> </item> </layer-list>

A continuación, obtener su forma por id.

LayerDrawable shape = (LayerDrawable) getResources().getDrawable(R.drawable.your_shape)

Y puedes cambiar el color de tu forma llamando

shape.setColor(Color.Black); // changing to black color

EDITAR

Como getDrawable() ha quedado en desuso. Usa la siguiente línea de código.

LayerDrawable shape = (LayerDrawable) ContextCompat.getDrawable(YourActivity.this,R.drawable.your_shape)

¿Cómo puedo cambiar mediante programación el color ( #000000 ) de una forma en una lista de capas?

Aquí está mi lista de capas:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="#000000" /> // CHANGE THIS COLOR </shape> </item> <item android:left="5dp"> <shape android:shape="rectangle"> <solid android:color="@color/bg" /> </shape> </item> </layer-list>


También puede obtener el dibujo o el fondo de la vista y establecerlo de la siguiente manera.

LayerDrawable layerDrawable = (LayerDrawable) view.getDrawable(); //view.getBackground() GradientDrawable gradientDrawable = (GradientDrawable) layerDrawable .findDrawableByLayerId(R.id.layer_list_item_id); gradientDrawable.setColor(ContextCompat.getColor(getContext(), R.color.colorPrimary));


<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/outer"> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <size android:height="40dp" android:width="40dp"/> <padding android:top="3dp" android:bottom="3dp" android:right="3dp" android:left="3dp"/> <stroke android:width="1dp" android:color="#ffffff"/> </shape> </item> <item android:id="@+id/middle"> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <size android:height="40dp" android:width="40dp"/> <padding android:top="2dp" android:bottom="2dp" android:right="2dp" android:left="2dp"/> <stroke android:width="3dp" android:color="#ffffff"/> </shape> </item> <item android:id="@+id/inner"> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <size android:height="40dp" android:width="40dp"/> <solid android:color="#ffffff"/> </shape> </item> </layer-list>

Encuentra tu vista

LayerDrawable layerDrawable = (LayerDrawable) yourView.getBackground(); GradientDrawable outer = (GradientDrawable) layerDrawable.findDrawableByLayerId(R.id.outer); GradientDrawable middle = (GradientDrawable) layerDrawable.findDrawableByLayerId(R.id.middle); GradientDrawable inner = (GradientDrawable) layerDrawable.findDrawableByLayerId(R.id.inner);

Establecer color

outer.setColor(Color.parseColor(#000000)); inner.setColor(Color.parseColor(#FFFFFF));


<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/gradientDrawble"> // Give id <shape android:shape="rectangle"> <solid android:color="#000000" /> // CHANGE THIS COLOR </shape> </item> <item android:left="5dp"> <shape android:shape="rectangle"> <solid android:color="@color/bg" /> </shape> </item> </layer-list>

Luego en tu código solo agrega

LayerDrawable layerDrawable = (LayerDrawable) getResources() .getDrawable(R.drawable.my_drawable); GradientDrawable gradientDrawable = (GradientDrawable) layerDrawable .findDrawableByLayerId(R.id.gradientDrawble); gradientDrawable.setColor(color); // change color

Actualización Oct-2016

getDrawable() ahora está en desuso, debe usar ContextCompat.getDrawable(context, color) lugar.

Además, si obtiene LayerDrawable de findDrawableByLayerId() , entonces tuvo que llamar a view.setBackground(layerDrawable) para que esto tenga efecto. Alternativamente, la layerDrawable instancia de layerDrawable by view.getBackground() también funcionó.