您的位置:首页 > 移动开发 > Android开发

Activity强制横/竖屏,全屏和常亮

2016-05-25 21:10 309 查看

全屏

代码实现

// 隐藏标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
// 设置全屏显示
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);


AndroidManifest.xml配置实现

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


横/竖屏

代码实现

// 横屏显示
if (getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
// 竖屏显示
if (getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}


AndroidManifest.xml配置实现

// 横屏显示
android:screenOrientation="landscape"
// 竖屏显示
android:screenOrientation="portrait"


常亮

代码实现

// 界面常亮
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);


AndroidManifest.xml配置实现

横竖屏切换

在Android系统中,当进行横纵屏切换时,由于运行时配置发生了变化,android会默认将activity结束以及重新启动。为了防止activity重新启动,我们何以通过设置android:configChanges属性来达到不重启的目的。

经过实测,发现android:configChanges=”orientation”,并不能达到效果。在不设置时,横、纵切换都是调用生命周期一次;而设置了该属性之后,横纵切换时还是调用生命周期各一次。而且在只设置了orientation之后,onConfigurationChanged方法也未被执行。

在查阅了官方解决办法之后(:http://developer.android.com/guide/topics/resources/runtime-changes.html),发现里面提到了从Android 3.2 (API level 13)开始,在横纵切换时,screen size同样发生了变化,所以要加入screen size属性,所以正确的解决办法为android:configChanges=”orientation|screenSize”。

以下为onConfigurationChanged方法实例,当设置android:configChanges=”orientation|screenSize”时,会在发生横纵切换时执行该方法。

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);

if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
}
}


例子

MainActivity.java

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// 隐藏标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); // 设置全屏显示 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);// 界面常亮 getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
// 横屏显示 if (getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } // 竖屏显示 if (getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); }
setContentView(R.layout.activity_main);
}
}


AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sma.demo.androiddemo"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="15" />

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen" >
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android-全屏