2016-08-04 179 views
1

我已經在它幾個小時了...請任何人都可以指出這個問題嗎?android應用程序顯示空白白色屏幕而不是閃屏

這是我的價值觀/風格:

<resources> 

    <!-- Base application theme. --> 
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
     <!-- Customize your theme here. --> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="colorAccent">@color/colorAccent</item> 
    </style> 

    <style name="AppTheme.NoActionBar"> 
     <item name="android:windowDisablePreview">true</item> 
     <item name="windowActionBar">false</item> 
     <item name="windowNoTitle">true</item> 
    </style> 

    <style name="Theme.Transparent" parent="AppTheme"> 
     <item name="android:windowDisablePreview">true</item> 
     <item name="android:windowNoTitle">true</item> 
     <item name="android:windowActionBar">false</item> 
     <item name="android:windowFullscreen">true</item> 
     <item name="android:windowContentOverlay">@null</item> 
     <item name="android:windowIsTranslucent">true</item> 
    </style> 

    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> 

    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> 

</resources> 

這是我的清單文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.nuku.mc.myfypapp"> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/Theme.Transparent"> 
     <activity 
      android:name=".SplashScreen" 
      android:theme="@style/Theme.Transparent" 
      android:label="@string/app_name" 
      > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".LoginActivity" 
      android:label="@string/app_name" 
      android:windowSoftInputMode="adjustPan" 
      /> 
     <activity 
      android:name=".SignupActivity" 
      android:windowSoftInputMode="adjustPan" /> 
     <activity 
      android:name=".MainActivity" 
      android:launchMode="singleTop" 
      android:label="@string/app_name" 
      android:windowSoftInputMode="adjustPan" /> 
    </application> 

</manifest> 

這是應用程序splash_screen.xml文件

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/lin_lay" 
    android:background="@android:color/holo_orange_dark"> 

    <ImageView 
     android:layout_width="360dp" 
     android:layout_height="480dp" 
     android:id="@+id/imageView2" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" 
     android:background="@android:color/holo_orange_dark" 
     android:contentDescription="@string/splash_text" 
     /> 
    <TextView 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:text="@string/splash_text" 
     android:id="@+id/splashText" 
     android:layout_marginBottom="150dp" 
     android:layout_alignBottom="@+id/imageView2" 
     android:layout_centerHorizontal="true" 
     android:textStyle="bold|italic" 
     android:focusable="true" 
     android:textSize="@dimen/design_fab_image_size" 
     android:textColor="#ffffff" /> 

</RelativeLayout> 

這是濺。 java

public class SplashScreen extends Activity { 

    SessionManager manager; 

    public void onAttachedToWindow() { 
     super.onAttachedToWindow(); 
     Window window = getWindow(); 
     window.setFormat(PixelFormat.RGBA_8888); 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splash_screen); 
     manager = new SessionManager(); 
     StartAnimations(); 
    } 
    private void StartAnimations() { 
     Animation anim = AnimationUtils.loadAnimation(this, R.anim.alpha); 
     anim.reset(); 
     RelativeLayout l=(RelativeLayout) findViewById(R.id.lin_lay); 
     l.clearAnimation(); 
     l.startAnimation(anim); 

     anim = AnimationUtils.loadAnimation(this, R.anim.translate); 
     anim.reset(); 
     ImageView iv = (ImageView) findViewById(R.id.imageView); 
     iv.clearAnimation(); 
     iv.startAnimation(anim); 

     Thread background = new Thread() { 
      public void run() { 

       try { 
        // Thread will sleep for 3 seconds 
        sleep(3*1000); 

        // After 5 seconds redirect to another intent 
        String status=manager.getPreferences(SplashScreen.this,"status"); 
        Log.d("status",status); 
        if (status.equals("1")){ 
         Intent i=new Intent(SplashScreen.this,MainActivity.class); 
         startActivity(i); 
        }else{ 
         Intent i=new Intent(SplashScreen.this,LoginActivity.class); 
         startActivity(i); 
        } 


        //Remove activity 
        finish(); 

       } catch (Exception e) { 

       } 
      } 
     }; 

     // start thread 
     background.start(); 

    } 
} 

我現在跟着五個以上的教程,仍然無法解決問題

回答

1

跟隨this article。 上面清清楚楚地寫着

閃屏就是屏幕顯示之前,它是能夠啓動 充氣的UI窗口的背景,此次推出 活動的主題指定。所以我們需要的第一件事情就是發起活動的一個特殊主題 。

我按照這篇文章實現了啓動畫面。所以你不需要創建任何啓動畫面活動。只需將您的文本轉換爲可繪製資源,並將其用作啓動活動的啓動畫面主題的背景。

+0

感謝您分享文章 –

0

,看起來錯得離譜是您的onCreate調用StartAnimations的唯一的事情。你想在onResume中做到這一點。我也會嘗試將其分解成幾個步驟,以查看每個步驟是否可以調試它。對我來說,第一步是默認背景,說紅色,看看它是否出現。然後,我會嘗試將其設置爲50%紅色,以查看Alpha是否正常工作。然後,我會嘗試一次測試一個動畫,首先是背景動畫,然後是翻譯動畫。把它分解成更小的部分,可以讓你更輕鬆地解決問題。

由於您在onCreate中開始動畫,因此我猜測當前正在發生的事情是您的動畫在第一次呈現Activity之前已完成運行。記住它不會渲染,直到在onResume。而且,由於白色是活動的默認顏色,所有您看到的只是幾秒鐘的白色屏幕顯示,然後是第二個活動。

此外,在您希望背景淡入的設計中,您將需要在清單中設置爲該活動的主題中設置android:background。如果你不這樣做,你會看到發生的事情(當你正確地實現這個功能時)是一個大約.5-2秒的白色屏幕,然後在它開始運行你的啓動畫面動畫時變成透明。

+0

謝謝,我將開始打破它,看看問題所在,謝謝 –

相關問題