2011-01-29 16 views
14

तो मैंने विंडो पृष्ठभूमि और प्रतिबिंबित प्रदर्शन को सेट करने पर रोमैन गाय के blog post को पढ़ा है, और इसे अनुकरण करने की कोशिश कर रहा हूं। यह इतना आसान समाधान है और यह सुनिश्चित नहीं है कि मैं यह काम क्यों नहीं कर सकता, लेकिन गतिविधि निर्देशित पृष्ठभूमि को चुनने से इंकार कर देती है।एंड्रॉइड: लॉन्च गतिविधि पर विंडो पृष्ठभूमि सेट करना

मेरे पास एक सूची दृश्य है कि onListItemClick ने एक नई गतिविधि लॉन्च की है, जिसे पूरी तरह से लोड करने में 3-5 सेकंड लगते हैं। जबकि उपयोगकर्ता प्रतीक्षा कर रहा है, मैं एक विंडो बैकग्राउंड खींचना चाहता हूं ताकि वे वास्तव में तैयार होने से पहले गतिविधि को देख सकें। यहाँ मेरी कोड है:

शुरू की गतिविधि के लिए

AndroidManifest टुकड़ा:

<activity 
     android:name=".activity.EditorActivity" 
     android:screenOrientation="portrait" 
     android:windowBackground="@drawable/background_editor"> 

EditorActivity के लिए एक्सएमएल लेआउट:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <TextView 
    android:id="@+id/editor" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:text="Editor" /> 
</FrameLayout> 

और अंत में, drawable प्रकट में स्थापित किया जा रहा, background_editor.xml :

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

editor_bg एक .png फ़ाइल है जो वह खींचने योग्य फोल्ड में स्थित है आर।

अंतिम परिणाम EditorActivity का शुभारंभ हो जाता है, और सब मैं देख "संपादक" सफेद में दिखाया गया पाठ के साथ डिफ़ॉल्ट काले रंग की पृष्ठभूमि है (मैं यह भी कहा कि परीक्षण करने के लिए कि XML फ़ाइल सही लोड हो रहा था।

मैं मैंने एंड्रॉइड के माध्यम से फ्रेमलेआउट और टेक्स्ट व्यू की पृष्ठभूमि को पारदर्शी करने की भी कोशिश की है: पृष्ठभूमि = "@ एंड्रॉइड: रंग/पारदर्शी", सोच रहा है कि वे एक काले रंग की पृष्ठभूमि में चूक रहे थे, लेकिन कोई भाग्य नहीं।

यह एक लंबा रहा है कुछ दिन, मुझे यकीन है कि मुझे कुछ आसान याद आ रही है ... मैं यहां कोई स्पष्ट गलती कर रहा हूं?

+1

संदर्भित पोस्ट के लिए अद्यतन लिंक: http: // और roid-developers.blogspot.com/2009/03/window-backgrounds-ui-speed.html –

उत्तर

37

नई गतिविधि को प्रोग्रामेटिक रूप से लॉन्च करने से पहले विंडो पृष्ठभूमि सेट करने का प्रयास करें।

getWindow().setBackgroundDrawableResource(R.drawable.my_drawable); 
1

यह मेरे लिए काम करता है, तो मैं styles.xml में एक थीम शैली में इस घोषणा की:

<?xml version="1.0" encoding="utf-8"?> 
<resources xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <style name="CustomTheme" parent="android:Theme.Holo.NoActionBar"> 
     <item name="android:windowBackground">@color/bg_evening</item> 
    </style> 

</resources> 

और प्रकट में मैं अपने आवेदन करने के लिए इस विषय को सेट करें:

<application 
    android:name="com.my_app.pack" 
    android:theme="@style/CustomTheme" > 
... 

या मेरी गतिविधियों में से एक के लिए:

<activity 
    android:name="..." 
    android:theme="@style/CustomTheme"> 
... 

आप बहुउद्देशीय थीम शैलियों की घोषणा कर सकते हैं और उनमें से किसी एक को अपनी गतिविधियों में से किसी एक में जोड़ सकते हैं, जो एप्लिकेशन को

2

पर सेट कर देगा। मैंने एक ही समस्या में भाग लिया है और मेरा दिन बर्बाद कर दिया है। हम जावा में थीम को मेरे मामले में सेट नहीं कर सकते हैं क्योंकि नियंत्रण में आया था मेरी स्प्लैश गतिविधि को बहुत देर हो चुकी है। उस समय तक ब्लैक स्क्रीन दिखाई देगी।

इसने मुझे सुराग दिया कि खिड़की को थीम से प्रबंधित किया जाना है जिसे हम प्रकट में निर्दिष्ट करते हैं।

वहाँ है प्रकट मेरे पास है:

<activity 
     android:name=".main.activities.SplashScreen" 
     android:theme="@style/Splash" 
     android:screenOrientation="portrait"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
</activity> 

अब मैं बनाया विषय इस प्रकार है: drawable संसाधन जो एक बिटमैप संसाधन शामिल हैं में

<style name="Splash" parent="@style/Theme.AppCompat.Light"> 
    <item name="android:windowBackground">@drawable/splash</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="windowNoTitle">true</item> 
    <item name="colorPrimaryDark">@color/green_09</item> 
    <item name="colorPrimary">@color/green_09</item> 
    <item name="windowActionBar">false</item> 
</style> 

स्पलैश, मैं एक tweak करने के लिए है इसे पूर्ण रूप से फैलाए जाने के लिए थोड़ा और केंद्र में:

<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
    android:antialias="true" 
    android:dither="true" 
    android:gravity="fill" 
    android:src="@drawable/splash_screen" /> 
संबंधित मुद्दे