2012-03-15 5 views
6

मैं एंड्रॉइड के लिए नया हूँ। मुझे जहां भी चाहें ड्राइंग ऑब्जेक्ट्स की मुफ्त रेंज पसंद है। तो मैं पूर्ण लेआउट का उपयोग कर रहा हूँ। मुझे एक अलग लेआउट का उपयोग करने के लिए एक संदेश मिलता है। और मैंने पढ़ा है कि यह विभिन्न फोन के विभिन्न res के कारण है। मेरा सवाल यह है कि, पूर्ण लेआउट का उपयोग न करने का यह एकमात्र कारण है? मैंने एक विधि बनाई है जो पिक्सल को समायोजित करने के लिए मीट्रिक का उपयोग करती है।एंड्रॉइड: AbsoluteLayout?

public int widthRatio(double ratioIn){ 
    DisplayMetrics dm = new DisplayMetrics(); //gets screen properties 
    getWindowManager().getDefaultDisplay().getMetrics(dm); 
    double screenWidth = dm.widthPixels;  //gets screen height 
    double ratio = screenWidth/100;   //gets the ratio in terms of % 
    int displayWidth = (int)(ratio*ratioIn); //multiplies ratio desired % of screen 
    return displayWidth; 
} 

//method to get height or Ypos that is a one size fits all 
public int heightRatio(double ratioIn){ 
    DisplayMetrics dm = new DisplayMetrics(); //gets screen properties 
    getWindowManager().getDefaultDisplay().getMetrics(dm); 
    double screenHeight = dm.heightPixels; //gets screen height 
    double ratio = screenHeight/100;   //gets the ratio in terms of % 
    int newHeight = (int)(ratio*ratioIn);  //multiplies ratio by desired % of screen 
    return newHeight; 
} 

//sets size of any view (button, text, ...) to a one size fits all screens 
public void setSizeByRatio(View object, int width, int height){ 
    LayoutParams params = object.getLayoutParams(); 
    params.width = widthRatio(width); 
    params.height = heightRatio(height); 
} 

तो अगर मैं setSizeByRatio (बटन, 10, 25) कहता हूं; यह स्क्रीन की चौड़ाई के बटन चौड़ाई को 10% तक सेट करेगा और स्क्रीन की ऊंचाई 25% तक होगी।

क्या कोई फोन है जो निरपेक्ष लेआउट काम नहीं करते हैं? क्या यह लेआउट किसी अन्य मुद्दे का कारण बनता है?

+0

जारी रखें ... और उस पर अनुभव करें और यदि कोई समस्या है तो हमें बताएं ... –

+0

फ़्रेमलाउट एक और विकल्प है http://mobile.tutsplus.com/tutorials/android/android-sdk_frame-layout/ –

उत्तर

6

AbsoluteLayout को बहिष्कृत करने का कारण यह है कि आपके पास LinearLayout या GridLayout में विकल्प हैं जो समान और अधिक करते हैं। ऐसा लगता है कि आप पूर्ण पदों और पिक्सल की संख्या के आधार पर स्थितियों की गणना करने की कोशिश कर रहे हैं, एक दृष्टिकोण जो सामान्य रूप से varoius स्क्रीन आकार और घनत्व के मुद्दों के कारण टालना चाहिए।

लिंक को पढ़ें जो @amiekuser प्रदान किया गया है और यह समझने पर ध्यान केंद्रित करता है कि सर्वोत्तम अभ्यास कैसा है। कुछ संकेत एलडीपीआई, एमडीपीआई और एचडीपीआई फ़ोल्डरों के लिए छवियां बना रहे हैं, कच्चे पिक्सेल के बजाय डीपीआई (घनत्व स्वतंत्र पिक्सेल) के लिए यूनिट का उपयोग करके और एमुलेटर का उपयोग करके कई स्क्रीन आकारों और घनत्वों पर अपने ऐप का परीक्षण कैसे करें।

संपादित करें:

x और एक दृश्य आप LayoutParams का उपयोग करना चाहिए के y- स्थिति सेट करने के लिए। लेआउटपैम का उपयोग करके एक दृश्य के लिए TopMargin और LeftMargin को सेट करने के तरीके पर this question देखें।

+0

इसके लिए धन्यवाद। यह वास्तव में सहायक था। मैं एक्स और वाई को रिश्तेदार लेआउट पर सेट करने की कोशिश कर रहा हूं लेकिन मैं इसे कभी काम नहीं कर सका। मैंने अभी माना है कि मार्जिन इसके बगल में क्या होगा और हमेशा माता-पिता के बाहरी किनारे से नहीं निकलता है। मेरे कुछ तरीकों से खेलने के लिए इसे इस्तेमाल करने के लिए जा रहा है और इसे कुछ अलग अनुकरणकों पर आज़माएं। मैं आपको बता दूंगा कि यह कैसा है – JBreezy901

3

Android फोन आता है कई फार्म कारकों IE में न केवल यह स्क्रीन आकार की दृष्टि से बहुत भिन्न (2.7 ", 3.2", 3.7 "....), लेकिन यह भी संकल्प (480x800, 480X848 आदि) के संदर्भ में। खुद गूगल AbsoluteLayout का उपयोग नहीं करने का सुझाव देते हैं, वास्तव में अपने नए API संस्करण में पदावनत

लिंक नीचे दिए गए विवरण में इन सभी बताते हैं:।।।

http://developer.android.com/guide/practices/screens_support.html

सर्वोत्तम प्रथाओं अनुभाग की जांच करें

+0

अगर आपको यह उपयोगी लगता है तो जवाब स्वीकार करना न भूलें !! – amiekuser

+0

लिंक के लिए धन्यवाद। यह सहायक था। ऐसा लगता है कि मुझे स्केलिंग और "घनत्व आजादी" प्राप्त करने की विधि बहुत पसंद है। मैंने डुबकी और डीपी का उपयोग किया है और मुझे वास्तव में सटीक अनुपात नहीं मिलते हैं जो मैं सभी उपकरणों में चाहता हूं। क्या कोई अन्य लेआउट है जिसे आप एक्स और वाई पदों को परिभाषित कर सकते हैं? क्या बहिष्कृत मतलब यह सभी उपकरणों पर काम नहीं करेगा? – JBreezy901

+0

बहिष्कृत आमतौर पर इसका मतलब है कि नए और बेहतर विकल्प हैं जिनके लिए आप जो चाहते हैं उसे प्राप्त कर सकते हैं। AbsoluteLayout का उपयोग करना काम करेगा, लेकिन जैसा कि मेरी पोस्ट में वर्णित है, आपको LinearLayout, GridLayout या RelativeLayout का उपयोग करना चाहिए। –