ZNDS智能电视网 推荐当贝市场

TV应用下载 / 资源分享区

软件下载 | 游戏 | 讨论 | 电视计算器

综合交流 / 评测 / 活动区

交流区 | 测硬件 | 网站活动 | Z币中心

新手入门 / 进阶 / 社区互助

新手 | 你问我答 | 免费刷机救砖 | ROM固件

查看: 14362|回复: 0
上一主题 下一主题
[教程]

android手机朝向

[复制链接]
跳转到指定楼层
楼主
发表于 2013-8-28 16:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1   
   
     
<?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;   
   
public class OrientationActivity extends Activity {   
   
private EditText editText=null;   
      
    @Override   
   
public void 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(){   
            
public void 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);   
                    }
else if(OrientationActivity.this.getRequestedOrientation()==ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){   
                        OrientationActivity.
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);   
                    }   
                       
                }   
                  
            }   
        });   
    }   
      
   
/**   
     * 配置信息发生改变时触发   
     
*/   
    @Override   
   
public void 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可缩放的图形处理
下一篇:android开发如何学习
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|新帖|标签|软件|Sitemap|ZNDS智能电视网 ( 苏ICP备2023012627号 )

网络信息服务信用承诺书 | 增值电信业务经营许可证:苏B2-20221768 丨 苏公网安备 32011402011373号

GMT+8, 2025-4-28 01:52 , Processed in 0.064793 second(s), 13 queries , Redis On.

Powered by Discuz!

监督举报:report#znds.com (请将#替换为@)

© 2007-2025 ZNDS.Com

快速回复 返回顶部 返回列表