2016年2月19日金曜日

StatusBar 透明化の正しい方法

各属性についての説明や、なぜこのような設定になっているのかは Droid Kaigi 2016 の発表資料の 121p 以降 を参照してください。

values/styles.xml
  1. <resources>  
  2.     <style name="Theme.AppTheme.TranslucentStatusBar" parent="Theme.AppCompat.Light.NoActionBar" />  
  3. </resources>  
values-v19/styles.xml
  1. <resources>  
  2.     <style name="Theme.AppTheme.TranslucentStatusBar" parent="Theme.AppCompat.Light.NoActionBar">  
  3.         <item name="android:windowTranslucentStatus">true</item>  
  4.     </style>  
  5. </resources>  
values-v21/styles.xml
  1. <resources>  
  2.     <style name="Theme.AppTheme.TranslucentStatusBar" parent="Theme.AppCompat.Light.NoActionBar">  
  3.         <item name="android:statusBarColor">@android:color/transparent</item>  
  4.     </style>  
  5. </resources>  
values-v23/styles.xml
  1. <resources>  
  2.     <style name="Theme.AppTheme.TranslucentStatusBar" parent="Theme.AppCompat.Light.NoActionBar">  
  3.         <item name="android:statusBarColor">@android:color/transparent</item>  
  4.         <item name="android:windowLightStatusBar">true</item>  
  5.     </style>  
  6. </resources>  


  1. public class SplashActivity extends AppCompatActivity {  
  2.   
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.   
  7.         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {  
  8.             findViewById(android.R.id.content).setSystemUiVisibility(  
  9.                     View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);  
  10.         }  
  11.   
  12.         setContentView(R.layout.activity_splash);  
  13.     }  
  14. }  
  1. <activity  
  2.     android:name=".SplashActivity"  
  3.     android:theme="@style/Theme.AppTheme.TranslucentStatusBar" />  


上記のような指定を行うと次のような見た目になります。

4.3以下


4.4


5系


6系



0 件のコメント:

コメントを投稿