博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android实现简单的横竖屏之间的切换
阅读量:7146 次
发布时间:2019-06-29

本文共 2312 字,大约阅读时间需要 7 分钟。

hot3.png

Configuration类 用于获取手机上的设备的配置信息,包括用户配置项和系统的动态设置项

可通过Activity的如下方法获得:

Configuration cfg = getResource().getConfiguration();

属性

public float fontScale; 获取当前用户设置的字体的缩放因子

 public int mcc; 获取移动信号的国家码

 public int mnc;获取移动信号的网络码

 public Locale locale;获取用户当前的Local

 public boolean userSetLocale;//Locale should persist on setting.  This is hidden because it is really  * questionable      whether this is the right way to expose the functionality.

public int keyboardHidden: 获取当前设备所关联的键盘类型。

       KEYBOARD_NOKEYS、KEYBOARD_QWERTY(普通电脑键盘)、

       KEYBOARD_12KEY(只有12个键的小键盘)

public int keyboardHidden; 该属性返回一个标志当前键盘是否可用:(该属性不仅会判断系统的硬件键盘,还会判断系统的软件键盘(位于屏幕上的))

1.如果系统的硬件键盘不可用,但软件键盘可用,会返回KEYBOARDHIDDEN_NO()、

2.只有当两个键盘都不可用时,才返回KEYBOARDHODDEN_YES

public int orientation:获取系统屏幕的方向,:ORIENTATION_LANDSPACE(横屏)、ORIENTATION_PORTRAIT(竖向屏幕)、ORIENTATION_SQUARE(方形屏幕)等属性

现在我们实现一个简单的屏幕切换(通过点击一个普通的button来实现):

main.xml

    

Main.java

public class Main extends Activity {	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.main);		Button b = (Button) findViewById(R.id.button1);		b.setOnClickListener(new OnClickListener() {			@Override			public void onClick(View v) {				Configuration cfg = getResources().getConfiguration();				if (cfg.orientation == Configuration.ORIENTATION_LANDSCAPE) {					Main.this							.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);				}				if (cfg.orientation == Configuration.ORIENTATION_PORTRAIT) {					Main.this							.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);				}			}		});	}	/**	 * 在AndroidManifest.xml文件中设置	 * android:configChanges="orientation" 	 * 屏幕方向改变,会回调这个方法  	 */	@Override	public void onConfigurationChanged(Configuration newConfig) {		super.onConfigurationChanged(newConfig);		String str = newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE ? "横屏显示"				: "竖屏显示";		Toast.makeText(this, str, Toast.LENGTH_LONG).show();	}}

AndroidManifest.xml

    
    
        
        
            
                
                
            
            

! !!配置文件中的:

 android:targetSdkVersion="12"

应为12,设置得过高,onConfigurationChanged()方法不会被触发。

转载于:https://my.oschina.net/xlazhh/blog/350329

你可能感兴趣的文章
2017敏捷沙滩大会概述:学习、心理安全和持续交付的重要性
查看>>
管理众包测试
查看>>
机器学习研究的七个迷思
查看>>
响应式布局设计
查看>>
马蜂窝张矗:绩效考核是为了激发工作潜力,而不是逃避问题
查看>>
ChaosConf 2018:混沌实验的演变
查看>>
区块链技术精华:四十种智能合约支持平台(三)
查看>>
MySQL · B+树并发控制机制的前世今生
查看>>
ArchSummit全球架构师峰会 重新定位架构师的价值
查看>>
微软在C# 8中引入预览版可空引用类型
查看>>
FoundationDB宣布记录层支持关系数据库语义、模式管理和索引功能
查看>>
一个月6次泄露,为啥大家用Elasticsearch总不设密码?
查看>>
去哪儿网消息队列设计与实现
查看>>
Racket 6.7最新版本:提供对Android App的支持及改进的REPL等等
查看>>
微软宣布公开预览其内容分发网络
查看>>
IBM、Google、Oracle三巨头的公有云之殇(下)
查看>>
Rust编程语言的核心部件
查看>>
简明高效的 Java 并发编程学习指南
查看>>
Git 2.20的重大更新:侧重可用性和性能
查看>>
区块链和数据科学:如果同时应用这两种技术,将会实现什么?
查看>>