Android छवि और संपत्ति आकार के बारे में


86

मुझे अपने ऐप के लिए छवि परिसंपत्तियों के बारे में कुछ संदेह स्पष्ट करने की आवश्यकता है,

अगर मैं एक xml फ़ाइल में निर्दिष्ट करता हूं कि किसी चीज की ऊंचाई [छवि दृश्य] 50 डुबकी की ऊंचाई है

मुझे किस प्रकार की स्क्रीन को संसाधन फ़ोल्डर से चुनना चाहिए?

drawable, hdpi, ldpi, mdpi, xhdpi,

50 px ऊंचाई छवि है,

और आधार छवि की तुलना में बड़े, छोटे आकार के चित्रों का प्रतिशत क्या है,

iOS की तरह, @ 2x, वस्तुतः छवि के आकार का 2 गुना है, और आप प्रोग्राम को सामान्य आकार कहते हैं,

धन्यवाद!


1
आपके प्रश्न को Android के मैनुअल में समझाया गया है: developer.android.com/guide/practices/screens_support.html
Marcin Orlowski

जवाबों:


373

mdpiसंदर्भ घनत्व है - अर्थात्, एक mdpiप्रदर्शन पर 1 px 1 डुबकी के बराबर है। संपत्ति स्केलिंग के लिए अनुपात है:

ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi
0.75 | 1    | 1.33  | 1.5  | 2     | 3      | 4

tvdpiजब तक आप विशेष रूप से Google टीवी या मूल Nexus 7 के लिए विकसित नहीं कर रहे हैं, तब तक आपको वास्तव में चिंता करने की आवश्यकता नहीं है - लेकिन Google भी केवल hdpiसंपत्ति का उपयोग करने की अनुशंसा करता है ।

इसका मतलब यह है कि यदि आप 48dip छवि कर रहे हैं और समर्थन करने की योजना बना रहे हैं xxhdpi resolution, तो आपको 144px छवि (192px अगर आप xxxhdpi के लिए मूल संपत्ति चाहते हैं) से शुरू करें और घनत्व के लिए निम्नलिखित चित्र बनाएँ:

ldpi    | mdpi    | tvdpi    | hdpi    | xhdpi     | xxhdpi    | xxxhdpi
36 x 36 | 48 x 48 | 64 x 64  | 72 x 72 | 96 x 96   | 144 x 144 | 192 x 192

और ये मोटे तौर पर किसी भी डिवाइस पर एक ही आकार में प्रदर्शित करना चाहिए, आप घनत्व विशेष फ़ोल्डर में इन रखा है, बशर्ते कि (जैसे drawable-xhdpi, drawable-hdpiआदि)

संदर्भ के लिए, इन के लिए पिक्सेल घनत्व हैं:

ldpi  | mdpi  | tvdpi  | hdpi  | xhdpi  | xxhdpi  | xxxhdpi
120   | 160   | 213    | 240   | 320    | 480     | 640

32
यह कहीं भी ऑनलाइन देखा Ive इस विषय का सबसे आसान स्पष्टीकरण है। मैंने शाब्दिक रूप से इसे अपने डिजाइनरों वर्क स्टेशन
लोल

10
हा, महान! : P सिर्फ XXHDPI के लिए जानकारी जोड़ी गई है।
केविन कोपॉक

आप कैसे तय करते हैं कि आपको 48dip से शुरू करना है? कहते हैं कि आपके पास केवल एक टैबलेट (mdpi) है, क्या आप एक यादृच्छिक आकार के साथ शुरू करते हैं, और जब तक यह "बड़ा पर्याप्त" नहीं दिखता?
phtrivier

@phtrivier यह सिर्फ एक आकार है जिसका मैंने एक उदाहरण के रूप में उपयोग किया है। इस मामले में, यह एक लॉन्चर आइकन का आकार है। अन्य परिसंपत्तियों के लिए आपको जो भी आकार चाहिए वह आपके उपयोग के मामले पर निर्भर करता है।
18-21 को केविन कोप्पॉक

1
मैंने इसे मक्खी पर परिकलित करने के लिए एक उपकरण भी बनाया: pixit-tool.web.app/#
wdavies973

22

Kcoppock के उत्तर के आधार पर मैंने निम्न शैल स्क्रिप्ट को स्वचालित रूप से सभी छवियों को सही आकार में आकार देने और संबंधित एंड्रॉइड ड्रा करने योग्य- * - फ़ोल्डरों में कॉपी करने के लिए बनाया है!

एक शेल स्क्रिप्ट बनाएं और निम्नलिखित कोड पेस्ट करें:

createAndroidImages.sh

#!/bin/bash

