Intereting Posts
Firebase Нет свойств для сериализации, найденных в классе Android: отображение неопределенного индикатора выполнения в TabHost Правильный способ обработки предупреждения NullPointerException от Android Studio Проверка конверта с помощью Ksoap2 (Android) Как нарисовать заполненный треугольник в андроидном холсте? LoaderManager с несколькими загрузчиками: как получить правильный загрузчик курсора Предназначение для Google Maps 7.0.0 с местоположением Android: пользовательский ListAdapter расширяет возможности BaseAdapter при запуске приложения Как реализовать uncaughtException android Плавная анимированная сворачивающаяся панель инструментов с поддержкой Android Design Library Android: Получение URI файла из URI контента? Android. Запуск фоновой задачи каждые 15 минут, даже если приложение не работает. Как удалить внутренний файл хранилища в android? Ошибка синхронизации Gradle в студии Android при импорте проекта Как нарисовать круг вокруг булавки с помощью Google MAPS API v2

Как изменить цвет рисованных фигур в android

Я разрабатываю небольшое приложение для Android, в котором я устанавливаю ресурс в качестве фона для линейного макета. Теперь то, что я хочу сделать, меняет цвет фона линейной компоновки динамически, но в пределах ресурса с возможностью рисования. Мой код выглядит так:

// 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" > 

И я задал фон для линейного макета в моей деятельности, как это …

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

Теперь, что я хочу сделать, я хочу изменить цвет моего ресурса, который меняет цвет моего линейного макета с закругленным углом и отступом, определяемым в drawable ..

Я попробовал это следующим образом

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

Но он не работает для меня. Любое другое решение.

Итак, как это сделать … Нужна помощь … спасибо …

Solutions Collecting From Web of "Как изменить цвет рисованных фигур в android"

Изменение цвета макета динамически

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

Динамически задавать градиент фона

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

Вы можете попробовать что-то вроде этого:

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

И для получения дополнительной информации вы можете обратиться к:

Как изменить цвета Drawable в Android?

Изменяйте программный цвет

Android: изменение цвета формы во время выполнения

http://pastebin.com/Hd2aU4XC

Вы также можете попробовать следующее:

 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; } 

Как указано в разделе Как изменить цвета Drawable в Android?

Один из подходов состоял бы в том, чтобы создать второй извлекаемый XML со вторым цветом, а затем сменить фон макета на 2-й вариант.

использовать это..

 <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" />