android软件开发:横竖屏

获取屏幕方向
Configuration newConfig = getResources().getConfiguration();
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){
//横屏
}else if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
//竖屏
}else if(newConfig.hardKeyboardHidden == Configuration.KEYBOARDHIDDEN_NO){
//键盘没关闭。屏幕方向为横屏
}else if(newConfig.hardKeyboardHidden == Configuration.KEYBOARDHIDDEN_YES){
//键盘关闭。屏幕方向为竖屏
}
横竖屏切换问题
很多没有购买真机的网友不知道如何切换 Android
模拟器到横屏显示。常规的显示为HVGA-P(port),即分
辨率为320x480
如果使用横屏(land)。如果模拟器尚未启动,可以在Eclipse
的项目Run as=>Open Run
Dialog
对话框中设置,如果android
模拟器已经启动后,可以使用快捷键F12
或Ctrl+F11
或小键盘7、8
来切换。当然是用命令行仅仅启动模拟器可以使用参数emulator.exe -skin HVGA-L 来启动。
需要注意的是,切换land 或port 可以通过资源文件来让界面自适应窗体,但程序可能会重载onCreate,
避免的方法可以通过在androidmanifest.xml 文件中重新定义方向,以及根据Activity
的重写
onConfigurationChanged(Configuration newConfig)方法来控制,相关的可以在Android SDK
中获取到。
开发 游戏的时候,有些游戏是只能横屏玩的,所以手机竖立放置的时候,要保持游戏画面
依然横屏。要做到这个要求其实很简单,在AndroidManifest.xml 里面配置一下就可以了。
加入这一行android:screenOrientation="landscape"。
例如(landscape 是横向,portrait 是纵向):
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=" http://schemas.android.com/apk/res/android "
package="com.ray.linkit"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Main"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".GamePlay"
android:screenOrientation="portrait"></activity>
<activity android:name=".OptionView"
android:screenOrientation="portrait"></activity>
</application>
<uses-sdk android:minSdkVersion="3" />
</manifest>
另外,android 中每次屏幕的切换动会重启Activity,所以应该在Activity
销毁前保存当前活动的状态,在Activity 再次Create 的时候载入配置,那样,
进行中的游戏就不会自动重启了!
案例
package com.cn;
import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
public class LayoutTest extends Activity {
private static final String tag = "LayoutTest";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.e(tag, "********test********");
// LOGV("********test********");
if(this.getResources()
.getConfiguration()
.orientation == Configuration.ORIENTATION_LANDSCAPE){
Log.e(tag, "^^^^^^^^^^this is a landscape *************");
}
// TextView tx = (TextView)findViewById(R.id.txt);
// tx.setKeepScreenOn(true);
// if(this.getResources())
setContentView(R.layout.main);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
super.onConfigurationChanged(newConfig);
if(this.getResources()
.getConfiguration()
.orientation == Configuration.ORIENTATION_PORTRAIT){
Log.e(tag, "********this is a portrait");
}else if(this.getResources()
.getConfiguration()
.orientation == Configuration.ORIENTATION_LANDSCAPE){
Log.e(tag, "this is a landscape *************");
}
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=" http://schemas.android.com/apk/res/android "
package="com.cn"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".LayoutTest"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden" >
<!-- android:screenOrientation="landscape">
-->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="3" />
</manifest>

你可能感兴趣的:(android,android)