2012-04-09 11 views
5

जिस ऐप में मैं विकसित कर रहा हूं, इसमें 2 अलग-अलग लेआउट हैं: एक नियमित फोन के लिए है, अन्य छोटे टैबलेट जैसे कि नूककलर के लिए। निर्णय जो स्क्रीन चौड़ाई संकल्प (वर्तमान में 600 डीआईपी) के आधार पर बनाया गया है। यह नुक्कड़ पर बहुत अच्छा लग रहा है लेकिन एचटीसी रेजाउंड पर भयानक है, जिसमें 720 x 1280 डिस्प्ले है। उत्तरार्द्ध पर, उच्च रिज़ॉल्यूशन के बावजूद, सबकुछ (टेक्स्ट, इमेज इत्यादि) बहुत बड़ा दिखता है, इसलिए यह सब बंच हो जाता है।एंड्रॉइड - छोटे टैबलेट बनाम बड़े फोन का पता लगाएं?

सही डिवाइस चुनने के लिए एक अच्छा तरीका क्या होगा? शायद भौतिक आकार (4.3 "बनाम 7") बनाम संकल्प का पता लगाएं?

+0

एक Configuration.screenLayout bitmask नहीं है - यहाँ देख http://stackoverflow.com/questions/5015094/निर्धारित-डिवाइस-स्क्रीन-श्रेणी-छोटे-सामान्य-बड़े-xlarge-use-code – dag

उत्तर

4

निम्न विधि का उपयोग अपने डिवाइस के स्क्रीन आकार पता लगाने के लिए:

/** 
    * Checks if the screen size is equal or above given length 
    * @param activity activity screen 
    * @param screen_size diagonal size of screen, for example 7.0 inches 
    * @return True if its equal or above, else false 
    */ 
    public static boolean checkScreenSize(Activity activity, double screen_size) 
    { 
     Display display = activity.getWindowManager().getDefaultDisplay(); 
     DisplayMetrics displayMetrics = new DisplayMetrics(); 
     display.getMetrics(displayMetrics); 

     int width = displayMetrics.widthPixels/displayMetrics.densityDpi; 
     int height = displayMetrics.heightPixels/displayMetrics.densityDpi; 

     double screenDiagonal = Math.sqrt(width * width + height * height); 
     return (screenDiagonal >= screen_size); 
    } 
+0

आह! घनत्व यहाँ कुंजी है! धन्यवाद, यह काम करता है – Bostone

+0

क्या ?? मैंने 7.0 को इनपुट पैरामीटर के रूप में रखा है, और यह मेरे किंडल फायर के लिए झूठा लौटाता है। –

+0

अजीब, क्योंकि मैंने इसे अपने डिवाइस पर परीक्षण किया और यह पूरी तरह ठीक काम कर रहा है। * वापसी * ​​से पहले 'स्क्रीनडायोनल' लॉगिंग करने का प्रयास करें और देखें कि यह वास्तव में आपके डिवाइस के लिए क्या गणना करता है – waqaslam

1

Supporting Multiple Screens के लिए प्रलेखन देखें। आप पूर्व निर्धारित फ़ोल्डर नामकरण संरचना का पालन कर सकते हैं ताकि एंड्रॉइड विभिन्न स्क्रीन आकारों/घनत्वों के लिए अलग-अलग लेआउट और ड्रॉबल्स लोड कर सके।

उदाहरण के लिए:

res/layout/my_layout.xml    // layout for normal screen size ("default") 
res/layout-small/my_layout.xml  // layout for small screen size 
res/layout-large/my_layout.xml  // layout for large screen size 
res/layout-xlarge/my_layout.xml  // layout for extra large screen size 
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation 

res/drawable-mdpi/my_icon.png  // bitmap for medium density 
res/drawable-hdpi/my_icon.png  // bitmap for high density 
res/drawable-xhdpi/my_icon.png  // bitmap for extra high density 
+0

प्री-हनीकॉम के लिए यह कुछ हद तक बेकार है – Bostone

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