Android(十):屏幕相关操作
android中有很多未知的“路”,只有走好每一步,才有可能找到捷径!!!
1.获取屏幕大小
还有一种方法,可以获取屏幕大小(像素),如下:
2.改变屏幕方向
android手机在改变屏幕方向(横屏与竖屏互相切换)的时候,会多次调用onCreate()方法,以及onPause()、onStop()、onDestroy()方法,然后重新调用onCreate()、onStart()、onResume()方法使该activity重新展现在我们面前。
利用这种特性可以实现某些特殊的效果,但是在大多数情况下,我们还是想让它只调用一次onCreate()方法。因为onCreate()方法一般用来做一些初始化的工作,毕竟没有多少人希望初始化工作会一次又一次的进行着。特别是你的app有多个activity,如果在改变屏幕方向(横屏与竖屏互相切换)的时候onCreate()方法总是在调用,那么这可能就是一场噩梦!!下面介绍改变这中现状的方法。主要两个步骤!!
<1> 修改manifest.xml文件
添加如下代码,即可
完整示例如下:
这样,切换屏幕时就不会多次调用onCreate()方法,从而不会影响activity生命周期。那么,既然不会多次调用onCreate()方法,系统又是调用哪个方法呢?接着看.....
<2>覆写Activity的onConfigurationChanged()方法
如果你想在屏幕方向改变时,做一些操作必须覆写onConfigurationChanged()方法。在该方法中我们可以添加自己的代码,主要有两中写法,如下:
或者:
这两种方式,打印结果:
但是这是在模拟器上面测试的结果,在真机上测试结果不一样。
还有一点需要注意:super.onConfigurationChanged(newConfig);必须写,否则报异常!
异常信息:
说明要调用父类Activity的onConfigurationChanged()方法。看一下Activity的onConfigurationChanged()方法源码:
可以看出,调用了抽象类Window的onConfigurationChanged()方法。看源码如下:
3.固定屏幕方向
从上面我们知道,当改变设备或者模拟器的屏幕方向时,相应的显示模式也将根据变化匹配现有的情况,这样,Activity
根据不同的模式(Portrait和Landscape)重新调整视图的显示方式。如果你想让你的视图一直处于某一个固定方向,可以
在Manifest里为相应的Activity添加Android:screenOrientation属性,并赋予”portrait”或”Landscape”属性。
4.跟Camera有关
使用过android的照相机的api的朋友知道,如果不做处理,画面是不会随着手机的方向变化而变化。
其实改变这种现状也很简单,一句代码的事:
记住:这种方法不会禁止应用程序多次调用onCreate()方法,所以你需要按照上面的方法去禁止这种现象发生,如果你需要的话。
对应的getRequestedOrientation( )方法返回屏幕方向的数据,如果没有指定屏幕方向的话,调用getRequestedOrientation( )
方法会返回-1(SCREEN_ORIENTATION_UNSPECIFIED),表示没有指定。
如果你在manifest.xml或者代码中使用setRequestedOrientation()方法设置了屏幕方向的话,会返回对应数据。
具体参数可以查看ActivityInfo类的常量。
更多相关文章
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用
- python list.sort()根据多个关键字排序的方法实现
- sqlit导入外部数据库查找数据方法
- android下usb框架系列文章---(3)Storage框架整理
- Android(安卓)NDK打印log到logcat的方法
- androidの自定义加载对话框ProgressDialog
- Android(安卓)图片拖动和缩放
- Android(安卓)获取设备各种信息以及其它