2013-10-24 36 views
0

我發現了一個奇怪的錯誤,當我從我的Android應用程序中按下主頁按鈕時,該應用程序成爲我的設備背景(注2)不到一秒鐘,然後消失。應用程序成爲設備的背景

我認爲這是關係到:

android:theme="@android:style/Theme.Translucent.NoTitleBar" 

,我已經把我的主要活動。我該如何解決這個錯誤,但保持不顯示任何東西的效果,直到應用程序加載(如Quora)?

編輯:我剛剛測試過,當用android:theme="@android:style/Theme.NoTitleBar"代替這行時,這個bug已經不在這裏了;但現在當應用程序啓動時,會有黑屏閃爍。 (這就是爲什麼我把translucent

+0

你打開一個活動,然後開始另一個活動?你看到的黑屏是由你的應用程序中的東西繪製的。 –

回答

1

你要麼有一個透明的背景或沒有。意味着應用程序背景在啓動和停止時是透明的。

正如你希望你的背景在開始時是透明的,但現在不再了,你可以創建一個僅僅是透明的(初始)fill_parent矩形並具有普通主題的(初始)屏幕。

對此有一點評論。即使在應用程序啓動期間看到主屏幕,任何點擊和觸摸都將被路由到您的應用程序。用戶可能會困惑,他/她仍然看到主屏幕但不能使用它。此外,他/她可能會因爲啓動應用程序而感到困惑,但似乎沒有任何反應。

編輯:這個想法是,創建一個單獨的佈局,只有一個透明的背景,當應用程序啓動時,使用此佈局之前,實際的應用程序與其佈局開始。這就像一個閃屏但透明。

下面是一些代碼來說明。

首先,飛濺的佈局:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:background="#00000000" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:gravity="center" 
     android:text="Starting..." 
     android:background="#FF000000" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

</LinearLayout> 

然後閃活動:

public class Splash extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splash); 
    } 

    @Override 
    protected void onPostResume() { 
     super.onPostResume(); 
     startActivity(new Intent(this, YOUR_ACTUAL_ACTIVITY.class)); 
     finish(); 
    } 
} 

測試你可能想添加一些等待你開始實際應用活動,看到啓動前一會兒。

+0

你可以請把更多的細節,我怎麼可以把背景透明只有在開始。 – Mageek

+0

工作正常!非常感謝 – Mageek

+0

你爲什麼要在PostResume上開始活動?我試過它創建,它似乎工作正常 – Mageek

1

我已經解決了類似的問題 - 當我的應用加載用戶選擇的黑暗主題時,我不喜歡白色背景的初始閃光。以下是我使用的方法:

1)在Manifest的application部分中,將主題設置爲在啓動時使用。我使用不透明的,但在這裏它與一個透明的:

<manifest ... > 
    ... 
    <application 
     ... 
     android:theme="@android:style/Theme.Translucent.NoTitleBar" > 

2)在我的活動 - 我活動的所有 - 我更新的主題,像這樣:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setTheme(android.R.style.Theme_NoTitleBar); //or whatever theme you want 
    setContentView(R.layout.activity_main); 

(你也許可以在你的佈局文件中設置活動主題,而是動態的,因爲它實際上是一個用戶選項,如果是動態的,它必須在setContentView之前。)

請注意,我同意jboi在加載時你不應該有一個完全透明的應用程序 - 用戶需要立即反饋他們已經成功激活你的應用程序圖標。