विभिन्न रिज़ॉल्यूशन Android का समर्थन करते हैं


80

संपादित प्रश्न:

मोबाइल रिज़ॉल्यूशन:
मैं निम्नलिखित रिज़ॉल्यूशन की तरह अलग स्क्रीन डीपीआई डिज़ाइन करना चाहूंगा।
320x480,
480 × 800,
540x960,
720x1280 (सैमसंग S3),
1080x1920 (S4, Nexus5, Nexus 5x, Moto G4),
2560 x 1440 (Nexus 6p, Nexus 6p, Samsung edge)

टैबलेट रिज़ॉल्यूशन:
480x800 (micromax),
600x1024 ( सैमसंग टैब
2 ), 800x1280 (नेक्सस 7),
1200x1920 (नया नेक्सस 7),
2048x1536 (नेक्सस 9)

मैं डिवाइस डिस्प्ले रिज़ॉल्यूशन के आधार पर विभिन्न फ़ॉन्ट आकारों का उपयोग करना चाहता हूं ।

Q1) bestइसे हल करने का तरीका क्या है problem?

Q2) कोडिंग या XML को फेंकने के लिए सबसे अच्छा विकल्प क्या है?

Q3) कौन सा ड्रॉबल फ़ोल्डर किस डिवाइस रिज़ॉल्यूशन का प्रतिनिधित्व करता है?

Q4) अलग-अलग रिज़ॉल्यूशन के लिए एप्लिकेशन लॉन्चर आइकन का आकार?


16
स्क्रीन रिज़ॉल्यूशन कोई मायने नहीं रखता। स्क्रीन घनत्व मायने रखता है।
कॉमन्सवेयर

2
[यह एसओ उत्तर] [1] पर एक नज़र डालें और अपने कोड पर एक कोशिश करें। [१]: stackoverflow.com/questions/9877946/…
JJ86 ३०'१३

कृपया अपने प्रश्न को तुच्छ संपादन से रोकें। यदि यह जारी रहता है, तो हम प्रश्न को बंद कर देंगे।
ब्रैड लार्सन

2
@ पोट्टी: स्क्रीन आकार! = स्क्रीन रिज़ॉल्यूशन।
कॉमन्सवेयर

1
@ सोती: यदि आप मेरी टिप्पणी पढ़ते हैं, तो आप देखेंगे कि मैंने लिखा है कि स्क्रीन रिज़ॉल्यूशन कोई मायने नहीं रखता। मैंने यह नहीं लिखा कि स्क्रीन का आकार मायने नहीं रखता।
कॉमन्सवेयर

जवाबों:


189

अलग-अलग रिज़ॉल्यूशन के लिए पिक्सेल में ऐप लॉन्चर आइकन का आकार

मोबाइल रिज़ॉल्यूशन

  • mipmap-mdpi (48X48)
  • mipmap-hdpi (72X72)
  • मिम्पम-एक्सएचडीपीआई (96X96)
  • मिपमप-एक्सएक्सएचडीपी (144X144)
  • mipmap-xxxhdpi (192X192)

टेबलेट लेआउट:

यदि आप टेबलेट-विशिष्ट लेआउट चाहते हैं, तो निम्नलिखित फ़ोल्डरों का उपयोग करें:

layout-large-mdpi   (1024x600)
layout-large-tvdpi  (800x1280)
layout-large-xhdpi  (1200x1920)
layout-xlarge-mdpi  (1280x800)
layout-xlarge-xhdpi (2560x1600)

आरेखित फ़ोल्डर:

  1. मोबाइल

    res/drawable        (default)
    res/drawable-ldpi/  (240x320 and nearer resolution)
    res/drawable-mdpi/  (320x480 and nearer resolution)
    res/drawable-hdpi/  (480x800, 540x960 and nearer resolution)
    res/drawable-xhdpi/  (720x1280 - Samsung S3, Micromax Canvas HD etc)
    res/drawable-xxhdpi/ (1080x1920 - Samsung S4, HTC one, Nexus 5, etc)
    res/drawable-xxxhdpi/ (1440X2560 - Nexus 6,Samsung S6edge).
    
  2. टेबलेट रिज़ॉल्यूशन: यहाँ छवि विवरण दर्ज करें

    फ़ॉन्ट आकार:

