Android开发中在某些界面为了保证显示一致性,可能需要调整statusBar的背景色,本文介绍了Android 4.4(API 19)和Android 5.0以上修改statusBar背景色的方案。其中5.0只需要修改styles.xml文件就可以修改statusbar背景色,而4.4使用了 Toolbar来替代ActionBar的方案。
support-v7-appcompat在21版本之后做了很多修改,所以首先保证你的v7包在21以上。如果没有,请在Android Manager把v7包升级到该版本,或者在Android Studio gradle中如下:
dependencies { compile 'com.android.support:appcompat-v7:21.1.+' }
1、修改styles.xml文件
<!-- 这个是给5.0使用的Style,其实完全可以在源代码中加判断这样就不需要多个style文件--> <style name="AppTheme" parent="Theme.AppCompat"> <item name="android:textColorPrimary">#000000</item> <item name="colorPrimary">#ff0000</item> <item name="colorPrimaryDark">#00ff00</item> <item name="colorAccent">#0000ff</item> <!-- Customize your theme here. --> </style> <!-- 这个是给4.4使用的Style,其实完全可以在源代码中加判断这样就不需要多个style文件--> <style name="AppThemeNoActionBar" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:textColorPrimary">#000000</item> <item name="colorPrimary">#ff0000</item> <item name="colorPrimaryDark">#00ff00</item> <item name="colorAccent">#0000ff</item> <item name="android:windowTranslucentStatus" tools:targetApi="19">true</item> #这句话是关键,状态栏透明 <!-- Customize your theme here. --> </style>
这张图对应的是AppCompat中Item对应的修改的位置。其中的colorPrimaryDark就是修改状态栏的颜色。
在5.0的手机上,在源代码中使用Activity extends ActionbarActivity或者AppCompatActivity,把style/AppTheme应用到该activity即可。
好了,到目前位置,我们已经完成了修改状态栏的颜色,不过很遗憾,这些只在5.0以上的设备上才生效,在4.4或者以下的手机上,状态栏仍然是黑色。
接下来,我们看support v7包中的一个组件Toolbar,很多文档中,已经开始使用Toolbar来替换ActionBar,因为ActionBar虽然起到了规范界面风格的效果,但是限制了诸多特性,而与之相比,Toolbar则更灵活。
android.support.v7.widget.Toolbar;
让我们在layout中为Toolbar单独建立一个layout_toolbar.xml,方便其他页面include使用:
<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/toolbar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#00ff00" android:minHeight="?attr/actionBarSize" android:fitsSystemWindows="true"> </android.support.v7.widget.Toolbar>
在其他Activity的layout中include上面的Toolbar,比如activity_splash中:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".SplashActivity"> <include layout="@layout/layout_toolbar" android:id="@+id/activity_toolbar"/> <TextView android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/activity_toolbar"/> </RelativeLayout>
在SplashActivity中使用这个layout:
public class SplashActivity extends AppCompatActivity { private Toolbar toolbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash); toolbar = (Toolbar) findViewById(R.id.activity_toolbar); setSupportActionBar(toolbar); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_splash, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
关键就是这两句话 toolbar = (Toolbar) findViewById(R.id.activity_toolbar);
setSupportActionBar(toolbar);
把Toolbar应用到ActionBar的位置。
在Manifest文件中为该Activity使用style/AppThemeNoActionBar
<activity android:name="com.yan.basic.gui.SplashActivity" android:theme="@style/AppThemeNoActionBar"> </activity>
运行后,你会发现状态栏不在是黑色,而是和Toolbar类似的渐变色
相关推荐
"Android4.4之后改变状态栏statusbar背景色"这个主题正是关于如何在4.4及更高版本的Android系统中更改状态栏的颜色,以适应应用的设计风格或者提高用户体验。 在Android API 19(KitKat)之后,开发者可以通过设置...
本教程将详细讲解如何修改状态栏的背景颜色、字体颜色,如何隐藏状态栏以及如何实现状态栏透明。 1. **修改状态栏背景颜色** 在Android 5.0(API Level 21)及以上版本,我们可以使用`setStatusBarColor()`方法来...
在Android开发中,为了让应用的用户体验更加统一和美观,有时我们需要自定义状态栏的颜色,使其与应用的标题栏颜色保持一致。在iOS系统中,这种效果很常见,但早期的Android版本并不支持这一特性。不过,从Android ...
在Android应用开发中,改变status bar(状态栏)的背景是一项常见的需求,特别是在追求个性化界面设计和提升用户体验的过程中。本文将深入探讨如何使用Kotlin语言在Android 4.4(KitKat)及以上版本中实现status bar...
总的来说,改变Android状态栏颜色和实现透明效果主要涉及对状态栏主题的定制、Java代码的动态控制以及对不同Android版本的兼容处理。通过不断学习和实践,开发者可以更好地掌控这些技术,提升应用的视觉体验。
1. 普通沉浸式状态栏:在这种模式下,状态栏的颜色会与应用的主题色或背景色融为一体,给人一种无边界的视觉效果。例如,系统默认的浅色或深色主题可以轻松实现此效果。 2. 图片沉浸式状态栏:对于含有复杂背景图像...
在Android 6.0(Marshmallow)及以上版本,可以通过`SYSTEM_UI_FLAG_LIGHT_STATUS_BAR`标志切换状态栏字体颜色,使其与背景颜色对比鲜明。例如: ```java if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { ...
finally,作者使用 addOnLayoutChangeListener 监听布局变化,来保证状态栏背景颜色的变化: ```java getWindow().getDecorView().addOnLayoutChangeListener(new View.OnLayoutChangeListener() { @Override ...
在Android开发中,状态栏(StatusBar)是手机或平板设备屏幕顶部显示系统信息的区域,如时间、电量、网络状态等。...通过研究和实践,开发者可以更好地理解和掌握Android状态栏的相关操作,提升应用的用户体验。
总结,Android状态栏一体化和沉浸式状态栏技术提升了应用的美观性和用户体验,而`SystemStatusManager`类则提供了便捷的接口,帮助开发者轻松实现这些功能,降低了代码复杂度,提高了开发效率。
`qtstatusbar`项目不仅提供了基本的颜色和主题设置,还可能包括其他高级功能,如自定义图标、动态改变状态栏状态等。开发者可以根据具体需求,查阅项目的文档或源码以获取更多信息。 总结来说,`qtstatusbar`是Qt...
在Android应用开发中,有时我们需要根据界面需求对状态栏(StatusBar)进行自定义处理,比如全屏显示或者在状态栏下方添加特殊的背景色。这时,了解如何有效地获取状态栏高度就显得尤为重要。本文将详细讲解如何在...
在Android应用开发过程中,为了提供更好的用户体验以及界面美观性,开发者往往需要对应用的状态栏进行定制化处理,如实现沉浸式状态栏效果或者改变状态栏的背景颜色。本文将详细介绍如何在Android应用中实现这些功能...
- 在使用透明状态栏时,确保背景颜色与状态栏颜色的对比度足够,以免影响可读性。 - 考虑到不同设备和屏幕尺寸,进行充分的测试以确保兼容性。 - 对于某些特殊设备或系统,可能需要额外的适配代码。 通过以上...
为了让应用界面更具整体感和沉浸式体验,开发者通常会为状态栏设置自定义颜色,这就是“Android状态栏着色”的概念。本文将详细介绍如何在Android应用中实现状态栏着色。 一、API版本差异 在Android的不同版本中,...
需要注意的是,当状态栏透明时,通常还需要处理状态栏的文字和图标颜色,确保它们在透明背景下仍清晰可见。这可以通过`SYSTEM_UI_FLAG_LIGHT_STATUS_BAR`标志来实现,使得状态栏图标变为白色。当然,具体实现可能...
例如,对于一些老版本的设备,可能需要使用第三方库如`android-translucent-status-bar`来实现透明状态栏。此外,不同的设备厂商可能有自己的定制系统,因此在测试时应确保覆盖多种设备和Android版本。 最后,透明...
下面我们将详细探讨如何实现Android状态栏的透明化。 首先,我们需要理解Android的状态栏。状态栏是手机屏幕顶部显示系统信息(如时间、网络信号、电量等)和通知的地方。在早期的Android版本中,状态栏通常是...
在开发过程中,确保在多种设备和Android版本上进行测试,确保状态栏颜色改变功能在各种情况下都能正常工作。此外,还要注意在不同应用权限下,状态栏颜色的显示效果,例如在后台运行或锁屏状态下。 通过以上步骤,...