android 状态栏、标题栏、屏幕高度

1.获取状态栏高度:
  decorView是window中的最顶层view,可以从window中获取到decorView,然后decorView有个getWindowVisibleDisplayFrame方法可以获取到程序显示的区域,包括标题栏,但不包括状态栏。
于是,我们就可以算出状态栏的高度了。

Rect frame = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
int statusBarHeight = frame.top;

 

2.获取标题栏高度:
  getWindow().findViewById(Window.ID_ANDROID_CONTENT)这个方法获取到的view就是程序不包括标题栏的部分,然后就可以知道标题栏的高度了。

int contentTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();
//statusBarHeight是上面所求的状态栏的高度
int titleBarHeight = contentTop - statusBarHeight

 

3.获取屏幕高度

两种方法要在setContentView调用之后才有效。
方法 1.

WindowManager windowManager = getWindowManager();

Display display = windowManager.getDefaultDisplay();

screenWidth = display.getWidth();

screenHeight = display.getHeight();

方法 2.

DisplayMetrics dm = new DisplayMetrics();

this.getWindowManager().getDefaultDisplay().getMetrics(dm);//this指当前activity

screenWidth =dm.widthPixels;

screenHeight =dm.heightPixels;

 

设置为无标题:

requestWindowFeature(Window.FEATURE_NO_TITLE); 

 

设置为全屏模式getWindow().setFlags:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 

 

设置为横屏:

setRequesteOrientation(ActivityInfo.SCREEN_ORIENTATION_LADSCAPE);

 

在开发中我们经常需要把我们的应用设置为全屏,这里我所知道的有两种方法,一种是在代码中设置,另一种方法是在配置文件里改!
一、在代码中设置:

在这里要强调一点,设置全屏的俩段代码必须在setContentView(R.layout.main) 之前,不然会报错。

 package com.android.activity; 
 import android.app.Activity; 
 import android.os.Bundle; 
 import android.view.Window; 
 import android.view.WindowManager; 
 public class MainActivity extends Activity { 
     public void onCreate(Bundle savedInstanceState) { 
         super.onCreate(savedInstanceState); 
        //去除title   
       requestWindowFeature(Window.FEATURE_NO_TITLE);   
        //去掉Activity上面的状态栏
        getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN ,     
                       WindowManager.LayoutParams. FLAG_FULLSCREEN);  
           
         setContentView(R.layout.main); 
     } 
 }

二、在配置文件里修改

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

 

如果想只是去除标题栏就后面不用加Fullscreen了,另外,如果想要整个应用都去除标题栏和状态栏,就把这句代码加到application标签里面,如果只是想某个activity起作用,这句代码就加到相应的activity上:

<?xml version="1.0" encoding="utf-8"?> 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android
       package="com.android.activty" 
       android:versionCode="1" 
       android:versionName="1.0"> 
     <application android:icon="@drawable/icon" android:label="@string/app_name"> 
         <activity android:name=".MainActivity" 
                   android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
                   android:label="@string/app_name"> 
             <intent-filter> 
                 <action android:name="android.intent.action.MAIN" /> 
                 <category android:name="android.intent.category.LAUNCHER" /> 
             </intent-filter> 
         </activity> 
     </application> 
     <uses-sdk android:minSdkVersion="7" /> 
 </manifest>  

在这里我还想说明一下,用前者在我们应用运行后,会看到短暂的状态栏,然后才全屏,而第二种方法是不会有这种情况的,所以我建议大家使用后者!

 

posted @ 2012-07-19 09:54  土金  阅读(178)  评论(0)    收藏  举报