2016-01-08 61 views
3

我正在創建一個帶有圖像的閃屏,並且要添加動畫。於是我開始這個活動:Android - 包含在windowBackground中的相同的drawable在佈局中不一樣大小

  <activity 
       android:name=".activities.SplashActivity" 
       android:label="@string/app_name" 
       android:theme="@style/SplashTheme"> 
       <intent-filter> 
        <action android:name="android.intent.action.MAIN" /> 
        <category android:name="android.intent.category.LAUNCHER" /> 
       </intent-filter> 
      </activity> 

這使用以下主題:

 <style name="SplashTheme" parent="Theme.AppCompat.Light"> 
      <item name="android:windowBackground">@drawable/loading_page_4</item> 
     </style> 

我使用這立即將圖像了,而佈局呈現。然後在活動的onCreate方法我設置以下佈局文件:

<FrameLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@color/white" 
     android:foreground="@drawable/loading_page_4" 
     android:id="@+id/splash_color_layout" > 
    </FrameLayout> 

出於某種原因,儘管是同樣的繪製,圖像略有不同顯示出來(這小幅下移,甚至可能略有調整)時,該頁面被渲染。有沒有一種方法可以使用相同的drawable從主題背景無縫過渡到渲染布局?

下面是活動類,以及:

 public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      // Splash screen view 
      setContentView(R.layout.activity_splash); 
     } 
    } 

回答

1

所以,這裏的區別是,你的活動的高度將是從它顯示在窗口的高度不同。由於系統鑲邊(如狀態欄和導航欄)(具有軟件導航鍵的設備上),活動高度將變得更短。

爲了達到你想要的效果,你有兩個選擇:

1)你算算使用的getWindow().getDecorView()

2)的尺寸來計算窗口的「真中」(可能只在21+工作)設定的活動具有穩定佈局切換到全屏模式:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
       | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 
  • 這會使你的內容相同大小的窗口。

3)等到佈局與阿爾法動畫標誌淡出人們的視野把它放在窗口背景

  • 延遲可能不會傷害任何東西,除非你真的設計師抱怨代替。 ..
相關問題