ध्यान दें: हमेशा एसपी का उपयोग करने का प्रयास करें जब भी आप के साथ सौदा करते हैं textSize, जैसेtextsize=12sp

  1. पूर्वनिर्धारित का उपयोग करें textAppearance:

    यह उपकरण के घनत्व के अनुसार स्वचालित रूप से पाठ का आकार निर्धारित करेगा।

    <TextView android:textAppearance="?android:attr/textAppearanceSmall"/>
    <TextView android:textAppearance="?android:attr/textAppearanceMedium"/>
    <TextView android:textAppearance="?android:attr/textAppearanceLarge" />
    

    नमूना उपयोग:

    <TextView
        style="@android:style/TextAppearance.Small"
        android:text="Sample Text - Small" />
    <TextView
        style="@android:style/TextAppearance.Medium"
        android:text="Sample Text  - Medium" />
    <TextView
        style="@android:style/TextAppearance.Large"
        android:text="Sample Text  - Large" />
    
  2. dimension.xmlप्रत्येक डिवाइस के लिए उपयोग करें :

    से गूगल आईओ पीडीएफ , हम नीचे संरचना देखें:

    1. मोबाइल:

      res/values/dimens.xml(default)
      res/values-ldpi/dimens.xml   (240x320 and nearer resolution)
      res/values-mdpi/dimens.xml   (320x480 and nearer resolution)
      res/values-hdpi/dimens.xml   (480x800, 540x960 and nearer resolution)
      res/values-xhdpi/dimens.xml  (720x1280 - Samsung S3, Micromax Canvas HD, etc)
      res/values-xxhdpi/dimens.xml (1080x1920 - Samsung S4, HTC one, etc)
      

      res / मान-xxxhdpi / dimens.xml (1440X2560 - Nexus 6, Samsung S6edge)।

    2. गोली:

      टैबलेट के लिए आप अधिक विशिष्ट फ़ोल्डर का उपयोग कर सकते हैं values-xlarge, जैसे values-large

      res/values-large/dimens.xml      (480x800)
      res/values-large-mdpi/dimens.xml (600x1024)
      

      या

      res/values-sw600dp/dimens.xml      (600x1024)
      res/values-sw720dp/dimens.xml      (800x1280)
      res/values-xlarge-xhdpi/dimens.xml (2560x1600 - Nexus 10")
      res/values-large-xhdpi/dimens.xml  (1200x1920 - Nexus 7"(latest))
      

अधिक जानकारी के लिए:

  1. कई स्क्रीन का समर्थन करने का संदर्भ लें ।

  2. डिज़ाइन डिवाइस घनत्व के लिए Google IO Pdf का पृष्ठ # 77 देखें । उस में, आपको विभिन्न विभिन्न उपकरणों के लिए हैंडल करने का तरीका मिलेगा ।dimens.xml

  3. Nexus 6 और Nexus 9 के लिए आपके ऐप्स तैयार हो रहे हैं ।

एकाधिक स्क्रीन का समर्थन करने से अंश :

घनत्व-स्वतंत्र पिक्सेल 160 डीपीआई स्क्रीन पर एक भौतिक पिक्सेल के बराबर है, जो कि एक "मध्यम" घनत्व स्क्रीन के लिए सिस्टम द्वारा ग्रहण की गई बेसलाइन घनत्व है । रनटाइम के दौरान, सिस्टम पारदर्शी रूप से उपयोग में स्क्रीन के वास्तविक घनत्व के आधार पर, dp इकाइयों के किसी भी स्केलिंग को संभालता है। स्क्रीन पिक्सल के लिए dp इकाइयों का रूपांतरण सरल है px = dp * (dpi / 160):। उदाहरण के लिए, 240 डीपीआई स्क्रीन पर, 1 डीपी 1.5 भौतिक पिक्सेल के बराबर होता है। विभिन्न घनत्व वाले स्क्रीन पर अपने UI के उचित प्रदर्शन को सुनिश्चित करने के लिए, आपको अपने एप्लिकेशन के UI को परिभाषित करते समय हमेशा dp इकाइयों का उपयोग करना चाहिए।


3
तो क्या वास्तव में किसी भी कोड को लागू करने की कोई आवश्यकता नहीं है? बस आयाम बनाएं और ऐप स्वचालित रूप से जांच करेगा कि कौन सा मंद लागू करना है?
जॉन आर।

1
+1: मत भूलो कि आप लेआउट का उपयोग करके सभी उपकरणों का समर्थन कर सकते हैं।
S.M_Emamian

1
@ S.M_Emamian for Tablet: 1024X600 (लेआउट-लार्ज-एमडीपी) 800X1280 (लेआउट-लार्ज-टीवीडीपी) 1200X1920 (लेआउट-लार्ज-एक्सएचडीपीआई) 1280X800 (लेआउट-एक्सडीज-एमडीपीआई) 2560X1600 (लेआउट- xlarge-xhdpi) कृपया देखें सिम्युलेटर के बजाय डिवाइस।
भावेश जेठानी

2
कृपया नीचे दिए गए लिंक की भी जांच करें, यह आपकी मदद हो सकती है। stackoverflow.com/questions/14151121/…
भावेश जेठानी


28

सबसे पहले आप अलग-अलग स्क्रीन के लिए अलग-अलग वैल्यू के फोल्डर बनाएं। res->values->dimens.xmlऔर फाइल में स्क्रीन के अनुसार साइज डालें और सरल फॉन्ट साइज का उपयोग कर कॉल करें "@dimen/text_size"

res/values/dimens.xml    
res/values-small/dimens.xml    
res/values-normal/dimens.xml    
res/values-xlarge/dimens.xml

//for small    
<?xml version="1.0" encoding="utf-8"?>
<resources>
   <dimen name="text_size">15sp</dimen>
</resources>

//for normal    
<?xml version="1.0" encoding="utf-8"?>
<resources>
   <dimen name="text_size">20sp</dimen>
</resources>

//for large    
<?xml version="1.0" encoding="utf-8"?>
<resources>
   <dimen name="text_size">30sp</dimen>
</resources>

//for xlarge    
<?xml version="1.0" encoding="utf-8"?>
<resources>
   <dimen name="text_size">40sp</dimen>
</resources>

और TextViewनीचे दिए गए अनुसार फ़ॉन्ट आकार पुनः प्राप्त करें।

<TextView
    android:id="@+id/lblHeader"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"           
    android:textSize="@dimen/text_size"
    android:textStyle="bold"
    android:typeface="serif" />

तो कैसे यू ने आपको अलग-अलग लेआउट के लिए आयाम दिए हैं? जैसे यू किसी भी अनुपात (1: 1.5: 2: 3: 4) - (mdpi-hdpi: xhdpi: xxhdpi: xxxhdpi) - (2sp: 3sp: 4sp: 6sp: 6) 8) इस तरह से! मैं उलझन में हूँ ..!
आसिफ़ एसबी

@AsifSb यदि आप इसे अनुपात से देने जा रहे हैं, तो आपको इसे प्रोग्रामेटिक रूप से सेट करना होगा। इसके अलावा, आपको अलग-अलग diemens.xml में स्टैटिक तरीके से वैल्यू फोल्डर में
रखना होगा

9

विभिन्न स्क्रीन रिज़ॉल्यूशन और विभिन्न घनत्वों की समस्याओं से बचने के लिए, मैं स्क्रीन की प्रतिशत चौड़ाई और ऊंचाई के आधार पर सब कुछ आकार और स्थिति देता हूं। यदि पाठ को स्क्रीन की प्रतिशत चौड़ाई या ऊँचाई के आधार पर आकार दिया जाता है, तो फ़ॉन्ट सभी उपकरणों और सभी प्रस्तावों पर सही आकार होगा। अपने स्थान की चौड़ाई और ऊंचाई के आधार पर सही फ़ॉन्ट आकार प्राप्त करने के लिए, बस इस फ़ंक्शन का उपयोग करें:

private float SetTextSize(String text, int width, int height)
{
    Paint paint = new Paint();
    float textWidth = paint.measureText(text);
    float textSize = (int) ((width / textWidth) * paint.getTextSize());
    paint.setTextSize(textSize);

    textWidth = paint.measureText(text);
    textSize = (int) ((width / textWidth) * paint.getTextSize());

    // Re-measure with font size near our desired result
    paint.setTextSize(textSize);

    // Check height constraints
    FontMetricsInt metrics = paint.getFontMetricsInt();
    float textHeight = metrics.descent - metrics.ascent;
    if (textHeight > height)
    {
        textSize = (int) (textSize * (height / textHeight));
        paint.setTextSize(textSize);
    }
    return textSize;
}

स्क्रीन की चौड़ाई और ऊंचाई प्राप्त करने के लिए यह कोड है:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2)
{
    Point size = new Point();
    getWindowManager().getDefaultDisplay().getSize(size);
    screenWidth = size.x;
    screenHeight = size.y; 
}
else
{
    Display display = getWindowManager().getDefaultDisplay(); 
    screenWidth = display.getWidth(); 
    screenHeight = display.getHeight(); 
}

