2015-10-23 11 views
6

मैं अपने ऐप के पृष्ठभूमि रंग बदलने के लिए इतना है कि जब भी मैं क्रम दौरान रंग बदलना चाहते हैं, मैं सिर्फ एक बटन में दबा सकते हैं सक्षम होना चाहते हैं पृष्ठभूमि रंग बदलने के लिए ऐप। रंग बदलने के बाद मैं चाहता हूं कि पर रहें जब भी मैं ऐप फिर से खोलूं। साथ ही मैं जानना चाहता हूं कि अन्य गतिविधियों के रंग को बदलने के तरीके के दौरान मैं एक और गतिविधि में हूं। अग्रिम धन्यवाद। मेरी colors.xml:कैसे एप्लिकेशन की पृष्ठभूमि का रंग बदलने के लिए स्थायी रूप से

<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 (यह थीम हैं):

<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

आप उपयोग कर सकते हैं एंड्रॉयड साझा ऐप के लिए चयनित पृष्ठभूमि रंग को याद रखने के लिए प्राथमिकताएं। इसलिए जब भी आप ऐप खोलते हैं तो आप साझा वरीयता के मूल्य की जांच कर सकते हैं और तदनुसार रंग लागू कर सकते हैं। एक सामान्य आधार गतिविधि वर्ग का उपयोग करें कि अन्य सभी गतिविधियां प्राप्त होंगी और "ऑनक्रेट" और "ऑनर्यूम" विधियों में साझा किए गए pref को पढ़ने के लिए कोड लिखें। और जमीन के रंग को वापस लागू करें। इस तरह जब आप किसी भी गतिविधि को खोलते हैं तो पृष्ठभूमि रंग लागू किया जाएगा। आपको रंगीन रूप को एक गतिविधि को अन्य – Deshan

उत्तर

2

आप ऐप के लिए चयनित पृष्ठभूमि रंग को याद रखने के लिए एंड्रॉइड साझा प्राथमिकताओं का उपयोग कर सकते हैं। इसलिए जब भी आप ऐप खोलते हैं तो आप साझा वरीयता के मूल्य की जांच कर सकते हैं और तदनुसार रंग लागू कर सकते हैं।

एक सामान्य आधार गतिविधि वर्ग का उपयोग करें कि अन्य सभी गतिविधियां प्राप्त होंगी और "ऑनक्रेट" और "ऑनर्यूम" विधियों में साझा वरीयता मान पढ़ने और जमीन के रंग को लागू करने के लिए कोड लिखें। इस तरह जब आप कोई गतिविधि चुनते हैं पृष्ठभूमि रंग लागू किया जाएगा।

कोड के नीचे आज़माएं, यह परीक्षण और काम कर रहा है।

BaseActivity कक्षा

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(); 
     } 
    } 

गतिविधि कक्षा

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 रंग सूची

<?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

धन्यवाद! साझा किए गए प्रस्तुतियां ठीक काम करती हैं! – programmingandroid

1

इस तरह बात कर के लिए आप मान संग्रहीत करने के लिए एक डेटाबेस बनाए रख सकते हैं विभिन्न रंगों के लिए।

अब, जब भी आप अपने एप्लिकेशन के लिए विशेष रंग चुनने के बाद बटन दबाते हैं तो आपको बस अपने डेटाबेस में रंग मान अपडेट करना होगा।

अपनी मुख्य गतिविधि (लॉन्चर गतिविधि) की ऑनक्रेट() विधि में, आपको केवल डेटाबेस के क्षेत्र से रंग मान पुनर्प्राप्त करना होगा और इसे अपने एप्लिकेशन में सेट कर सकते हैं।

+0

डेटाबेस में बदलने की ज़रूरत नहीं है! – Apurva

+0

यह मामला है, जब हम अलग-अलग दृश्यों के लिए अलग-अलग रंग चाहते हैं। साझा किए गए संदर्भों के अधिक उदाहरण बनाना ऐसा करने का सही तरीका नहीं है। –

संबंधित मुद्दे