read -p "Please enter the subfolder of the original images? " folder
read -p "How many DP (width) should the image have? " dp

for i in $(find $folder/. -type f -name "*[A-Z]*"); do mv "$i" "$(echo $i | tr A-Z a-z)"; done

mkdir drawable-ldpi
mkdir drawable-mdpi
mkdir drawable-tvdpi
mkdir drawable-hdpi
mkdir drawable-xhdpi
mkdir drawable-xxhdpi
mkdir drawable-xxxhdpi

cp $folder/* drawable-ldpi/
cp $folder/* drawable-mdpi/
cp $folder/* drawable-tvdpi/
cp $folder/* drawable-hdpi/
cp $folder/* drawable-xhdpi/
cp $folder/* drawable-xxhdpi/
cp $folder/* drawable-xxxhdpi/

sips -Z $(echo $dp*3/4 | bc) drawable-ldpi/*
sips -Z $(echo $dp | bc) drawable-mdpi/*
sips -Z $(echo $dp*4/3 | bc) drawable-tvdpi/*
sips -Z $(echo $dp*3/2 | bc) drawable-hdpi/*
sips -Z $(echo $dp*2 | bc) drawable-xhdpi/*
sips -Z $(echo $dp*3 | bc) drawable-xxhdpi/*
sips -Z $(echo $dp*4 | bc) drawable-xxxhdpi/*

अपनी स्क्रिप्ट को एक फ़ोल्डर में और अपनी मूल छवियों को एक सबफ़ोल्डर में रखें जैसे:

/
.. createAndroidImages.sh
.. originalImages/
....a123.png
....b456.png

टर्मिनल में शेल स्क्रिप्ट चलाएँ: sh createAndroidImages.sh

बनाई गई छवियों को सीधे अपने एंड्रॉइड स्टूडियो प्रोजेक्ट में कॉपी करने के लिए:

cp -R drawable-* ~/AndroidStudioProjects/ESCRating/app/src/main/res/

हो गया! आशा है कि यह किसी की मदद करता है!

पीएस कृपया ध्यान दें कि इष्टतम परिणामों के लिए डीपीआई (जैसे 4 (कारक xxxhdpi) * 30dpi => 120px) में वांछित चौड़ाई की तुलना में मूल छवियों को पिक्सल में कम से कम चार गुना चौड़ाई होनी चाहिए।


4

kcoppock ने एंडरिड स्क्रीन घनत्व की व्याख्या करते हुए एक शानदार काम किया। मैं मूल प्रश्न के संबंध में एक और बात जोड़ना चाहूंगा।

एंड्रॉइड टैबलेट लांचर आइकन एक घनत्व बाल्टी का उपयोग करता है।

Google के डेवलपर निक बुचर के Google+ पोस्ट के अनुसार

नेक्सस 10 पर भव्य स्क्रीन XHDPI घनत्व बाल्टी में आती है। गोलियों पर, लॉन्चर एक घनत्व बाल्टी से आइकन का उपयोग करता है [0] उन्हें थोड़ा बड़ा करने के लिए। यह सुनिश्चित करने के लिए कि आपका लॉन्चर आइकन (यकीनन आपकी ऐप्स सबसे महत्वपूर्ण संपत्ति है) कुरकुरा है, आपको ड्रॉबल-एक्सएक्सएचडीपी या ड्रॉबल-480 डीपीआई फ़ोल्डर में 144 * 144 पीएक्स आइकन जोड़ने की आवश्यकता है।

यहाँ स्रोत का पता लगाएं


1

यहाँ Android के लिए छवियों के अपस्कूलिंग और स्केलिंग के लिए मेरी गणना है-

ldpi (120 डीपीआई, कम घनत्व स्क्रीन) - 36px x 36px (0.19) (1)

mdpi (160 dpi, मध्यम घनत्व स्क्रीन) - 48px x 48px (0.25) (1.33)

एचडीपीआई (240 डीपीआई, उच्च घनत्व स्क्रीन) - 72px x 72px (0.38) (2)

xhdpi (320 डीपीआई, अतिरिक्त-उच्च घनत्व स्क्रीन) - 96px x 96px (0.5) (2.67)

xxhdpi (480 डीपीआई, अतिरिक्त-अतिरिक्त-उच्च घनत्व स्क्रीन) - 144px x 144px (0.75) (4)

xxxhdpi (640 डीपीआई, अतिरिक्त-अतिरिक्त-अतिरिक्त-उच्च घनत्व स्क्रीन) - 192px x 192px (1.0) (5.33)

जब एक से अधिक छवियां होती हैं, तो मेरा छोटा लेख इमेजमैगिक का उपयोग करके छवि संसाधन बनाने में सहायक होता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.