每天进步一点点点

导航

[安卓]Android窗口、视图、布局

1、窗口全屏的两种方法:

转自:http://blog.sina.com.cn/s/blog_4c451e0e010133ab.html

设置全屏包括两个部分: 窗口全屏和Activity全屏。窗口全屏是指隐藏系统顶部用来显示时间、电量、信号等信息的标题栏;Activity全屏是指隐藏程序的标题栏。我们可以通过修改AndroidManifest.xml文件来实现。

1.1、窗口全屏fullscreen.java代码如下:

package wzhnsc.test.style;
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
public class fullscreen extends Activity {
  
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
      
       //不显示程序的标题栏
       requestWindowFeature( Window.FEATURE_NO_TITLE );
      
       //不显示系统的标题栏          
        getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN,
                             WindowManager.LayoutParams.FLAG_FULLSCREEN );
      
       setContentView( R.layout.main );
   }
}
View Code

1.2、修改 AndroidManifest.xml 我们可以修改activity或application的属性值来实现。具体可以根据自己的情况来设置,两者区别如下:

1)activity: 只针对当前的Activity全屏。
2)application:所有的Activity都会全屏。
AndroidManifest.xml 内容如下:
<?xml version=”1.0″ encoding=”utf-8″?>
<manifest 
    xmlns:android=”http://schemas.android.com/apk/res/android”
   package=”wzhnsc.test.style”
   android:versionCode=”1″
   android:versionName=”1.0″>
   <application 
        android:icon=”@drawable/icon”
       android:label=”@string/app_name”                 
        android:theme=”@android:style/Theme.NoTitleBar.Fullscreen”>
       <activity android:name=”.fullscreen”
           android:label=”@string/app_name”
           android:theme=”@android:style/Theme.NoTitleBar.Fullscreen”>
           <intent-filter>
               <action android:name=”android.intent.action.MAIN”/>
               <category android:name=”android.intent.category.LAUNCHER”/>
           </intent-filter>
       </activity>
    </application>
   <uses-sdk android:minSdkVersion=”1″/>
</manifest>

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

2.1、获取状态栏高度:

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

 java code:

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

 

2.2、获取标题栏高度:

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

java code:

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

2.3、获取屏幕高度:

  方法 1.
 java code:

WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
screenWidth = display.getWidth();
screenHeight = display.getHeight();


  方法 2.
 java code:

DisplayMetrics dm = new DisplayMetrics();     
this.getWindowManager().getDefaultDisplay().getMetrics(dm);//this指当前activity     
screenWidth =dm.widthPixels;     
screenHeight =dm.heightPixels;  

 


以上两种方法在屏幕未显示的时候,还是处于0的状态,即要在setContentView调用之后才有效。

posted on 2015-03-31 11:40  每天进步一点点点  阅读(500)  评论(0编辑  收藏  举报