2012-09-26 20 views
15

के साथ स्पलैश स्क्रीन छवि दिखाएं मैं MonoDroid में लिखे गए एंड्रॉइड एप्लिकेशन के लिए स्प्लैश स्क्रीन प्रदर्शित करने के लिए निम्न शैली का उपयोग कर रहा हूं। हालांकि, ऐसा लगता है कि यह पहलू अनुपात को गड़बड़ करते हुए छवि को ले लेता है और पूरे स्क्रीन को फिट करने के लिए इसे अधिकतम करता है। इस प्रकार, छवि विशाल और भयानक लगती है।ऑटो फिट

क्या इसे अधिकतम करने के लिए कोई तरीका है, लेकिन पहलू अनुपात को बनाए रखना ताकि यह अभी भी अच्छा लगे?

<style name="Theme.Splash" parent="android:Theme"> 
    <item name="android:windowBackground">@drawable/splashscreenimage</item> 
    <item name="android:windowNoTitle">true</item> 
</style> 

यह सी # में गतिविधि है जो स्पलैश स्क्रीन बनाता है और लॉगिन पर जाता है।

[Activity(MainLauncher = true, Theme = "@style/Theme.Splash", NoHistory = true)] 
    public class SplashScreenActivity : Activity 
    { 
    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 

     // Start our real activity 
     StartActivity(typeof(LoginActivity)); 
    } 
    } 
+0

पर इस [पोस्ट] एक नज़र (http://stackoverflow.com/questions/2521959/how-to-scale-an-image-in-imageview-to-keep-the-aspect-ratio), यह एक समान समस्या है। – Michael

+0

यह एक छवि दृश्य का उपयोग करता है। यह सख्ती से खिड़की की पृष्ठभूमि है। मोनोडायड में पर्यावरण लोड होने पर एक या दो विराम होता है। मैं उस विराम के दौरान एक स्पलैश स्क्रीन प्रदर्शित करना चाहता था। – Telavian

उत्तर

25

एंड्रॉइड में वास्तविक बिटमैप्स, नौ-पैच और एक्सएमएल फाइलों सहित कई प्रकार के ड्रॉबल्स हैं। अपनी छवि फ़ाइल को एक एक्सएमएल फ़ाइल के साथ लपेटने का प्रयास करें जो इसे गुण देता है और फिर एक्सएमएल फ़ाइल को स्रोत छवि के बजाय ड्रॉबल के रूप में उपयोग करता है।

के अपने xml फ़ाइल मान लेते हैं scaled_background कहा जाता है और अपनी मूल छवि बस background.png है:

<?xml version="1.0" encoding="utf-8"?> 
<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
android:gravity="center" 
android:src="@drawable/background" /> 

के बजाय स्थापित करने अपनी पृष्ठभूमि को संदर्भित करने के @drawable/background आप एक्सएमएल फ़ाइल को संदर्भित करने के लिए यह सेट करेंगे: @drawable/scaled_background में यह उदाहरण स्केलिंग मोड पर विवरण Drawable documentation में उल्लिखित हैं।

+0

जबकि यह छवि को खींच नहीं कर रहा है, टैबलेट पर मेरे स्प्लैश छवि के आस-पास खाली रिक्त स्थान हैं। क्या उस xml फ़ाइल में 'android: src =" @ drawable/background "के नीचे रंगीन पृष्ठभूमि बनाना संभव है? – lxknvlk

+3

सुनिश्चित करें, परत सूची का उपयोग करें :) ' <परत-सूची xmlns: android =" http://schemas.android.com/apk/ रेस/एंड्रॉयड "> <आइटम एंड्रॉयड: drawable =" @ रंग/सफेद "/> <बिटमैप xmlns: एंड्रॉयड =" http://schemas.android.com/apk/res/android " एंड्रॉयड : गुरुत्वाकर्षण = "नीचे | center_horizontal" एंड्रॉयड: scaleGravity = "" एंड्रॉयड: src = "@ drawable/background_splash" एंड्रॉयड: tileMode = "विकलांग" /> ' –

