दिलचस्प पोस्ट
आप ASP.NET MVC में अधिभार नियंत्रक विधियों कर सकते हैं? मैं जावास्क्रिप्ट पाश में देरी कैसे जोड़ूं? क्या ओपनसीएल प्रणाली बाएं हाथ या दाएं हाथ से समन्वय करता है? सख्त का उपयोग करते समय एक अनाम समारोह में "यह" क्यों अनिर्धारित है? उद्देश्य-सी घोषित @ प्रॉपर्टी गुण (गैर-रचनात्मक, कॉपी, मजबूत, कमजोर) एंड्रॉइड यूट्यूब ऐप प्ले वीडियो इन्टेंट वास्तविक दुनिया उदाहरण के साथ "डेकोरेटर पैटर्न" को समझें डॉकर्स छवि इंस्टॉलेशन निर्देशिका को कैसे बदलना है? आप यूनिट परीक्षण के लिए सी # में फ़ाइल सिस्टम कैसे बना सकते हैं? WAMP त्रुटि: निषिद्ध है आपको इस सर्वर पर / phpmyadmin / तक पहुंचने की अनुमति नहीं है IOS 5.1 में सेलआईडी, एमसीसी, एमएनसी, एलएसी, और नेटवर्क प्राप्त करें सी #: '+ = एक एवेन्ट' और '+ = नए इवेंटहैंडलर (एएनईवेंट) के बीच का अंतर' सभी फ़्रीडीक टेम्प्लेट एल्ग्स पर फंक्शन कैसे कॉल करें? PHP / MYSQL में एक के रूप में दो mysql क्वेरी कैसे निष्पादित करें? उपयोगकर्ता PHP कैसे चल रहा है यह कैसे जांचें?

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

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

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);