इच्छित फ़ॉन्ट आकार प्राप्त करने के लिए, बस स्क्रीन की चौड़ाई और स्क्रीन की ऊँचाई के आधार पर एक क्षेत्र बनाएं और इसे तब तक ट्विक करें जब तक कि फ़ॉन्ट आकार सही न दिखे। एक बार जब आप इसे सही देखना चाहते हैं, तो इसे सभी उपकरणों पर सही दिखना चाहिए।

float textSize = SetTextSize("text", (int) (screenWidth * 0.1), (int) (screenHeight * 0.15));

मैं आशा करता हूं कि इससे तुम्हें सहायता मिलेगी


1
पुनः " .. प्रतिशत चौड़ाई / स्क्रीन की ऊँचाई "। नोट: यह रणनीति स्क्रीन की निश्चित संख्या वाली वस्तुओं के लिए एकदम सही है ; एक स्क्रीन पर जो मदों की एक स्क्रॉलिंग सूची प्रदर्शित करता है, बड़े फोन के लिए मैं "बड़ा" और "अधिक पंक्तियों को दिखाने" के बीच एक समझौता पसंद करता हूं। एक संभावित फॉर्मूला सभी फ़ॉन्ट आकारों को गुणा करना है sqrt(phoneWidthInches / defaultWidthInches), जहां आपके defaultWidthInchesलिए मूल फोन आकार है। तो 2x बड़ा फोन 1.4x बड़ा फोंट होगा। (इसके बजाय उपयुक्त के रूप में उपयोग heightया diagonalसूत्र)। महत्वपूर्ण : पिक्सल में USE चौड़ाई नहीं हैinches = pixels / dpi
टूलमेकर

