Android 自定义状态栏实例代码
一、目标:Android5.0以上
二、步骤
1、在res-values-colors.xml下新建一个RGB颜色
<?xmlversion="1.0"encoding="utf-8"?> <resources> <colorname="colorPrimary">#3F51B5</color> <colorname="colorPrimaryDark">#303F9F</color> <colorname="colorAccent">#FF4081</color> <colorname="theRed">#ff6a69</color> </resources>
2、新建一个布局,名为actionbarlayout.xml,在后边重写布局时用于添加
<?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/actionBarId" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
3、重写LineaLayout布局,放置步骤二新建的布局在顶部,用作背景颜色的容器
publicclassActionBarLayOutextendsLinearLayout{
publicActionBarLayOut(Contextcontext,AttributeSetattrs){
super(context,attrs);
LayoutInflater.from(context).inflate(R.layout.actionbarlayout,this);
}
}
3、在主布局里调用这个重写后的线性布局
<?xmlversion="1.0"encoding="utf-8"?> <com.example.test.ActionBarLayOutxmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.test.MainActivity"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/theRed" android:text="HelloWorld!"/> </com.example.test.ActionBarLayOut>
4、在main活动中进行相应设置
publicclassMainActivityextendsAppCompatActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextViewtextView=(TextView)findViewById(R.id.actionBarId);
intcolor=getResources().getColor(R.color.theRed);
setActionBarColor(textView,color);
}
protectedvoidsetActionBarColor(TextViewtextView,intActionBarColor){
//----------------------------------隐藏标题栏----------------------------------------------
if(getSupportActionBar()!=null){
getSupportActionBar().hide();
}
//------------------------------------------------------------------------------------------
//----------------------------------将状态栏设置为透明--------------------------------------
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP){
Windowwindow=getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
|WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
window.setNavigationBarColor(Color.TRANSPARENT);
}
//------------------------------------------------------------------------------------------
/**
*首先获取状态栏的高度statusBarHeight1,然后在状态栏的位置放一个空的TextView,
*高度设置为statusBarHeight1,然后将TextView的背景颜色进行设置,这样就可以变相
*的给状态栏设置颜色
*/
intstatusBarHeight1=-1;
//获取status_bar_height资源的ID
intresourceId=getResources().getIdentifier("status_bar_height","dimen","android");
if(resourceId>0){
//根据资源ID获取响应的尺寸值
statusBarHeight1=getResources().getDimensionPixelSize(resourceId);
}
textView.setHeight(statusBarHeight1);
textView.setBackgroundColor(ActionBarColor);
}
}
以上所述是小编给大家介绍的Android自定义状态栏实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!