दिलचस्प पोस्ट
Jquery में सभी चयनित चेकबॉक्स VALUES प्राप्त करने का सर्वोत्तम तरीका किसी मौजूदा प्रोजेक्ट को asp.NET MVC5 पहचान प्रमाणन जोड़ना एंड्रॉइड वेबदृश्य ऐप वीडियो प्लेयर को पूर्ण स्क्रीन नहीं होने देंगे जीएनयू जीसीसी (जी ++): यह कई डीटीओर्स क्यों पैदा करता है? आईफोन के लिए फोनगैप: बाहरी URL लोड करने में समस्या NSMutableString के रूप में बनाए रखने / प्रतिलिपि एक्सओयूथ का इस्तेमाल करते हुए एंड्रॉइड में जवामेल एपीआई वेबपैक कोड को बाहर से कॉल करना (HTML स्क्रिप्ट टैग) एंड्रॉइड में हर अलग स्क्रीन आकार के लिए dimens.xml को कैसे परिभाषित किया जाए? स्पष्ट डोमेन के साथ स्थानीयहोस्ट पर कुकीज गैर-दोहराव यादृच्छिक संख्या उत्पन्न स्टोरीबोर्ड आईडी क्या है और मैं इसका उपयोग कैसे कर सकता हूं? AngularJS का उपयोग करते समय पृष्ठ पर प्रदर्शित होने के लिए मैं कुरकुरा ब्रेस कैसे बचा सकता हूं? ASCII या बाइनरी के रूप में फ़ाइल सामग्री की पहचान कैसे करें जावा एरे अजीब संख्याओं को छपाई, और पाठ

जावा कोड से डीआईपी में आयाम निर्दिष्ट करने का सही तरीका क्या है?

मैंने पाया कि निम्नलिखित टुकड़ों में डीआईपी का उपयोग करते हुए XML लेआउट में मेरे इंटरफ़ेस तत्वों के आयाम सेट करना संभव है:

android:layout_width="10dip" 

लेकिन सभी जावा इंटरफेस तर्कों के रूप में पूर्णांक लेते हैं और डीआईपी में आयाम निर्दिष्ट करने का कोई तरीका नहीं है। यह गणना करने का सही तरीका क्या है?

मुझे लगा कि मुझे DisplayMetrics वर्ग की संपत्ति घनत्व का इस्तेमाल करना है, लेकिन क्या यह सही तरीका है?

क्या मैं इस फार्मूले पर हमेशा निर्भर रहूँगा?

पिक्सेल * DisplayMetrics.density = डुबकी

क्या एंड्रॉइड में रूपांतरण के लिए कोई उपयोगिता फ़ंक्शन है?

वेब के समाधान से एकत्रित समाधान "जावा कोड से डीआईपी में आयाम निर्दिष्ट करने का सही तरीका क्या है?"

इसमें एक मौजूदा उपयोगिता विधि है जिसे TypedValue.applyDimensions(int, float, DisplayMetrics) कहा जाता है जो ऐसा करता है।

इसका उपयोग कैसे करें:

 // returns the number of pixels for 123.4dip int value = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, (float) 123.4, getResources().getDisplayMetrics()); 

इसमें अन्य प्रकार की सूची है जिनके साथ आप इसके साथ उपयोग कर सकते हैं COMPLEX_UNIT_SP , COMPLEX_UNIT_PT , जो मैंने ऊपर लिंक किए गए पृष्ठ में पाया था। यदि आप (इंट) टाइपकास्ट को बाहर करते हैं, तो आपको फ़्लोटिंग प्वाइंट नंबर मिलेगा।

मुझे एक ही समस्या का सामना करना पड़ा और यह कोड के चारों ओर पोकिंग के माध्यम से मिला।

यही सही फॉर्मूला है यद्यपि DisplayMetrics.density एक स्थैतिक सदस्य नहीं है, इसलिए, उसी दस्तावेज़ के अनुसार जिसे आपने संकेत दिया है , उपयोग सही है:

 // Maybe store this in a static field? final float SCALE = getContext().getResources().getDisplayMetrics().density; // Convert dips to pixels float valueDips = 16.0f; int valuePixels = (int)(valueDips * SCALE + 0.5f); // 0.5f for rounding 

डिस्प्ले मीट्रिक घनत्व फ़ील्ड का उपयोग करते हुए, आप डिपो में / से कनवर्ट करने के लिए एक स्केलिंग कारक प्राप्त कर सकते हैं। मस्तिष्क की एक विधि को बिना किसी आंत को एक आंत में परिवर्तित करने या 0.5 जोड़कर विधि का उपयोग करें

 // Converting dips to pixels float dips = 20.0f; float scale = getContext().getResources().getDisplayMetrics().density; int pixels = Math.round(dips * scale); // Converting pixels to dips int pixels = 15; float scale = getContext().getResources().getDisplayMetrics().density; float dips = pixels / scale; 

मुझे लगता है कि कोड में किसी भी आयाम को परिभाषित करने का सबसे अच्छा तरीका नहीं है, बल्कि इसके बजाय values/dimens.xml फ़ाइल का उपयोग करें। आप वांछित इकाई में हमेशा अपने आयाम को परिभाषित कर सकते हैं जैसे:

 <dimen name="my_layout_height">120dp</dimen> 

और फिर इस तरह अपनी गतिविधि में देखें:

 getResources().getDimensions(R.dimen.my_layout_height); 

यह आवश्यक रूपांतरण होने के बाद पिक्सेल वापस करेगा। और ज़ाहिर है कि आप इसे अपने अन्य XML में इस तरह देख सकते हैं:

 android:layout_width="@dimen/my_layout_height"