2012-11-19 11 views
5

मैं वास्तविक स्क्रीन की चौड़ाई Nexus 7 पर 4.2 चलाने की ऊंचाई प्राप्त करने की कोशिश कर रहा हूँ।डिवाइस कच्ची चौड़ाई और ऊंचाई या वास्तविक स्क्रीन चौड़ाई और ऊंचाई कैसे प्राप्त करें?

मैं कुछ क्रम डिवाइस चौड़ाई और ऊंचाई के आधार पर बटन और कुछ UI तत्व आकार बदलने के लिए गणना कर रहा हूँ, तो यह सभी उपकरणों में उचित दिखेगा। मेरा कोड सभी एसडीके 4.1 और नीचे में काम कर रहा था लेकिन 4.2 पर काम नहीं कर रहा था।

मैं निम्नलिखित कोड का उपयोग कर रहा चौड़ाई और ऊंचाई पाने के लिए।

कोड: 1

DisplayMetrics displaymetrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
mWidth = displaymetrics.widthPixels; 
mHeight = displaymetrics.heightPixels; 

कोड: 2

Point size = new Point(); 
WindowManager w = getWindowManager(); 
w.getDefaultDisplay().getSize(size); 
mWidth = size.x; 
mHeight = size.y; 

मैं भी गैर-दस्तावेजी तरीकों

साथ की कोशिश की है

कोड: 3

Display display = getWindowManager().getDefaultDisplay(); 
Method mGetRawW = Display.class.getMethod("getRawWidth"); 
Method mGetRawH = Display.class.getMethod("getRawHeight"); 
mWidth = (Integer) mGetRawW.invoke(display); 
mHeight = (Integer) mGetRawH.invoke(display); 

लेकिन इनमे से कोई भी है नेक्सस 7 रननी के साथ काम करना 4.2 पर, यह हमेशा स्टेटस बार ऊंचाई घटाता है, मुझे पूर्ण ऊंचाई नहीं मिल रही है।

मैं कुछ तरीकों

int statusBarHeight = Math.ceil(25 * context.getResources().getDisplayMetrics().density); 

और

Rect rectgle= new Rect(); 
Window window= getWindow(); 
window.getDecorView().getWindowVisibleDisplayFrame(rectgle); 
int StatusBarHeight= rectgle.top; 

वहाँ वास्तविक डिवाइस स्क्रीन ऊंचाई और चौड़ाई प्राप्त करने के लिए किसी भी मानक तरीका है का इस्तेमाल किया है स्थिति बल्ले ऊंचाई की गणना करने के नहीं बल्कि उचित मूल्यों हो रही?

उत्तर

1

यह एपीआई 17 के अंतिम परिवर्तन के साथ आजमाएँ:

http://developer.android.com/reference/android/view/Display.html#getRealSize(android.graphics.Point)

सार्वजनिक शून्य getRealSize (प्वाइंट Outsize)
प्रदर्शन के वास्तविक आकार किसी भी विंडो को घटाकर बिना हो जाता है सजावट या किसी अनुकूलता पैमाने कारकों को लागू करने।

इस does'nt काम हैं, तो आप की कोशिश कर सकते हैं:

http://developer.android.com/reference/android/view/Display.html#getRealMetrics(android.util.DisplayMetrics)

+0

प्रयास करें देखें इस डेमो स्रोत कोड आप को प्राप्त आप क्या http://whats-online.info/science-and-tutorials/121/android-get-screen-width- चाहते मदद मिलेगी और ऊँचाई-प्रोग्राम के रूप में / –

0
int height = getResources().getDisplayMetrics().heightPixels; 
int width = getResources().getDisplayMetrics().widthPixels; 

ऊंचाई पिक्सेल में डिवाइस की स्क्रीन ऊंचाई का प्रतिनिधित्व करता है और चौड़ाई पिक्सल में डिवाइस की स्क्रीन चौड़ाई का प्रतिनिधित्व करता है।

0

इस

int width = 0; 
int height =0; 

    Display display = activity.getWindowManager().getDefaultDisplay(); 

    if (Build.VERSION.SDK_INT >= 13) { 
     Point size = new Point(); 
     display.getSize(size); 
     width = size.x; 
     height = size.y; 
    } else { 
     width = display.getWidth(); 
     height = display.getHeight(); 
    }