दिलचस्प पोस्ट
एंड्रॉइड किटकैट के लिए यूएसबी स्टोरेज का पता लगाता है (4.4) CSS3 – 3D फ्लिप एनीमेशन – आईई 10 ट्रांसफॉर्म-मूल: संरक्षित -3 डी समाधान Matplotlib (हिस्टोग्राम) में बिन आकार क्या एंड्रॉइड में एप्लिकेशन आइकन पर बैज जोड़ने का कोई तरीका है? नष्ट कर दिया जा सकता है बहाल हो? एचटीटीपी बनाम एचटीटीपीएस प्रदर्शन सी / सी ++ में सर्वश्रेष्ठ एन्क्रिप्शन लाइब्रेरी क्या है? JAXB अपवाद: वर्ग इस संदर्भ में ज्ञात नहीं है स्कला में लौटें जावास्क्रिप्ट के साथ चयन करने के लिए विकल्प जोड़ना माइस्मम और इंनोडीबी का उपयोग कब किया जाए? एंड्रॉइड: डबल-टैप को कैसे पता लगा सकता है? मैं एक दृश्य कैसे क्लोन करता हूं? जावा में फंक्शन पॉइंटर परिमित ऑटोमेटा के लिए नियमित अभिव्यक्ति की आवश्यकता: यहां तक ​​कि 1 एस की संख्या और 0 की संख्या भी

डीपी के मामले में स्क्रीन चौड़ाई कैसे निर्धारित करें या एंड्रॉइड में रनटाइम पर डुबकी?

मुझे डुबकी / डीपी (जावा फाइलों में) का उपयोग करके एंड्रॉइड विजेट का लेआउट कोड करना होगा। रनटाइम पर अगर मैं कोड,

int pixel=this.getWindowManager().getDefaultDisplay().getWidth() ;

यह पिक्सल (पीएक्स) में स्क्रीन की चौड़ाई वापस करता है इसे डीपी में बदलने के लिए, मैंने कोडित किया:

int dp =pixel/(int)getResources().getDisplayMetrics().density ;

यह सही उत्तर वापस नहीं आ रहा है। मैंने WVGA800 का एमुलेटर बनाया जिसका स्क्रीन संकल्प 480 से 800 है। जब एमुलेटर चलाते हैं और कोड को पिक्सेल और डीपी के मूल्यों को प्रिंट करते हैं, तो यह दोनों में 320 पर आया था। यह एमुलेटर 240 डीपीआई है जिसका स्केल फ़ैक्टर 0.75 होगा।

वेब के समाधान से एकत्रित समाधान "डीपी के मामले में स्क्रीन चौड़ाई कैसे निर्धारित करें या एंड्रॉइड में रनटाइम पर डुबकी?"

इसे इस्तेमाल करे

 Display display = getWindowManager().getDefaultDisplay(); DisplayMetrics outMetrics = new DisplayMetrics (); display.getMetrics(outMetrics); float density = getResources().getDisplayMetrics().density; float dpHeight = outMetrics.heightPixels / density; float dpWidth = outMetrics.widthPixels / density; 

या

धन्यवाद @ टॉमस हबलेक

 DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); float dpHeight = displayMetrics.heightPixels / displayMetrics.density; float dpWidth = displayMetrics.widthPixels / displayMetrics.density; 

मैंने Google से इस प्रश्न पर ठोकर खाई और बाद में मुझे एपीआई = 13 के लिए वैध समाधान मिल गया।

भविष्य के संदर्भों के लिए:

 Configuration configuration = yourActivity.getResources().getConfiguration(); int screenWidthDp = configuration.screenWidthDp; //The current width of the available screen space, in dp units, corresponding to screen width resource qualifier. int smallestScreenWidthDp = configuration.smallestScreenWidthDp; //The smallest screen size an application will see in normal operation, corresponding to smallest screen width resource qualifier. 

कॉन्फ़िगरेशन वर्ग संदर्भ देखें

संपादित करें: जैसा निक बाईकियानु द्वारा नोट किया गया है, यह स्क्रीन की उपयोग करने योग्य चौड़ाई / ऊंचाई देता है (जो सबसे अधिक उपयोग में दिलचस्प है)। यदि आपको वास्तविक डिस्प्ले आयाम की जरूरत है तो शीर्ष उत्तर पर चिपकाएं

आप 160 के डिफ़ॉल्ट घनत्व मूल्य को याद कर रहे हैं।

  2 px = 3 dip if dpi == 80(ldpi), 320x240 screen 1 px = 1 dip if dpi == 160(mdpi), 480x320 screen 3 px = 2 dip if dpi == 240(hdpi), 840x480 screen 

दूसरे शब्दों में, यदि आप पोर्ट्रेट मोड में 160dip के बराबर चौड़ाई वाला लेआउट डिजाइन करते हैं, तो यह सभी एलडीपीआई / एमडीपीआई / एचडीपीआई डिवाइसों पर आधा स्क्रीन हो जाएगा (टैबलेट्स को छोड़कर, मुझे लगता है)

इसका उपयोग करने के बारे में इसके बजाय?

 final DisplayMetrics displayMetrics=getResources().getDisplayMetrics(); final float screenWidthInDp=displayMetrics.widthPixels/displayMetrics.density; final float screenHeightInDp=displayMetrics.heightPixels/displayMetrics.density; 
 DisplayMetrics displayMetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); int width_px = Resources.getSystem().getDisplayMetrics().widthPixels; int height_px =Resources.getSystem().getDisplayMetrics().heightPixels; int pixeldpi = Resources.getSystem().getDisplayMetrics().densityDpi; int width_dp = (width_px/pixeldpi)*160; int height_dp = (height_px/pixeldpi)*160; 

आपकी समस्या फ्लोट को एक इंट को कास्टिंग के साथ, सटीक खोने के साथ है आपको कारक के साथ गुणा करना चाहिए और विभाजन नहीं करना चाहिए।

यह करो:

 int dp = (int)(pixel*getResources().getDisplayMetrics().density);