23

मैं एक गतिविधि विषय/शैली में पृष्ठभूमि छवि का उपयोग कैसे करूं?एंड्रॉइड गतिविधि पृष्ठभूमि छवि

मैं इस का उपयोग कर एक रंग करते हैं:

<style name="CustomTheme" parent="android:Theme.Light"> 
    <item name="android:windowBackground">@color/custom_theme_color</item> 
</style> 

यह ठीक से काम करता है, लेकिन अगर मैं के साथ लाइन की जगह: सही ढंग से

<item name="android:windowBackground">@drawable/splash_image</item> 

छवि प्रदर्शित करता है, लेकिन सभी सामग्री में squished है स्क्रीन के ऊपरी बाएं कोने में एक छोटा ब्लॉक। स्टेटस बार के नीचे छाया भी कट या गड़बड़ है।

मैं एंड्रॉइड के लिए मोनो का उपयोग कर रहा हूं और छवि एक मान्य नौ-पैच पीएनजी है।

+0

हर कोई यहाँ यह पढ़ के लिए ... ध्यान रखें कि आपका drawable जो आप एक स्वनिर्धारित AppTheme रूप windowBackground में उपयोग लोड किया जा पूरी तरह से अपने ढेर में डीकोड जाएगा। रनटाइम में किए गए डिकोडिंग के कारण आकार में भी एक छोटी छवि (जैसे 90 केआईबीबी) 90 एमआईबी और आवंटन का आवंटन कर सकती है। इससे आउटऑफमेमरी प्रकाश प्रकाश से तेज हो जाएगा। :) – JacksOnF1re

+0

अतिरिक्त जानकारी के लिए, इस आलेख को स्प्लैश स्क्रीन को सही तरीके से सेट अप करने के तरीके को पढ़ें: https://www.bignerdranch.com/blog/splash-screens-the-right-way/ – JacksOnF1re

उत्तर

9

मैं विषयों या कुछ भी उपयोग नहीं करते हैं, तो मुझे यकीन है कि यह कैसे प्रभावित करेगा नहीं हूँ, लेकिन मैं इस तरह मेरी पृष्ठभूमि सेट:

getWindow().setBackgroundDrawableResource(R.drawable.background_image); 

onCreate

में
+3

मैं इस दृष्टिकोण को हतोत्साहित करता हूं, क्योंकि यह परिभाषित करने वाला क्लीनर है यह विषय में। यह एंड्रॉइड को तुरंत लॉन्च करने की अनुमति देता है, जब गतिविधि लॉन्च की जाती है, कोड को निष्पादित करने के रूप में एक संक्षिप्त झपकी देखने के बजाय। –

16

मैं भी डॉन ' टी उपयोग विषयों, इसलिए गतिविधि के लेआउट में मैं

android:background="@drawable/splash_image" 
+4

धन्यवाद दोस्तों, लेकिन मुझे थीम का उपयोग करने की आवश्यकता है क्योंकि लेआउट सामग्री देर से आती है। एंड्रॉइड के लिए मोनो में, स्टार्ट अप में कुछ सेकंड देरी हो रही है। रनटाइम वास्तव में शुरू होने से पहले मुझे छवि प्रदर्शित करने की आवश्यकता है। चूंकि रनटाइम शुरू होने के बाद ही लेआउट लागू होता है, इसलिए मुझे थीम का उपयोग करना होगा, क्योंकि यह तुरंत लागू होता है। – Matthew

+0

कोई समस्या नहीं है। मैं अभी एक प्रश्न के कारण विषयों में देख रहा हूं क्योंकि मैंने पूछा कि अगर मैं इसे समझता हूं तो मैं वापस आऊंगा। – VicVu

+0

इस के साथ कोई भाग्य? – Matthew

4

जोड़ना होगा मैं एक छप छवि कि मेरे ऐप की प्रारंभिक गतिविधि की तरह दिखाई देता है और एक ही मुद्दे में भाग गया की जरूरत है। खिड़की बैकग्राउंड के बजाए विंडोकंटेंट ओवरले के साथ मुझे शुभकामनाएं थीं। एक वास्तविक लेआउट के रूप में सटीक स्थिति में स्टेटस बार के नीचे खींचने योग्य दिखाई देगा। यह एंड्रॉइड 2.2, एंड्रॉइड 3.0, और एंड्रॉइड 4.1 पर काम किया है।

<style name="SplashTheme" parent="android:style/Theme.Light"> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowContentOverlay">@drawable/splash</item>  
</style> 

मेरे splash.xml drawable की नकल करता है मेरी यूजर इंटरफेस हेडर का उपयोग करके परत-सूची:

यह मेरी शैली है

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!--- Background; tile is broken on Android 2.2 so just have super wide background that will get clipped --> 
    <item> 
     <bitmap android:gravity="top|left" android:src="@drawable/splash_background" /> 
    </item> 

    <!--- Icon left justified --> 
    <item> 
     <bitmap android:gravity="top|left" android:src="@drawable/header_icon" /> 
    </item> 

    <!--- Buttons/etc right justified --> 
    <item> 
     <bitmap android:gravity="top|right" android:src="@drawable/splash_buttons" /> 
    </item> 
</layer-list> 

मैं ActionBar मानना ​​है भी कुछ अंतर्निहित तरीके हैं इसे संभालने के लिए, यदि आपका ऐप इसका उपयोग करता है। MonoIO sample में ऐसी लॉन्च छवि प्रतीत होती है।

+0

क्या आपके splash.xml में टेक्स्टव्यू जोड़ना संभव है? मुझे लोगो के साथ स्प्लैश स्क्रीन और कनेक्टिंग जैसे टेक्स्ट को प्रदर्शित करने की आवश्यकता है ... – v4r

+0

पृष्ठभूमि छवि का आकार कैसे बदलें, इसलिए यह स्क्रीन की चौड़ाई फिट बैठता है और इस समाधान के साथ पहलू अनुपात रखता है? – pfaehlfd

+0

मैंने वर्षों में एंड्रॉइड विकास नहीं किया है। नए StackOverflow सवाल की सिफारिश करें। – t9mike

6

मेरा समाधान एंड्रॉइड बदल गया था: विंडोबैकग्राउंड एंड्रॉइड: पृष्ठभूमि।

<?xml version="1.0" encoding="UTF-8" ?> 
<resources> 
    <style name="Theme.Splash" parent="android:Theme"> 
    <item name="android:background">@drawable/splash</item> 
    <item name="android:windowNoTitle">true</item> 
    </style> 
</resources>