8

मूल रूप से आपको कुछ इस तरह से एक पाठ शैली बनाने की आवश्यकता है:

<style name="CodeFont">
    <item name="android:textSize">30sp</item>
</style>

इसके बारे में अधिक यहाँ पढ़ें http://developer.android.com/guide/topics/ui/themes.html

और अलग-अलग स्क्रीन गाइड के लिए एंड्रॉइड सपोर्ट का उपयोग करके अलग-अलग स्क्रीन के लिए अलग-अलग स्क्रीन के लिए सही रिस फ़ोल्डर में वर्णित करें: http://developer.android.com/guide/practices/screens_support.html

साइड नोट: मैं वास्तव में यह नहीं समझता कि आप किस स्थिति में ऐसा करना चाहते हैं, फ़ॉन्ट आकारों के लिए एसपी इकाइयों का उपयोग करने से विभिन्न फोन पर समान आकार कम या ज्यादा देखने के लिए फोंट स्केल हो जाएंगे।


4

एक संकल्प के लिए सबसे पहले अपना एप्लिकेशन डिज़ाइन।

उदाहरण: मान लीजिए आपका मोबाइल रिज़ॉल्यूशन 380 * 480 है

       mobile screen width:380

       textView size is 80dp   
       Assume : if width is 380dp then 100 % then

               textview width 80dp then how many %(per).

            ower answer is: 25 %

