2010-12-07 3 views
6

Хорошо, так что это несколько связано с моим предыдущим вопросом о ColorMatrixColorFilter, но я чувствую, что это существенно другой вопрос. Мне интересно, есть ли способ - или, скорее, как расширить класс ColorFilter, чтобы создать собственный собственный цветной фильтр. Для чего мне нужно выполнить, мне нужно написать настраиваемый фильтр, который будет запрашивать каждый пиксель, преобразовать его значение RGB в HSL или LAB, изменить оттенок, преобразовать его обратно в RGB и установить этот пиксель в новое значение.Создание пользовательского подкласса ColorFilter?

Я думаю, что я мог бы просто написать класс, который делает это, принимая в действие Drawable и количество изменений оттенка для выполнения, но его нужно будет вызывать вручную для каждого Drawable и каждого состояния каждого Drawable, тогда как ColorFilter, кажется, справляется с этим красиво. Учитывая существование LightingColorFilter и ColorMatrixColorFilter, кажется, что он может быть подклассом, но до сих пор мои попытки найти какую-либо документацию были бесполезны. Я не могу найти исходный код для любого из трех (Lighting, ColorMatrix, ColorFilter); Я думаю, что они, вероятно, сделаны в собственном коде?

Мой вопрос: как я могу правильно подобрать ColorFilter? Если я не смогу найти для этого хороший ответ, если кто-нибудь сможет найти источник (я искал git для Android) и разместил ссылку на него, это тоже было бы полезно.

Спасибо!

+0

Вы наконец-то смогли написать свой собственный ColorFilter? Как? – Prizoff 2013-07-17 10:14:15

ответ

0

Как вы сказали, source code показывает, что ColorFilter использует собственный код, поэтому вы не можете подклассифицировать его.

Возможно, нет другого пути, кроме создания собственного класса для того, что вы хотите сделать.

+0

Могу ли я написать собственный собственный фильтр цвета? Кроме того, насколько я могу создать собственный класс для него, считаете ли вы, что Java будет достаточно быстрым, или это то, что я должен попытаться написать через NDK? – kcoppock 2010-12-10 14:22:20