ventajas vectoriales vectorial usos mapas mapa imagenes imagen graficos formatos formato entre diferencia desventajas cuadro comparativo caracteristicas android bitmap tint

android - vectoriales - Tintar mapa de bits en la lista de capas



mapa de bits usos (1)

Para cualquier otra persona que pueda venir a través de esta pregunta. Esto es lo que hice.

Preparar

  • Android Studio 2.3.2
  • Windows 10

    Gradle

  • minSdkVersion 15

  • targetSdkVersion 25
  • compile ''com.android.support:appcompat-v7:25.3.1''

Dispositivos de prueba

  • Asus Padfone X Android v4.4.2
  • Samsung Galaxy S3 Android v6.0
  • Samsung Galaxy S7 Android v7.0

Capa Dibujable Agregué android:id=@+id/bitmapID al elemento que contiene el mapa de bits

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="oval"> <solid android:color="#9e9e9e" /> <size android:width="45dp" android:height="45dp"/> </shape> </item> <item android:id="@+id/tintDrawableImg" android:left="5dp" android:right="5dp" android:top="5dp" android:bottom="5dp"> <bitmap android:src="@mipmap/ic_pencil" android:tint="#860000" /> </item> </layer-list>

Diseño de actividad Agregué la capa dibujable a un ImageView

<ImageView android:id="@+id/tintLayerTest" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:src="@drawable/test_layer"/>

MainActivity En el método onCreate () podemos ubicar el mapa de bits de la capa dibujable usando findViewByID

public class MainActivity extends AppCompatActivity { ImageView iv; LayerDrawable ld; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Declare ImageView containing LayerDrawable iv = (ImageView)findViewById(R.id.tintLayerTest); //Get LayerDrawable from ImageView ld = (LayerDrawable)iv.getDrawable(); //Get specific Drawable/Bitmap from within LayerDrawable //by ID and pass it as an independent Drawable Drawable ldDrawable = ld.findDrawableByLayerId(R.id.tintDrawableImg); //Pass your new Drawable to DrawableCompat.setTint //and define your color int DrawableCompat.setTint(ldDrawable, ContextCompat.getColor(this, R.color.colorAccent)); } }

Espero que esto ayude a otros que se encuentren con esta pregunta.

Estoy tratando de aplicar tinte al mapa de bits dentro de <layer-list>

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="@color/grey" /> <size android:width="45dp" android:height="45dp"/> </shape> </item> <item android:left="5dp" android:right="5dp" android:top="5dp" android:bottom="5dp"> <bitmap android:src="@drawable/ic_action" android:tint="#FF000000" /> </item> </layer-list>

La vista previa muestra que debería funcionar, DESDE ANDROID-STUDIO:

Pero no se tiñe cuando se implementa en el dispositivo:

Se tiñe correctamente si uso ImageView en mi diseño, pero falla con la lista de capas. Creo que he intentado cada tintMode sin resultados.