क्रमिक रूप से बेल्व सूत्र का उपयोग करके स्क्रीन आकार खोजें

    DisplayMetric  displaymetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
    ScreenHeight = displaymetrics.heightPixels;
    ScreenWidth = displaymetrics.widthPixels;
        txt_height = (int)((ScreenHeight*14.58)/100);
    txt_width = (int)((ScreenWidth*37.5)/100);


    LinearLayout.LayoutParams normal_param = new LinearLayout.LayoutParams(txt_height ,txt_width );

    txt_Name.setLayoutParams(normal_param);

मैं पाठ आकार देना चाहता हूँ .. विभिन्न डिवाइस आकार के लिए।
भावेश जेठानी

@ BesheshJethani उपरोक्त कोड का उपयोग करके ग्रंथों की प्रतिशतता की गणना करें, कोशिश करें कि यह कोड मेरे लिए काम कर रहा है।
हेमंत पीवीसी

3
मैं फॉन्ट साइज़ की बात कर रहा हूँ .. टेक्स्टव्यू साइज़ की नहीं
भावेश जेठानी

3

मुझे लगता है कि यह एक अच्छा जवाब है:

पाठ का आकार और विभिन्न Android स्क्रीन आकार

लेकिन यहाँ आप इसे स्क्रीन रिज़ॉल्यूशन के साथ कैसे कर सकते हैं:

आप प्रत्येक रिज़ॉल्यूशन के लिए "मान" संसाधन निर्देशिका बना सकते हैं

values-wWIDTHp-hHEIGHTdp (you can also use values-wWIDTHp or values-hHEIGHTdp)
for example: 320*480 will be values-w320p-h480dp

प्रत्येक dir (डिफ़ॉल्ट मान सहित) में सामग्री के साथ "dimens.xml" नामक एक फ़ाइल बनाएं:

 for exmaple (the value related to the resolution):
 <dimen name="def_font_size">10sp</dimen>

अब आप "@ dimen / def_font_size" का उपयोग कर सकते हैं या डिफ़ॉल्ट मान निर्देशिका में एक शैली बना सकते हैं।

इसे "style.xml" में जोड़ें:

<style name="FontSize">
    <item name="android:textSize">@dimen/def_font_size</item>
</style>

1

मैंने एक फ़ंक्शन बनाया है जो स्क्रीन आकार के अनुसार डीपी के आकार को आकार में परिवर्तित करता है और यह मेरे लिए अच्छा काम कर रहा है। स्क्रीन के अनुसार टेक्स्ट साइज की समस्या वाले किसी भी व्यक्ति को यह कोशिश करनी चाहिए।

public float convertFromDp(int input) {
    final float scale = getResources().getDisplayMetrics().density;
    return ((input - 0.5f) / scale);
}

सरल रूप से नीचे दिए गए अनुसार पाठ दृश्य आकार को इसके द्वारा दिया गया मान दें

tvTextView1.setTextSize(convertFromDp(24));

यह जवाब मेरे लिए काम कर रहा है। काम का बोझ और गणना कम करें
रंजीथ कुमार

1

नेक्सस 6 डिवाइस सपोर्ट के लिए, ड्रॉएबल -59 डीपीआई फोल्डर बनाएं और उसमें सभी इमेज लगाएं।


मुझे लगता है कि इसके लिए एक विशेष लेआउट बनाने के लिए आवश्यक नहीं है और अच्छा है, हालांकि ड्रॉबल-एक्सएक्सएचडीपीआई और भी आसान और सहायक होगा
अभिलाष

यह नेक्सस 6 के लिए नहीं होगा। क्योंकि नेक्सस 6 में 560 डीपीआई रिज़ॉल्यूशन है। यदि आप 560dpi फ़ोल्डर की घोषणा नहीं कर रहे हैं, तो यह xxxhdpi फ़ोल्डर की छवियों का उपयोग करेगा।
आनंद सजनी

हाँ, इसे सरल बनाने के लिए और न केवल बिंदु 6 को इंगित करें, जैसा कि मैंने सुझाव दिया था। छवियां अलग नहीं होंगी ताकि xxxhdpi आसान हो।
अभिलाष
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.