[安卓]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 ); } }
1.2、修改 AndroidManifest.xml 我们可以修改activity或application的属性值来实现。具体可以根据自己的情况来设置,两者区别如下:
1)activity: 只针对当前的Activity全屏。
2)application:所有的Activity都会全屏。
2)application:所有的Activity都会全屏。
AndroidManifest.xml 内容如下:
<?xml version=”1.0″ encoding=”utf-8″?>
<manifest
<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”
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>
<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″/>
<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调用之后才有效。