3

ऐसा लगता है कि यह छवि लेता है और पहलू अनुपात को गड़बड़ करते समय पूरी स्क्रीन फिट करने के लिए इसे अधिकतम करता है। इस प्रकार, छवि विशाल दिखती है और भयानक लगती है।

क्या इसे अधिकतम करने के लिए कोई तरीका है, लेकिन पहलू अनुपात को बनाए रखने के लिए यह अभी भी अच्छा दिखता है?

कारण छवि बढ़े हुए हो जाता है। क्योंकि जिस छवि का उपयोग उच्च पिक्सल आप में एप्लिकेशन का परीक्षण कर रहे डिवाइस स्क्रीन के संकल्प से है इस को हल करने के लिए, सबसे अच्छा तरीका उचित के चित्र बनाने के लिए है के लिए आकार (पिक्सेल) विभिन्न डिवाइस स्क्रीन और फिर इन्हें ड्रायबल फाइलें (ड्रायबल-एलडीपीआई, ड्रायरेबल-एमडीपीआई, ड्रायबल-एचडीपीआई, आदि) के अनुसार डालें।

के बाद विभिन्न डिस्प्ले के लिए न्यूनतम स्क्रीन आकार की एक सूची के रूप में गूगल (पिक्सेल में सभी) द्वारा प्रदान की है: -


एंड्रॉयड मोबाइल उपकरणों के लिए

LDPI- 426 x 320

MDPI- 470 x 320

HDPI- 640 x 480

XHDPI- 960 x 720


लिए एंड्रॉयड टेबलेट उपकरणों

LDPI- 200 x 320

MDPI- 320 x 480

HDPI- 480 x 800

एक्सएचडीपीआई-720 x 1280


अब एक एक्सएमएल रेस में drawable/drawable जो छप गतिविधि की थीम (Theme.Splash) layer-list का उपयोग करने में पृष्ठभूमि प्रदान करेगा पैदा करते हैं। छवि <bitmap> में लोड की गई है और केंद्रगुरुत्वाकर्षण विशेषता का उपयोग करके गठबंधन किया गया है।

<!-- background_splash.xml --> 
<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item 
     android:drawable="@color/gray"/> 

    <item> 
     <bitmap 
      android:gravity="center" 
      android:src="@drawable/splashscreenimage"/> 
    </item> 

</layer-list> 

अब आप अपने शैली(Theme.Splash) को संशोधित करने और अपने छप गतिविधि के विषय में पृष्ठभूमि रूप background_splash.xml निर्धारित किया है।

<style name="Theme.Splash" parent="android:Theme"> 
    <item name="android:windowBackground">@drawable/background_splash.xml</item> 
    <item name="android:windowNoTitle">true</item> 
</style> 

इसी के साथ

, छवि बनाए रखा पहलू अनुपात के साथ केंद्र में स्थापित किया जाना चाहिए।

नोट: छवि का आकार बदलने के लिए, आप एडोब फोटोशॉप का उपयोग कर सकते हैं (मुझे इसके साथ काम करना आसान लगता है)। स्प्लैश स्क्रीन के लिए इच्छित सही छवि आकार प्राप्त करने के लिए थोड़ा सा प्रयोग करना होगा।

वरीयता के अनुसार, आप 9 पैच छवि का भी उपयोग कर सकते हैं ताकि छवि की सीमा छवि के स्थिर क्षेत्र को प्रभावित किए बिना स्क्रीन के आकार में फ़िट हो सके।


संदर्भ लिंक:

बिल्डिंग स्पलैश स्क्रीन: https://plus.google.com/+AndroidDevelopers/posts/Z1Wwainpjhd

स्पलैश स्क्रीन छवि आकार: android splash screen sizes for ldpi,mdpi, hdpi, xhdpi displays ? - eg : 1024X768 pixels for ldpi

संबंधित मुद्दे