public class MainActivity extends Activity {
private Spinner mScreenOrentation;
private static int[] mOrientationValues = new int[] {
// 未指定,此为默认值,由Android系统自己选择适当的方向
ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED,
// 横屏
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE,
// 坚屏
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT,
// 用户当前的首选方向
ActivityInfo.SCREEN_ORIENTATION_USER,
// 继承Activity堆栈中当前Activity下面的那个Activity的方向
ActivityInfo.SCREEN_ORIENTATION_BEHIND,
// 由物理感应器决定显示方向,它取决于用户如何持有设备,
ActivityInfo.SCREEN_ORIENTATION_SENSOR,
// 忽略物理感应器——即显示方向与物理感应器无关,
ActivityInfo.SCREEN_ORIENTATION_NOSENSOR,
// 希望Activity在横向屏幕上显示,但是可以根据方向传感器指示的方向来进行改变
ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE,
ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT,
// 希望Activity在横向屏幕上显示,但与正常的横向屏幕方向相反。
ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE,
ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT,
// Activity的方向由方向传感器来决定,显示会根据用户设备的移动情况来旋转。
ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR,
// 希望Activity在横向屏幕上显示,但是可以根据用户指定的方向来进行改变
ActivityInfo.SCREEN_ORIENTATION_USER_LANDSCAPE,
ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT,
// Activity的方向由方完全由用户来指定
ActivityInfo.SCREEN_ORIENTATION_FULL_USER,
// 锁定当前方向
ActivityInfo.SCREEN_ORIENTATION_LOCKED };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到下拉列表框
mScreenOrentation = (Spinner) findViewById(R.id.screen_orientation);
//从资源文件中创建一个适配器,所以要在资源文件中定义数据源。在values目录下新建arrays.xml
//文件,在arrays文件中准备下拉列表框中要显示的内容
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.screen_orientation,
android.R.layout.simple_spinner_item);
//设置下拉列表项的布局文件,使用系统自带的布局文件
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mScreenOrentation.setAdapter(adapter);
//设置选择监听
mScreenOrentation.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
//向系统发送设置屏幕方向的请求
setRequestedOrientation(mOrientationValues[position]);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}
});
}