在style.xml中添加


[html] view plain copy
  1. <stylename="Theme.Timetodo"parent="@android:style/Theme.Holo.Light">
  2. <!--translucentsystembars-->
  3. <itemname="android:windowTranslucentStatus">true</item>
  4. <itemname="android:windowTranslucentNavigation">true</item>
  5. </style>


其中 android:windowTranslucentStatus表示是否要填充顶部的状态栏区域
android:windowTranslucentNavigation表示是否要填充底部的状态栏区域
这两种样式的目的就是默认让应用的内容放置到系统栏的下边,如果仅仅想扩展背景样式到系统栏下边,则需要设置android:fitsSystemWindows为true,
会增加试图的Pading值让你的布局恢复正常大小,并且可以将背景扩大。


在已经创建的Activity中添加

[java] view plain copy
  1. packagecom.example.androidedemo;
  2. importjava.lang.reflect.Field;
  3. importandroid.annotation.SuppressLint;
  4. importandroid.app.ActionBar;
  5. importandroid.app.ActionBar.LayoutParams;
  6. importandroid.app.Activity;
  7. importandroid.content.res.Resources;
  8. importandroid.graphics.Color;
  9. importandroid.graphics.drawable.Drawable;
  10. importandroid.os.Bundle;
  11. importandroid.util.TypedValue;
  12. importandroid.view.Menu;
  13. importandroid.view.View;
  14. importandroid.view.ViewGroup;
  15. importandroid.view.Window;
  16. importandroid.view.WindowManager;
  17. importandroid.widget.LinearLayout;
  18. importandroid.widget.ListView;
  19. importandroid.widget.RelativeLayout;
  20. importandroid.widget.TextView;
  21. @SuppressLint("NewApi")
  22. publicclassMainActivityextendsActivity{
  23. privateRelativeLayoutrlLayout;
  24. @Override
  25. protectedvoidonCreate(BundlesavedInstanceState){
  26. super.onCreate(savedInstanceState);
  27. setContentView(R.layout.activity_main);
  28. //设置ACtionBar
  29. ActionBaractionBar=getActionBar();
  30. Resourcesr=getResources();
  31. DrawablemyDrawable=r.getDrawable(R.drawable.ba);
  32. actionBar.setBackgroundDrawable(myDrawable);
  33. actionBar.setDisplayHomeAsUpEnabled(true);
  34. actionBar.setHomeButtonEnabled(true);
  35. rlLayout=(RelativeLayout)findViewById(R.id.rlayout);
  36. ListViewlistView=(ListView)findViewById(R.id.listView);
  37. listView.setAdapter(newMyAdapter(getApplicationContext()));
[java] view plain copy
  1. <spanstyle="white-space:pre"></span>//此处判断的目的是让Android系统大于等于4.4的系统才执行沉浸式的功能
  2. if(android.os.Build.VERSION.SDK_INT>18){
  3. Windowwindow=getWindow();
  4. window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
  5. window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION,WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
  6. }
[java] view plain copy
  1. <spanstyle="white-space:pre"></span>//获取到系统通知栏的高度,然后给系统通知栏设置我们需要的颜色。并将其addView到ViewGroup中。
  2. //创建TextView
  3. TextViewtextView=newTextView(this);
  4. LinearLayout.LayoutParamslParams=newLinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,getStatusBarHeight());
  5. textView.setBackgroundColor(Color.parseColor("#3F9FE0"));
  6. textView.setLayoutParams(lParams);
  7. //获得根视图并把TextView加进去。
  8. ViewGroupview=(ViewGroup)getWindow().getDecorView();
  9. view.addView(textView);
  10. }
  11. //开启全屏模式
  12. @SuppressLint("NewApi")
  13. publicstaticvoidhideSystemUI(Viewview){
  14. view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
  15. |View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
  16. |View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
  17. |View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
  18. |View.SYSTEM_UI_FLAG_FULLSCREEN
  19. |View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
  20. }
  21. //取消全屏模式
  22. @SuppressLint("NewApi")
  23. publicstaticvoidshowSystemUI(Viewview){
  24. view.setSystemUiVisibility(
  25. View.SYSTEM_UI_FLAG_LAYOUT_STABLE
  26. |View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
  27. |View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
  28. }
  29. //获取手机状态栏高度
  30. publicintgetStatusBarHeight(){
  31. Class<?>c=null;
  32. Objectobj=null;
  33. Fieldfield=null;
  34. intx=0,statusBarHeight=0;
  35. try{
  36. c=Class.forName("com.android.internal.R$dimen");
  37. obj=c.newInstance();
  38. field=c.getField("status_bar_height");
  39. x=Integer.parseInt(field.get(obj).toString());
  40. statusBarHeight=getResources().getDimensionPixelSize(x);
  41. }catch(Exceptione1){
  42. e1.printStackTrace();
  43. }
  44. returnstatusBarHeight;
  45. }
  46. //获取ActionBar的高度
  47. publicintgetActionBarHeight(){
  48. TypedValuetv=newTypedValue();
  49. intactionBarHeight=0;
  50. if(getTheme().resolveAttribute(android.R.attr.actionBarSize,tv,true))//如果资源是存在的、有效的
  51. {
  52. actionBarHeight=TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
  53. }
  54. returnactionBarHeight;
  55. }
  56. }



在drawable文件夹中添加

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <shapexmlns:android="http://schemas.android.com/apk/res/android">
  3. <gradient
  4. android:angle="270"
  5. android:endColor="#c8c8c8"
  6. android:startColor="#3F9FE0"
  7. android:type="linear"/>
  8. </shape>

此代码是给您的导航条设置一个渐变,目的是让导航条和系统通知栏的样式融合看起来更加紧密。


最后在AndroidManifest.xml文件中将Application中的theme更改为上边我们定义的样式

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <manifestxmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.example.androidedemo"
  4. android:versionCode="1"
  5. android:versionName="1.0">
  6. <uses-sdk
  7. android:minSdkVersion="8"
  8. android:targetSdkVersion="8"/>
  9. <application
  10. android:allowBackup="true"
  11. android:icon="@drawable/ic_launcher"
  12. android:label="@string/app_name"
  13. android:theme="@style/Theme.Timetodo">
  14. <activity
  15. android:name="com.example.androidedemo.MainActivity"
  16. android:label="@string/app_name">
  17. <intent-filter>
  18. <actionandroid:name="android.intent.action.MAIN"/>
  19. <categoryandroid:name="android.intent.category.LAUNCHER"/>
  20. </intent-filter>
  21. </activity>
  22. </application>
  23. </manifest>

更多相关文章

  1. [Network]Android(安卓)N Ethernet新IP获取机制—IpManager
  2. Android(安卓)MotionEvent 坐标获取
  3. Android笔记【外观部分】
  4. Android(安卓)打开系统蓝牙设置
  5. Android获取版本号
  6. Android学习系列(40)--Android主题和样式之系统篇(下)
  7. 有关Android中EditText的一些属性
  8. Android(安卓)ApiDemos示例解析(15):App->Activity->SetWallpaper
  9. android中获得屏幕、视图、任务栏、状态栏的高宽以及屏幕的设置

随机推荐

  1. android 程序开发的插件化 模块化方法
  2. Android studio开发-第一个入门例子(十分
  3. Android程序员指南(16)
  4. Android 开发实战
  5. 【Android 周末回眸】2011.08.01-2011.08
  6. Android 手表设计规范(来源于网络)
  7. 配置android环境遇到的问题及解决办法
  8. android系统启动流程之init.rc详细分析笔
  9. Android——弹出窗口中实现时间选择,文本
  10. 这本《第三行代码》,让大家久等了!