2012-07-04 8 views
5

मैं अपने आवेदन में मेनू की तरह फेसबुक चाहता हूं। इस पर कई धागे हैं और उनमें से सभी एक लाइब्रेरी का उपयोग करने का सुझाव देते हैं जो वास्तव में स्क्रीन का एक स्क्रीनशॉट लेता है और उस छवि को दाईं ओर स्लाइड करता है ताकि बाईं ओर मेनू दिखाया जा सके और कुछ संक्रमण के साथ स्लाइड छवि दिखाई दे। लेकिन उस स्थिति में, दाईं ओर का लेआउट इसकी छवि के बाद क्लिक करने योग्य नहीं है।फेसबुक स्लाइड स्लाइडआउट मेनू (उस लाइब्रेरी का उपयोग नहीं कर रहा है)

लेकिन मैं कुछ है, जिसमें मैं एक रूट लेआउट जो पहले से ही मेनू लेआउट और सामग्री लेआउट है है यह कर का एक और तरीका है। लेकिन रूट लेआउट बाएं तरफ कुछ नकारात्मक मार्जिन सेट है ताकि यह दिखाई न दे। जैसा इस-

Content when menu is not pressed

उपयोगकर्ता मेनू बटन दबाता है, तो मेनू लेआउट सही और जड़ लेआउट के बाईं मार्जिन के लिए गिरावट है 0 पर सेट किया जाता है तो अब हम क्या देख इस-

Content when menu is pressed and menu layout is shown

है

अब, वास्तविक समस्या यहाँ

शुरू होता है मैं दोनों कुछ एनीमेशन के साथ लेआउट स्लाइड करने के लिए चाहते हैं। तो जब मैं मेनू लेआउट & सामग्री लेआउट को एनिमेट करता हूं, तो लेआउट दोनों के लिए एनीमेशन एक ही गति पर नहीं है, भले ही मैं इसे उसी एनीमेशन लागू कर रहा हूं। तो मैंने शिफ्ट रूट लेआउट केवल को मार्जिन सेट करके दाएं/बाएं की ओर कोशिश की। लेकिन ऐसा करने पर स्क्रीन पर कुछ भी नहीं दिखाया गया है। मुझसे कहां गलती हो रही है। मार्जिन सेट करने का तरीका यहां दिखाया गया है-

int width = leftLayout.getWidth(); 
isLayoutShown = !isLayoutShown; 
if(isLayoutShown){ 
    rootLayoutParams.setMargins(0, 0, 0, 0); 
    rootLayout.setLayoutParams(rootLayoutParams);  
}else{ 
    rootLayoutParams.setMargins(-width, 0, 0, 0); 
    rootLayout.setLayoutParams(rootLayoutParams); 
} 
+0

क्या आपके पास इसके साथ कोई भाग्य है? – EGHDK

+0

हां, समस्या किसी भी तरह हल हो गई है। कृपया नीचे दिए गए उत्तर की जांच करें। – Rajkiran

+0

आप इस प्रश्न के उत्तर को देखना चाहते हैं: http://stackoverflow.com/q/17884277/1491212 –

उत्तर

4

अंततः मैं इसे कर सकता था।

@Override 
public void onClick(View v) { 
rootLayoutParams = new LayoutParams(rightLayout.getWidth(), 
    rightLayout.getHeight()); 

if (lhsMenu.getVisibility() == View.GONE) { 
    lhsMenu.setVisibility(View.VISIBLE); 
    Animation slideRight = setRightSlidingAnimation(); 
    rightLayout.setAnimation(slideRight); 
    lhsMenu.setAnimation(slideRight); 
} else { 
    Animation slideLeft = setLeftSlidingAnimation(); 
    rightLayout.setAnimation(slideLeft); 
    lhsMenu.setAnimation(slideLeft); 
    lhsMenu.setVisibility(View.GONE); 
    } 
} 

अपडेट:: इसके अलावा सेट rightLayout की बाईं करने के लिए और सही (यदि आवश्यक) ताकि rightLayout हटना नहीं होगा मार्जिन यहाँ जब मैं बाईं शीर्ष कोने पर मेनू बटन पर क्लिक करें इस्तेमाल किया कोड है।

_rightLayoutParams.setMargins(width, 0, -width, 0);

मेरे मामले में

जहां width = 200

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