2010-12-07 20 views
6

Okay, so ist dies etwas mit Bezug zu meiner vorherigen Frage auf dem ColorMatrixColorFilter, aber ich fühle es eine deutlich andere Frage ist. Ich frage mich, ob es einen Weg gibt - oder besser, wie man die ColorFilter-Klasse erweitert, um einen eigenen Farbfilter zu erstellen. Für das, was ich zu erreichen bin benötigen, muss ich einen benutzerdefinierten Filter schreiben, die jedes Pixel abfragt, wandeln seine RGB-Wert HSL oder LAB, ändern Sie den Farbton, wandeln es in RGB zurück und setzen das Pixel auf den neuen Wert.Erstellen einer benutzerdefinierten Unterklasse von ColorFilter?

Ich denke, ich könnte einfach eine Klasse schreiben, die dies tut, in einem Drawable und eine Menge von Farbtonverschiebung zu nehmen, aber es müsste manuell für jeden Drawable und jeden Zustand von jedem aufgerufen werden Drawable, während der ColorFilter dies gut zu behandeln scheint. Angesichts der Existenz von LightingColorFilter und ColorMatrixColorFilter scheint es möglich zu sein, dass es Unterklassen sein kann, aber bis jetzt waren meine Bemühungen, irgendeine Art von Dokumentation zu finden, sinnlos. Ich kann den Quellcode für keines der drei (Lighting, ColorMatrix, ColorFilter) nicht finden; Ich denke, sie sind wahrscheinlich in nativem Code gemacht?

Meine Frage ist: Wie kann ich Farbfilter richtig Unterklasse? Wenn ich keine gute Antwort dafür finden kann, wenn jemand in der Lage ist, die Quelle zu finden (ich habe Androids Git gesucht) und einen Link darauf gepostet, wäre das auch hilfreich.

Danke!

+0

Waren Sie endlich in der Lage Ihre eigenen Farbfilter zu schreiben? Wie? – Prizoff

Antwort

0

Wie Sie sagten, die source code zeigt Farbfilter verwenden nativen Code, so dass Sie es nicht wirklich eine Unterklasse kann.

Wahrscheinlich gibt es keinen anderen Weg, als die eigene Klasse zu schaffen für das, was Sie tun möchten.

+0

Konnte ich nicht meinen eigenen nativen Farbfilter schreiben? Was denkst du, was Java betrifft, was das Erstellen meiner eigenen Klasse angeht, oder wäre das etwas, das ich über das NDK schreiben sollte? – kcoppock

+0

Ja, Sie sollten Ihre Klasse mit Hilfe des NDK erstellen, es ist eine typische Verwendung wegen der großen Leistungsdifferenz. Aber mein Rat ist, zuerst Ihre Klasse in Java zu schreiben, weil es einfacher zu debuggen ist, besonders wenn Sie mit dem NDK nicht vertraut sind. – Dalmas

+2

Die 150 Punkte haben mich dazu inspiriert, das NDK selbst auszuprobieren ... es scheint ein Bitmap_Plasma-Beispiel zu geben, das mehr oder weniger genau das ist, was man anpassen muss. Wenn Sie unter Windows arbeiten, müssen Sie Cygwin installieren, um den GCC-Compiler und andere Tools auszuführen, aber es sieht einigermaßen einfach aus. –

Verwandte Themen