जवाबों:
आपको डिस्प्ले स्केल फैक्टर का उपयोग करके इसे dps से पिक्सेल में बदलना होगा।
final float scale = getContext().getResources().getDisplayMetrics().density;
int pixels = (int) (dps * scale + 0.5f);
dp
सके px
? धन्यवाद।
मुझे पता है कि यह एक पुराना सवाल है लेकिन मैंने इस रूपांतरण को करने का एक बहुत पुराना तरीका ढूंढ लिया है।
जावा
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 65, getResources().getDisplayMetrics());
Kotlin
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 65f, resources.displayMetrics)
65
ऊपर डीपी मूल्य आप के लिए PX परिवर्तित करना चाहते है
अपनी आवश्यकता को देखते हुए, वैकल्पिक समाधान भी है। ऐसा लगता है कि आप संकलन समय पर डीपी में आयामों को जानते हैं, इसलिए आप संसाधनों में एक डिमेन प्रविष्टि जोड़ सकते हैं। फिर आप डिमेन प्रविष्टि को क्वेरी कर सकते हैं और यह स्वचालित रूप से इस कॉल में पिक्सेल में परिवर्तित हो जाएगा:
final float inPixels= mActivity.getResources().getDimension(R.dimen.dimen_entry_in_dp);
और आपका dimens.xml होगा:
<dimen name="dimen_entry_in_dp">72dp</dimen>
इस विचार का विस्तार करते हुए, आप केवल 1dp या 1sp के मान को एक डिमेन प्रविष्टि के रूप में संग्रहीत कर सकते हैं और मान को क्वेरी कर सकते हैं और इसे एक गुणक के रूप में उपयोग कर सकते हैं। इस दृष्टिकोण का उपयोग करके आप गणित सामग्री से कोड को इंसुलेट करेंगे और गणना करने के लिए लाइब्रेरी पर भरोसा करेंगे।
सबसे सरल तरीका (और एपीआई 1 से भी काम करता है) जो परीक्षण किया गया है:
getResources().getDimensionPixelSize(R.dimen.example_dimen);
दस्तावेज़ों से:
कच्चे पिक्सल में एक आकार के रूप में उपयोग के लिए एक विशेष संसाधन आईडी के लिए एक आयामी प्राप्त करें। यह getDimension (int) के समान है, सिवाय इसके कि लौटा मूल्य एक आकार के रूप में उपयोग करने के लिए पूर्णांक पिक्सेल में बदल जाता है। एक आकार रूपांतरण में आधार मूल्य को गोल करना शामिल है, और यह सुनिश्चित करना कि गैर-शून्य आधार मूल्य कम से कम एक पिक्सेल आकार में है।
हाँ, यह मूल्य को बढ़ाता है, लेकिन यह बहुत बुरा नहीं है (सिर्फ hdpi और ldpi उपकरणों पर विषम मान में, जब ldpi बहुत आम नहीं है, तो मुझे थोड़ा मूल्य जोड़ना होगा) मैंने xxhdpi डिवाइस में परीक्षण किया है जो 4dp को 16 (पिक्सल) में परिवर्तित करता है और वह है सच।