android实现沉浸式状态栏效果
2017-01-10 21:15
441 查看
最近看到许多app的状态栏和应用界面融为一体的效果,与Android原生黑乎乎的状态栏相比,这种视觉感受非常棒,用户体验更好些。此效果称为沉浸式,不过有些开发者把它叫做全透明的状态栏。在此不做过多纠结,个人觉得前者叫法更有逼格些。
沉浸式状态栏效果是从Android 4.4 系统(API=19)开始加入的,故要实现此效果手机系统得是4.4以上的版本。参考网上其他网友的做法是修改style.xml..主题样式。个人感觉太过繁琐,故综合整理了使用java代码方式实现沉浸式效果,在Activity的onCreate()方法里两个if语句搞定。
activity_main.xml布局:
1,添加了上述的Java和xml布局文件后,可看到此时的状态栏是白色的。我们可以为LinearLayout设置一个背景颜色如绿色:android:background="#0f0"后,效果
2,也可以在activity_main.xml布局里添加一张图片使之沉浸到状态栏里,xml代码:
效果:
3,可发现当LinearLayout里包裹的是一个TextView控件时会出现,textview的文字和状态栏重叠在一起,解决方法在TextView里添加android:fitsSystemWindows="true"属性。
xml布局:
在TextView控件里添加android:fitsSystemWindows="true"属性后: 可以看到此时状态栏的颜色和FrameLayout设置的背景颜色一致,且textview和状态栏分隔开来了,符合正常效果
最后大家可以吧此activity写为一个BaseActivity,其他Activity继承BaseActivity即可。
沉浸式状态栏效果是从Android 4.4 系统(API=19)开始加入的,故要实现此效果手机系统得是4.4以上的版本。参考网上其他网友的做法是修改style.xml..主题样式。个人感觉太过繁琐,故综合整理了使用java代码方式实现沉浸式效果,在Activity的onCreate()方法里两个if语句搞定。
public class MainActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //4.4 全透明状态栏(有的机子是过渡形式的透明) if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){ getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); } //5.0 全透明实现 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = getWindow(); window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.setStatusBarColor(Color.TRANSPARENT);// calculateStatusColor(Color.WHITE, (int) alphaValue) } } }
activity_main.xml布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> </LinearLayout>
1,添加了上述的Java和xml布局文件后,可看到此时的状态栏是白色的。我们可以为LinearLayout设置一个背景颜色如绿色:android:background="#0f0"后,效果
2,也可以在activity_main.xml布局里添加一张图片使之沉浸到状态栏里,xml代码:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:background="@mipmap/icon" android:scaleType="centerCrop" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
效果:
3,可发现当LinearLayout里包裹的是一个TextView控件时会出现,textview的文字和状态栏重叠在一起,解决方法在TextView里添加android:fitsSystemWindows="true"属性。
xml布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:layout_width="match_parent" android:background="#cb7aeb" android:layout_height="60dp"> <TextView android:text="测试文本测试文本测试文本测试文本测试文本测试文本" android:fitsSystemWindows="true" android:gravity="center" android:layout_width="match_parent" android:layout_height="wrap_content" /> </FrameLayout> <ImageView android:background="@mipmap/icon" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> </LinearLayout>
在TextView控件里添加android:fitsSystemWindows="true"属性后: 可以看到此时状态栏的颜色和FrameLayout设置的背景颜色一致,且textview和状态栏分隔开来了,符合正常效果
最后大家可以吧此activity写为一个BaseActivity,其他Activity继承BaseActivity即可。
相关文章推荐
- Android 4.4以上"沉浸式"状态栏效果的实现方法
- Android DrawerLayout+ToolBar+NavigationView实现侧滑菜单效果,沉浸式状态栏
- Android使用systembartint库实现沉浸式状态栏效果
- android 4.4以上能够实现的沉浸式状态栏效果
- android 4.4以上可以实现的沉浸式状态栏效果
- Android透明状态栏和沉浸式状态栏实现
- (原创)Android 沉浸式状态栏实现(来自FlymeAPI)
- Android KITKAT 以上实现沉浸式状态栏
- android沉浸式状态栏实现
- android沉浸式状态栏的实现
- Android状态栏变色/沉浸式状态栏 4.4及其以上兼容实现
- Android状态栏透明(沉浸式效果)
- 两句话,实现android 4.4以上实现沉浸式状态栏
- Android 实现沉浸式状态栏
- 教程分享:如何实现Android沉浸式状态栏——教你让你的状态栏变个色!
- android 4.4 沉浸式状态栏实现
- Android开源库SlideMenu如何实现沉浸式效果
- android 最简单实现沉浸式状态栏
- Android 沉浸式状态栏效果(状态栏与内容完全融合、类似于iphone 7.0系统)
- android沉浸式状态栏实现细节