texto tema studio mensajes los como color cambiar app aplicacion android background drawable android-linearlayout

tema - Cómo cambiar el color de las formas dibujables en Android



cambiar tema aplicacion android studio (5)

Cambiar el color del diseño dinámicamente

LinearLayout Layout = (LinearLayout) findViewById(R.layout.id); Layout.setBackgroundColor(Color.parseColor("#ffffff"));

Establecer dinámicamente el gradiente de color de fondo

View layout = findViewById(R.id.mainlayout); GradientDrawable gd = new GradientDrawable( GradientDrawable.Orientation.TOP_BOTTOM, new int[] {0xFF616261,0xFF131313}); gd.setCornerRadius(0f); layout.setBackgroundDrawable(gd);

Estoy desarrollando una pequeña aplicación para Android en la que configuro un recurso dibujable como fondo para el diseño lineal. Ahora, lo que quiero hacer cambia dinámicamente el color de fondo del diseño lineal, pero dentro de un recurso dibujable. Mi código se ve como:

// bcd.xml <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape> <gradient android:endColor="#22000000" android:startColor="#22000000" android:angle="270" /> <stroke android:width="3dp" android:color="@color/white" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item>

<LinearLayout android:id="@+id/lin_llt" android:layout_width="wrap_content" android:layout_height="wrap_content" >

y establezco el fondo para el diseño lineal en mi actividad como esta ...

parentLayout = (LinearLayout) view.findViewById(R.id.lin_llt); parentLayout.setBackgroundResource(R.drawable.bcd);

Ahora, lo que quiero hacer es cambiar el color de mi recurso dibujable que significa cambiar el color de mi diseño lineal con esquinas redondeadas y el relleno definido en dibujable.

Intenté esto de la siguiente manera

ShapeDrawable bgShape = (ShapeDrawable )parentLayout.getBackground(); bgShape.getPaint().setColor(Color.BLACK);

pero no funciona para mí. Cualquier otra solución.

Entonces, cómo hacerlo ... Necesito ayuda ... gracias ...


Los siguientes trabajos son excelentes para establecer el color del dibujo programable sin cambiar su forma:

parentLayout.getBackground().setColorFilter( Color.BLACK, PorterDuff.Mode.SRC_ATOP );


Podrías probar algo como esto:

Drawable sampleDrawable = context.getResources().getDrawable(R.drawable.balloons); sampleDrawable.setColorFilter(new PorterDuffColorFilter(0xffff00,PorterDuff.Mode.MULTIPLY));

y para más se puede referir a:

¿Cómo cambiar los colores de un Drawable en Android?

Cambia el color dibujable programáticamente

Android: Cambiar color de forma en tiempo de ejecución

http://pastebin.com/Hd2aU4XC

También puedes probar esto:

private static final int[] FROM_COLOR = new int[]{49, 179, 110}; private static final int THRESHOLD = 3; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test_colors); ImageView iv = (ImageView) findViewById(R.id.img); Drawable d = getResources().getDrawable(RES); iv.setImageDrawable(adjust(d)); } private Drawable adjust(Drawable d) { int to = Color.RED; //Need to copy to ensure that the bitmap is mutable. Bitmap src = ((BitmapDrawable) d).getBitmap(); Bitmap bitmap = src.copy(Bitmap.Config.ARGB_8888, true); for(int x = 0;x < bitmap.getWidth();x++) for(int y = 0;y < bitmap.getHeight();y++) if(match(bitmap.getPixel(x, y))) bitmap.setPixel(x, y, to); return new BitmapDrawable(bitmap); } private boolean match(int pixel) { //There may be a better way to match, but I wanted to do a comparison ignoring //transparency, so I couldn''t just do a direct integer compare. return Math.abs(Color.red(pixel) - FROM_COLOR[0]) < THRESHOLD && Math.abs(Color.green(pixel) - FROM_COLOR[1]) < THRESHOLD && Math.abs(Color.blue(pixel) - FROM_COLOR[2]) < THRESHOLD; }

Como se indica en ¿Cómo cambiar los colores de un Drawable en Android?


Un enfoque sería crear un segundo XML dibujable con el segundo color y luego cambiar el fondo del diseño con el segundo dibujable.


utilizar esta..

<solid android:color="#e1e1e1" /> <stroke android:width="2dp" android:color="#808080" /> <corners android:radius="10dp" /> <padding android:bottom="5dp" android:left="5dp" android:right="5dp" android:top="5dp" />