四、 Android之手机屏幕朝向

模拟当点击按钮时,使手机朝向发生改变。

main.xml布局文件


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button android:id="@+id/btn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="点击更改屏幕朝向"/>
<!-- android:hint: 当文本为空时显示该文本 -->
<EditText android:id="@+id/editText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:cursorVisible="false"
android:hint="显示当前屏幕朝向"/>
</LinearLayout>

清单文件


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ljq.activity"
android:versionCode="1"
android:versionName="1.0">
<!-- 设置手机的朝向,不然无法获取手机的朝向
android:screenOrientation="portrait"
android:configChanges="orientation"-->
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".OrientationActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:configChanges="orientation">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>

</application>
<uses-sdk android:minSdkVersion="7"/>
<!-- 改变手机配置权限 -->
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>
</manifest>

OrientationActivity类


package com.ljq.activity;

import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

publicclass OrientationActivity extends Activity {
private EditText editText=null;

@Override
publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

editText=(EditText)findViewById(R.id.editText);
Button btn=(Button)findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener(){
publicvoid onClick(View v) {
//判断是否可以获得requestedOrientation属性
if(OrientationActivity.this.getRequestedOrientation()==-1){
Toast.makeText(OrientationActivity.this, "系统的朝向无法获取", Toast.LENGTH_LONG).show();
}else{
//手机屏幕的朝向有7个可选值,分别如下
//SCREEN_ORIENTATION_BEHIND: 继承Activity堆栈中当前Activity下面的那个Activity的方向
//SCREEN_ORIENTATION_LANDSCAPE: 横屏(风景照) ,显示时宽度大于高度
//SCREEN_ORIENTATION_PORTRAIT: 竖屏 (肖像照) , 显示时高度大于宽度
//SCREEN_ORIENTATION_NOSENSOR: 忽略物理感应器——即显示方向与物理感应器无关,
//不管用户如何旋转设备显示方向都不会随着改变("unspecified"设置除外)
//SCREEN_ORIENTATION_SENSOR: 由物理感应器决定显示方向,它取决于用户如何持有设备,
//当设备被旋转时方向会随之变化——在横屏与竖屏之间
//SCREEN_ORIENTATION_UNSPECIFIED: 未指定,此为默认值,由Android系统自己选择适当的方向,
//选择策略视具体设备的配置情况而定,因此不同的设备会有不同的方向选择
//SCREEN_ORIENTATION_USER: 用户当前的首选方向
if(OrientationActivity.this.getRequestedOrientation()==ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){
OrientationActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}elseif(OrientationActivity.this.getRequestedOrientation()==ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){
OrientationActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}

}

}
});
}

/**
* 配置信息发生改变时触发
*/
@Override
publicvoid onConfigurationChanged(Configuration newConfig) {
Toast.makeText(this, "系统的屏幕方向发生改变", Toast.LENGTH_LONG).show();
int o=getRequestedOrientation();//获取手机的朝向
switch (o) {
case ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE:
editText.setText("当前屏幕朝向为: 横屏");
break;
case ActivityInfo.SCREEN_ORIENTATION_PORTRAIT:
editText.setText("当前屏幕朝向为: 竖屏");
break;
}
//不能省略,否则会报android.app.SuperNotCalledException: Activity OrientationActivity did not
//call through to super.onConfigurationChanged()异常
super.onConfigurationChanged(newConfig);

}
}

运行结果

四、 Android之手机屏幕朝向,布布扣,bubuko.com

时间: 2024-10-13 11:51:17

四、 Android之手机屏幕朝向的相关文章

Android不同手机屏幕分辨率自适应【转】

有必要了解的 Android中常见的单位 dip, dp, px, sp之间的区别: dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和QVGA 推荐使用这个,不依赖像素.px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多.pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用:sp: scal

android 获得手机屏幕宽高

// 获得屏幕分辨率 DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); // 获得屏幕宽高 int displayWidth = metrics.widthPixels; int displayHeight = metrics.heightPixels; android 获得手机屏幕宽高

Android 获得手机屏幕大小

Android在自定义控件时,经常需要获得屏幕的宽高,每次都要写,不妨直接把他封装成工具类,直接拿来用,废话不说,直接上代码 /** * */ package com.example.customview; import android.content.Context; import android.util.DisplayMetrics; import android.view.WindowManager; /** * 获取手机屏幕大小 * @author * */ public class

android获取手机屏幕的宽度及高度

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics outMetrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(outMetrics); int mScreenWidth = outMetrics.widthPixels;//屏幕的宽度 int mScreenHeight

android获取手机屏幕分辨率

@Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                final DisplayMetrics dm = new DisplayMetrics();        getWindowManager().getDefaultDisplay

Android 获得手机屏幕真实的宽高

http://stackoverflow.com/questions/1016896/get-screen-dimensions-in-pixels WindowManager w = activity.getWindowManager(); Display d = w.getDefaultDisplay(); DisplayMetrics metrics = new DisplayMetrics(); d.getMetrics(metrics); // since SDK_INT = 1; w

Android手机屏幕投射到电脑神器Vysor

做android开发的,经常要把手机屏幕投射到电脑,用来演示.普遍的解决方案是360或者豌豆荚的演示功能,缺点是延迟非常厉害,大概有3秒左右,非常影响演示效果.以下介绍Vysor,几乎0延迟,能与手机画面同步 Vysor是chrome浏览器的应用,因此先要下载原版的chrome,并且还要使用chrome应用商店,如何fq使用应用商店大家可以百度 软件打开后是这么个样子 PS:win10要安装最新的ADB驱动,软件界面下方有提供下载链接 然后是手机的准备,首先,开启usb调试模式 然后用usb线把

Android Screen Monitor同步手机屏幕到PC

有时候我们需要在PC上显示真机的屏幕,Android的ADM只能静态的监听一桢图像,所以在Google Code上,Google提供了一个Android Screen Monitor工具来实时显示手机屏幕: http://code.google.com/p/android-screen-monitor/   点击打开链接 介于大部分的朋友无法翻墙,这里提供下CSDN的下载链接 点击打开 System Requirements Ver.2.00 - 2.50 JRE(JDK) 5 or 6 and

Android中如何让手机屏幕不待机

在Android中,申请WakeLock可以让你的进程持续执行即使手机进入睡眠模式,比较实用的是比如后台有网络功能,可以保证操作持续进行. 方法: 在操作之前加入             PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);             wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, Con