ist, was ich denke, arbeiten kann:
Sie folgende Werte benötigt:
Rot, Grün, Blau, Alpha und Kontrast (r, g, b, a, c)
speichern sie in einer Präferenz nach der Verwendung von Schiebereglern:
private SharedPreferences pref;
//In onCreate..
this.pref = getSharedPreferences("pref", 0);
//Method to save the values in Preferences
private void save()
{
SharedPreferences.Editor localEditor = this.pref.edit();
localEditor.putInt("a", this.a);
localEditor.putInt("r", this.r);
localEditor.putInt("g", this.g);
localEditor.putInt("b", this.b);
localEditor.putInt("c", this.c);
localEditor.commit();
}
definieren eine Schicht Clas s, die die Ansicht erweitert und verwendet wird, um die angewendeten Werte auf der Arbeitsfläche zu zeichnen.
Als nächstes schreiben Sie einen Dienst, der die Änderungen in diesen Werten verarbeiten und auf die Fenster anwenden soll.
public class ScreenAdjustService extends Service
{
//Handle everything here
}
// Ansichten Deklarieren Sie die Werte für die Anwendung, die in Prefs private static Schicht Ansicht gespeichert sind; ... public static int r; public static int b; public static int g; public static int a; public static int c;
Im onCreate Verfahren, die zuvor
Get Werte in den Einstellungen gespeichert,
SharedPreferences localSharedPreferences = getSharedPreferences("pref", 0);
a = localSharedPreferences.getInt("a", 0);
r = localSharedPreferences.getInt("r", 0);
g = localSharedPreferences.getInt("g", 0);
b = localSharedPreferences.getInt("b", 0);
c = localSharedPreferences.getInt("c", 0);
Satz Ansichten für die abgerufenen Werte einstellen,
view = new Layer(this);
redView = new Layer(this);
...
Fügen Sie diese Ansichten zum Fenster
//Pass the necessary values for localLayoutParams
WindowManager.LayoutParams localLayoutParams = new WindowManager.LayoutParams(...);
WindowManager localWindowManager = (WindowManager)getSystemService("window");
localWindowManager.addView(view, localLayoutParams);
localWindowManager.addView(redView, localLayoutParams);
localWindowManager.addView(greenView, localLayoutParams);
schreibt wieder verwendbare Methoden
public static void setAlpha(int alpha){
//Handle all conditions
view.setColor(alpha, 0, 0, 0);
}
public static void setContrast(int contrast){
//Handle all conditions
view.setColor(c, 100, 100, 100);
}
public static void setRGB(int r, int g, int b){
//Handle all conditions
redView.setColor(r, 255, 0, 0);
greenView.setColor(g, 0, 255, 0);
blueView.setColor(b, 0, 0, 255);
}
Rufen Sie diese Methoden soweit erforderlich mit der Serviceklasse
ScreenAdjustService.setRGB(MyActivity.this.r, MyActivity.this.g, MyActivity.this.b);
ScreenAdjustService.setAlpha(MyActivity.this.a);
ScreenAdjustService.setContrast(MyActivity.this.c);
Vergessen Sie nicht, Ihren Dienst in dem Manifest XML-Datei
<service android:name=".ScreenAdjustService " />
ich erklären könnte Ich habe ein oder zwei Dinge verpasst, weil ich das spontan gemacht habe, aber ich denke, das sollte es tun.
Auch müssen Sie Flags zu Ansichten hinzufügen, um die ganze Zeit oben zu sein. – tomwesolowski
Also, wie wird diese überlagerte Aktivität in diesem Ansatz Berührungsereignisse an die überlappende Aktivität weitergeben? – Paras