2014-05-09 7 views
5

मैं एंड्रॉइड स्विच के लिए तीन राज्य बनाने के लिए एक एंड्रॉइड कोड लिखने की कोशिश कर रहा हूं। तीन राज्यों का मतलब है - डिफ़ॉल्ट - बंद।मैं एंड्रॉइड स्विच में तीसरा राज्य कैसे जोड़ सकता हूं?

जब मैं अपना ऐप खोलूंगा, तो स्विच डिफ़ॉल्ट मोड में होगा और बटन केंद्र में होगा। जब मैं स्विच को बाईं तरफ खींच दूंगा तो राज्य चालू हो जाएगा और जब मैं दायीं तरफ खींचूँगा तो राज्य बंद हो जाएगा।

एंड्रॉइड स्विच में, हमारे पास दो राज्य चालू/बंद हैं। मैं स्विच में तीसरे राज्य को जोड़ने के लिए कोई तकनीक नहीं ढूंढ पा रहा हूं।

मैं एंड्रॉइड स्विच में तीसरा राज्य कैसे जोड़ सकता हूं?

+2

कस्टम व्यू के रूप में अपनी खुद की स्विच क्लास बनाएं। एंड्रॉइड सिर्फ त्रि-राज्य नहीं बनता है। वास्तव में, यह कुल में करने के लिए एक घंटे से अधिक नहीं हो सकता है, आप यहां उत्तर के लिए उम्मीद से अधिक इंतजार करेंगे। –

+0

हां इसके लिए आपको अपने कस्टम विजेट्स के साथ मिलना होगा। – Mani

+0

हां, मुझे पता है, यही कारण है कि मैंने अपना प्रश्न यहां पोस्ट किया है ... कृपया मुझे सुझाव दें कि मैं स्विच के लिए कस्टम विजेट कैसे जोड़ सकता हूं। – MyProg

उत्तर

0

आप एंड्रॉइड स्विच नियंत्रण के आधार पर एक कस्टम नियंत्रण कर सकते हैं जिसमें आपके इच्छित 3 राज्य हैं।

आप यहाँ कुछ जानकारी पा सकते हैं:

http://developer.android.com/guide/topics/ui/custom-components.html

ट्यूटोरियल:

http://www.tutorialspoint.com/android/android_custom_components.htm

मैं व्यक्तिगत रूप से ट्यूटोरियल में इस्तेमाल किया दृष्टिकोण काफ़ी होगा। बस अपने 3 राज्य स्विच में स्विच क्लास से विस्तार करें और तीसरे को जोड़ने के लिए राज्यों को ओवरराइड करने का प्रयास करें।

+0

ट्यूटोरियल के लिए धन्यवाद आदमी, लेकिन मुझे नहीं मिल रहा है, स्विच के लिए कोड कैसे करें? – MyProg

+0

आप एक श्रेणी थ्रीस्टेटस्विच बनाते हैं और आप एंड्रॉइड स्विच का विस्तार करते हैं। एंड्रॉइड स्विच में अपने राज्यों की घोषणा करने के लिए किस विधि का उपयोग किया जाता है और बस अपने तीसरे राज्य में जोड़ने के लिए उस विधि को ओवरराइड करें। एंड्रॉइड स्विच कंट्रोल पर प्रलेखन यहां दिया गया है: http://developer.android.com/reference/android/widget/Switch.html आप इसे Google btw में देखकर इसे अधिकतर पा सकते हैं। –

+1

सुंदर असहाय उत्तर, स्विच में तीसरा राज्य जोड़ने का कोई तरीका नहीं है, अगर आपको कोई मिल जाए तो कृपया मुझे प्रबुद्ध करें। – 3c71

1

आप इसे प्राप्त करने के लिए एक कस्टम छवि बटन बना सकते हैं, आपको इस मामले में 3 अलग-अलग छवियों की आवश्यकता है। यदि आप चाहें तो आप और अधिक राज्य भी जोड़ सकते हैं।

public class FlashButton extends ImageButton{ 

    public enum FlashEnum { 
     AUTOMATIC, ON, OFF 
    } 

    public interface FlashListener { 
     void onAutomatic(); 
     void onOn(); 
     void onOff(); 
    } 

    private FlashEnum mState; 
    private FlashListener mFlashListener; 

    public FlashButton(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     this.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       int next = ((mState.ordinal() + 1) % FlashEnum.values().length); 
       setState(FlashEnum.values()[next]); 
       performFlashClick(); 
      } 
     }); 
     //Sets initial state 
     setState(FlashEnum.AUTOMATIC); 
    } 

    private void performFlashClick() { 
     if(mFlashListener == null)return; 
     switch (mState) { 
      case AUTOMATIC: 
       mFlashListener.onAutomatic(); 
       break; 
      case ON: 
       mFlashListener.onOn(); 
       break; 
      case OFF: 
       mFlashListener.onOff(); 
       break; 
     } 
    } 

    private void createDrawableState() { 
     switch (mState) { 
      case AUTOMATIC: 
       setImageResource(R.drawable.ic_flash_auto); 
       break; 
      case ON: 
       setImageResource(R.drawable.ic_flash_on); 
       break; 
      case OFF: 
       setImageResource(R.drawable.ic_flash_off); 
       break; 
     } 
    } 


    public FlashEnum getState() { 
     return mState; 
    } 

    public void setState(FlashEnum state) { 
     if(state == null)return; 
     this.mState = state; 
     createDrawableState(); 

    } 

    public FlashListener getFlashListener() { 
     return mFlashListener; 
    } 

    public void setFlashListener(FlashListener flashListener) { 
     this.mFlashListener = flashListener; 
    } 

} 
+0

स्विच क्लास के रूप में उतना अच्छा नहीं होगा और सभी राज्यों के लिए ड्रॉबल्स का उपयोग करना आवश्यक नहीं है यदि 3 (या n) राज्यों को अनुकूलन योग्य होना चाहिए, जैसे setStatesText (नया स्ट्रिंग [] {text1, text2, ...}); – 3c71

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