2015-10-23 14 views
6

Ich möchte die Hintergrundfarbe meiner App in der Lage sein zu ändern, so dass, wenn ich die Farbe während der Laufzeit ändern wollen, kann ich nur eine Taste in der Presse App, um die Hintergrundfarbe zu ändern. Nach dem Ändern der Farbe möchte ich, dass es dort bleiben sollte immer wenn ich die App wieder öffne. Auch würde ich gerne wissen, wie man die Farbe von andere Aktivitäten ändern kann, während ich in einer anderen Tätigkeit bin. Vielen Dank im Voraus. meine Colors.xml:Wie Hintergrundfarbe der App ändern permanent

<resources> 
<color name="original">#25383C</color> 
<color name="grey">#484849</color> 
<color name="red">#881A27</color> 
<color name="orange">#ffa500</color> 
<color name="yellow">#CDE707</color> 
<color name="green">#00ff00</color> 
<color name="aqua">#00FFCC</color> 
<color name="marine">#0C0C84</color> 
<color name="purple">#630A86</color> 
<color name="silver">#c0c0c0</color> 

styles.xml (es hat Themen):

<resources> 
<style name="original"> 
    <item name="android:background">#25383C</item> 
</style> 
<style name="grey"> 
    <item name="android:background">#484849</item> 
</style> 
<style name="red"> 
    <item name="android:background">#881A27</item> 
</style> 
<style name="orange"> 
    <item name="android:background">#ffa500</item> 
</style> 
<style name="yellow"> 
    <item name="android:background">#CDE707</item> 
</style> 
<style name="green"> 
    <item name="android:background">#00ff00</item> 
</style> 
<style name="aqua"> 
    <item name="android:background">#00FFCC</item> 
</style> 
<style name="marine"> 
    <item name="android:background">#0C0C84</item> 
</style> 
<style name="purple"> 
    <item name="android:background">#630A86</item> 
</style> 
<style name="silver"> 
    <item name="android:background">#c0c0c0</item> 
</style> 

+6

können Sie Android Mitbenützung Einstellungen, um sich an die ausgewählte Hintergrundfarbe für die App zu erinnern.so jedes Mal, wenn Sie die App öffnen, können Sie den Wert der gemeinsamen Einstellung überprüfen und die Farbe entsprechend anwenden. Verwenden Sie eine allgemeine Basisaktivitätsklasse, die alle anderen Aktivitäten ableiten, und schreiben Sie in den Methoden "OnCreate" und "OnResume" den Code so, dass er die gemeinsam genutzten Präferenzen liest. und wenden Sie Hintergrundfarbe an. Auf diese Weise, wenn Sie irgendeine Tätigkeit öffnen, wird vorgewählte Hintergrundfarbe angewendet. Sie müssen Farbe nicht ändern, um eine Tätigkeit zum anderen zu bilden – Deshan

Antwort

2

Sie können die gemeinsamen Einstellungen für Android verwenden, um sich an die ausgewählte Hintergrundfarbe für die App zu erinnern. Bei jedem Öffnen der App können Sie den Wert der gemeinsamen Einstellung überprüfen und die Farbe entsprechend anwenden.

Verwenden Sie eine gemeinsame Basisaktivitätsklasse, die alle anderen Aktivitäten ableiten, und schreiben Sie in den Methoden "OnCreate" und "OnResume" den Code so, dass er den gemeinsamen Präferenzwert liest und Hintergrundfarbe anwendet. Auf diese Weise öffnen Sie eine ausgewählte Aktivität Hintergrundfarbe wird angewendet.

Versuchen Sie unter Code, es ist getestet und funktioniert.

BaseActivity Klasse

public class BaseActivity extends ActionBarActivity { 

     private static final String PREFS_NAME="color_settings"; 
     SharedPreferences prefsReader = null; 


     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      // TODO Auto-generated method stub 
      super.onCreate(savedInstanceState); 
      prefsReader=getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); 
     } 

     @Override 
     public void setContentView(int layoutResID) { 
      super.setContentView(layoutResID); 
      setBackgroundColor(); 
     } 

     protected void setBackgroundColor() 
     { 
      int background_resource_id= prefsReader.getInt("background_resource_id",0); 
      View bgView= findViewById(R.id.main_container); 
      bgView.setBackgroundColor(getResources().getColor(background_resource_id)); 
     } 
     protected void setCurrentBackgroundColor(int colorResourceId) 
     { 
      SharedPreferences.Editor editor=getSharedPreferences(PREFS_NAME, MODE_PRIVATE).edit(); 
      editor.putInt("background_resource_id", colorResourceId); 
      editor.commit(); 
     } 
    } 

Aktivität Klasse

public class MainActivity extends BaseActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     //save the color resource value in shared pref 
     setCurrentBackgroundColor(R.color.red); 

     setContentView(R.layout.activity_main); 


    } 


} 

Colors.xml Farbliste

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <item name="blue" type="color">#FF33B5E5</item> 
    <item name="purple" type="color">#FFAA66CC</item> 
    <item name="green" type="color">#FF99CC00</item> 
    <item name="orange" type="color">#FFFFBB33</item> 
    <item name="red" type="color">#FFFF4444</item> 
    <item name="darkblue" type="color">#FF0099CC</item> 
    <item name="darkpurple" type="color">#FF9933CC</item> 
    <item name="darkgreen" type="color">#FF669900</item> 
    <item name="darkorange" type="color">#FFFF8800</item> 
    <item name="darkred" type="color">#FFCC0000</item> 
</resources> 
+0

Danke! SharedPreferences funktionierte gut! – programmingandroid

1

Für so etwas tun Sie eine Datenbank pflegen können die Werte zu speichern, für die verschiedenen Farben.

Jetzt, wenn Sie die Taste nach der Auswahl der jeweiligen Farbe für Ihre Anwendung drücken, müssen Sie nur den Farbwert in Ihrer Datenbank aktualisieren.

In onCreate() -Methode Ihrer MainActivity (Launcher Activity), müssen Sie nur den Farbwert aus dem Feld der Datenbank abrufen und in Ihrer Anwendung festlegen.

+0

Datenbank für solch kleines Ding! – Apurva

+0

Es ist der Fall, wenn wir verschiedene Farben für verschiedene Ansichten möchten. Das Erstellen weiterer Instanzen von SharedPreferences ist nicht der richtige Weg. –

Verwandte Themen