Android应用开发之Android之ToolBar和自定义ToolBar实现沉浸式状态栏
白羽 2018-08-10 来源 :网络 阅读 956 评论 0

摘要:本文将带你了解Android应用开发之Android之ToolBar和自定义ToolBar实现沉浸式状态栏,希望本文对大家学Android有所帮助

        本文将带你了解Android应用开发之Android之ToolBar和自定义ToolBar实现沉浸式状态栏,希望本文对大家学Android有所帮助


沉浸式状态栏确切的说应该叫做透明状态栏。一般情况下,状态栏的底色都为黑色,而沉浸式状态栏则是把状态栏设置为透明或者半透明。
沉浸式状态栏是从android Kitkat(Android 4.4)开始出现的,它可以被设置成与APP顶部相同的颜色,这就使得切换APP时,整个界面就好似切换到了与APP相同的风格样式一样。在内容展示上会显得更加美观。
本博客主要说的是结合ToolBar来实现状态栏的两种实现方式,效果如图:

前提条件是 Api得大于等于19(4.4版本以上)
方式1:
布局 toolbar1.xml
 
Html代码  <LinearLayout xmlns:android="//schemas.android.com/apk/res/android"      xmlns:app="//schemas.android.com/apk/res-auto"      android:layout_width="match_parent"      android:layout_height="match_parent"      android:orientation="vertical">        <android.support.v7.widget.Toolbar          android:id="@+id/toolbar"          android:layout_width="match_parent"          app:title="App Title"          app:subtitle="Sub Title"          app:navigationIcon="@android:drawable/ic_input_add"          android:layout_height="wrap_content"          android:background="?attr/colorPrimary"          android:fitsSystemWindows="true"          android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"          app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>        <RelativeLayout          android:layout_width="match_parent"          android:layout_height="match_parent">          <TextView              android:layout_width="wrap_content"              android:layout_height="wrap_content"              android:layout_centerInParent="true"              android:text="沉浸式状态栏"              android:textSize="30sp" />      </RelativeLayout>  </LinearLayout>  <LinearLayout xmlns:android="//schemas.android.com/apk/res/android"
    xmlns:app="//schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        app:title="App Title"
        app:subtitle="Sub Title"
        app:navigationIcon="@android:drawable/ic_input_add"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        android:fitsSystemWindows="true"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="沉浸式状态栏"
            android:textSize="30sp" />
    </RelativeLayout>
</LinearLayout>
 
 
Activity.Java
 
Java代码  public class TooBarStatusActivity1 extends AppCompatActivity{      @Override      protected void onCreate(@Nullable Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          requestWindowFeature(Window.FEATURE_NO_TITLE);//去标题          setContentView(R.layout.toolbar_layout);          //透明状态栏          getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);          //透明导航栏          getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);          //透明导航栏          Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar);          mToolbar.setTitle("App Title"); //设置Toolbar标题          mToolbar.setSubtitle("Sub Title"); //设置Toolbar 副标题          mToolbar.setLogo(R.mipmap.ic_launcher);//设置Toolbar的Logo          mToolbar.setNavigationIcon(R.mipmap.abc_ic_ab_back_mtrl_am_alpha);          setSupportActionBar(mToolbar);      }  }  public class TooBarStatusActivity1 extends AppCompatActivity{
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);//去标题
        setContentView(R.layout.toolbar_layout);
        //透明状态栏
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        //透明导航栏
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
        //透明导航栏
        Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar);
        mToolbar.setTitle("App Title"); //设置Toolbar标题
        mToolbar.setSubtitle("Sub Title"); //设置Toolbar 副标题
        mToolbar.setLogo(R.mipmap.ic_launcher);//设置Toolbar的Logo
        mToolbar.setNavigationIcon(R.mipmap.abc_ic_ab_back_mtrl_am_alpha);
        setSupportActionBar(mToolbar);
    }
}
 
方式2:
布局 toolbar2.xml
Html代码  <LinearLayout xmlns:android="//schemas.android.com/apk/res/android"      xmlns:tools="//schemas.android.com/tools"      android:layout_width="match_parent"      android:layout_height="match_parent"      android:background="@android:color/white"      android:orientation="vertical"     >      <TextView          android:layout_width="match_parent"          android:layout_height="100dp"          android:background="@color/colorAccent"          android:fitsSystemWindows="true"          android:clipToPadding="true"          android:text="自定义的ToolBar布局"          android:textSize="20sp"          android:gravity="center_vertical"          />      <TextView          android:layout_width="match_parent"          android:layout_height="match_parent"          android:background="#FFFF00"          android:text="主布局"          android:textSize="22sp"          android:gravity="center"          />  </LinearLayout>  <LinearLayout xmlns:android="//schemas.android.com/apk/res/android"
    xmlns:tools="//schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:orientation="vertical"
   >
    <TextView
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:background="@color/colorAccent"
        android:fitsSystemWindows="true"
        android:clipToPadding="true"
        android:text="自定义的ToolBar布局"
        android:textSize="20sp"
        android:gravity="center_vertical"
        />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#FFFF00"
        android:text="主布局"
        android:textSize="22sp"
        android:gravity="center"
        />
</LinearLayout>
Activity.Java
Java代码  public class TooBarStatusActivity2 extends AppCompatActivity {        @Override      protected void onCreate(@Nullable Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.toolbar_layout2);          if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {              //透明状态栏              getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);              //透明导航栏              getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);          }      }  }  public class TooBarStatusActivity2 extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.toolbar_layout2);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            //透明状态栏
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            //透明导航栏
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
        }
    }
}
style.xml
 
Html代码  <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">          <!-- Customize your theme here. -->          <item name="colorPrimary">@color/colorPrimary</item>          <item name="colorPrimaryDark">@color/colorPrimaryDark</item>          <item name="colorAccent">@color/colorAccent</item>          <item name="windowActionBar">false</item>          <item name="windowNoTitle">true</item>      </style>  <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>
 
 
 
 
 
     

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程