Intereting Posts
Камера для Android использует несколько выровненных изображений для некоторых пользователей Медленный список файлов с помощью jCIFS в Windows Можно ли использовать один экземпляр SQLiteOpenHelper для всех действий в приложении для Android? Проблема при использовании пользовательского шрифта – «родной шрифт не может быть создан» Диалоговое окно «Дата и время» Избавление от переустановки в ListView с фоном для каждого элемента Android multi ImageView перемещается по прикосновению Как добавить заголовок к линейной компоновке Волейбол Android для использования с кешем Облачные сообщения Google без подключения к данным Как сделать его единственным пейзажем для планшетов и только портрет для телефонов? Android SDK 14 – Не удается создать устройство GTV Eclipse: ошибка MAT Поверните растровое изображение с помощью рендеринга скрипта android IDEA – «Импорт из внешней модели» против «Создать из существующего источника»?

Android: простой способ изменить цвет png-файла

Я пишу игру с базовым спрайтом (шар) – в настоящее время у меня есть два разных PNG-файла цветного шара, которые я создал, мне нужно создать больше (возможно, еще 5 или около того) и не хочу иметь 7 различных png-файлов. (Это было бы 20 дополнительных файлов, поскольку у меня есть 4 разных размера для масштабирования). Я предпочел бы придерживаться 1 – те, которые у меня есть на данный момент, являются желтыми и красными (почти сплошные, но не совсем – у них есть детали на них).

Вопрос. Есть ли простой способ изменить цвет моих существующих файлов PNG? Я видел, как люди упоминают setColor и setColorFilter но я не могу понять, как их использовать. Также будут ли они работать с файлами PNG, которые уже имеют цвет или работают только с белыми файлами PNG (я не думаю, что мои PNG могут быть просто белыми)?

Спасибо всем, что любая помощь будет оценена.

Solutions Collecting From Web of "Android: простой способ изменить цвет png-файла"

Вы можете попытаться определить пользовательскую ColorMatrix со случайными значениями rgb:

 Random rand = new Random(); int r = rand.nextInt(256); int g = rand.nextInt(256); int b = rand.nextInt(256); ColorMatrix cm = new ColorMatrix(); cm.set(new float[] { 1, 0, 0, 0, r, 0, 1, 0, 0, g, 0, 0, 1, 0, b, 0, 0, 0, 1, 0 }); // last line is antialias paint.setColorFilter(new ColorMatrixColorFilter(cm)); canvas.drawBitmap(myBitmap, toX, toY, paint); 

Я надеюсь, что это помогает.

Вы можете использовать только черный PNG-файл для создания разных цветовых оттенков.

В приведенном ниже коде устанавливается цвет, используя какой-то причудливый режим наложения смешивания.

 protected BitmapDrawable setIconColor(int color) { if (color == 0) { color = 0xffffffff; } final Resources res = getResources(); Drawable maskDrawable = res.getDrawable(R.drawable.actionbar_icon_mask); if (!(maskDrawable instanceof BitmapDrawable)) { return; } Bitmap maskBitmap = ((BitmapDrawable) maskDrawable).getBitmap(); final int width = maskBitmap.getWidth(); final int height = maskBitmap.getHeight(); Bitmap outBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(outBitmap); canvas.drawBitmap(maskBitmap, 0, 0, null); Paint maskedPaint = new Paint(); maskedPaint.setColor(color); maskedPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP)); canvas.drawRect(0, 0, width, height, maskedPaint); BitmapDrawable outDrawable = new BitmapDrawable(res, outBitmap); return outDrawable; }