- 浏览: 57688 次
- 性别:
- 来自: 成都
文章分类
最新评论
要解决的问题应该就两个:
一。布局问题;
二。重新载入问题。
1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的 AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation属性,他有以下几个参数:
"unspecified"
默认值由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向.
"landscape"
横屏显示(宽比高要长)
"portrait"
竖屏显示(高比宽要长)
"user"
用户当前首选的方向
"behind"
和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)
"sensor"
有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换。
"nosensor"
忽略物理感应器,这样就不会随着用户旋转设备而更改了( "unspecified"设置除外)。
也可以在Java代码中通过 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);来设置。如果要让软件在横竖屏之间切换,由于横竖屏的高宽会发生转换,有可能会要求不同的布局。
可以通过以下方法来切换布局:
1)在res目录下建立layout-land和layout-port目录,相应的layout文件不变,比如main.xml。layout- land是横屏的layout,layout-port是竖屏的layout,其他的不用管,模拟器会自动寻找。
2)通过this.getResources().getConfiguration().orientation来判断当前是横屏还是竖屏然后来加载相应的xml布局文件。因为当屏幕变为横屏的时候,系统会重新呼叫当前Activity的OnCreate方法,你可以把以下方法放在你的 OnCreate中来检查当前的方向,然后可以让你的SetContentView来载入不同的Layout xml.
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
Log.i("info", "landscape");
}
else
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
Log.i("info", "portrait");
}
2.重新载入问题。如果不需要从新载入,可以在androidmanifest.xml中加入配置 android:configChanges="orientation",配置android:configChanges的作用就是如文档所说的:
Specify one or more configuration changes that the activity will handle itself. If not specified, the activity will be restarted if any of these configuration changes happen in the system。
这样在程序中. Activity就不会重复的调用onCreate()甚至不会调用onPause.onResume.只会调用一个 onConfigurationChanged(Configuration newConfig)。
其实在这里我遇到两个奇怪的问题,那就是
1.如果我在android:configChanges中只设置orientation,他依然会重新加载,只有设置了 orientation|keyboardHidden它才会只调用一个onConfigurationChanged(Configuration newConfig)
2.当横屏变竖屏的时候,他会调用两次onConfigurationChanged,而竖屏转横屏时他只调用一次 onConfigurationChanged,真是太奇怪了。如果你知道,欢迎留言共同探讨.
如果需要重新载入,则不需要做任何修改。不过如果需要在重新载入过程中保存之前的操作内容或数据,则需要保存之前的数据。然后在activity的 onCreate()中取出来。当然,如此就不能设置android:configChanges()了,否则就不会调用onCreate()方法。那么数据可以保存在哪呢?Android中四种存储方法都可以,另外,还可以用Android为我们提供了 onRetainNonConfigurationInstance()方法来暂时保存数据。
下面为此举个例子:
保存临时图片:
@Override
public Object onRetainNonConfigurationInstance() {
final LoadedPhoto[] list = new LoadedPhoto[numberOfPhotos];
keepPhotos(list);
return list;
}
之后便可以在activity的onCreate()函数中实现重新调用临时文件,在代码中需要判断系统是否需要重新加载临时文件。以下是放在 OnCreate()函数中加载临时文件的代码:
private
void loadPhotos() {
final Object data = getLastNonConfigurationInstance();
// The activity is starting for the first time, load the photos from Flickr
if (data == null) {
mTask = new GetPhotoListTask().execute(mCurrentPage);
} else {
// The activity was destroyed/created automatically, populate the grid
// of photos with the images loaded by the previous activity
final LoadedPhoto[] photos = (LoadedPhoto[]) data;
for (LoadedPhoto photo : photos) {
addPhoto(photo);
}
}
}
对于大多数的情况并不需要做如上的操作,所以需要谨慎使用这个行文,毕竟最好的行为也并不适用于所有情况,如果应用的不好反而会给程序带来不必要的麻烦。
如果要彻底禁止翻转,可以设置android:screenOrientation的属性为nosensor,如此就可以忽略重力感应带来的麻烦了。不过不知道为什么,在模拟器上不管用,听别人说在真机上是正确的,我没有真机,等有了真机再试试看
一。布局问题;
二。重新载入问题。
1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的 AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation属性,他有以下几个参数:
"unspecified"
默认值由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向.
"landscape"
横屏显示(宽比高要长)
"portrait"
竖屏显示(高比宽要长)
"user"
用户当前首选的方向
"behind"
和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)
"sensor"
有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换。
"nosensor"
忽略物理感应器,这样就不会随着用户旋转设备而更改了( "unspecified"设置除外)。
也可以在Java代码中通过 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);来设置。如果要让软件在横竖屏之间切换,由于横竖屏的高宽会发生转换,有可能会要求不同的布局。
可以通过以下方法来切换布局:
1)在res目录下建立layout-land和layout-port目录,相应的layout文件不变,比如main.xml。layout- land是横屏的layout,layout-port是竖屏的layout,其他的不用管,模拟器会自动寻找。
2)通过this.getResources().getConfiguration().orientation来判断当前是横屏还是竖屏然后来加载相应的xml布局文件。因为当屏幕变为横屏的时候,系统会重新呼叫当前Activity的OnCreate方法,你可以把以下方法放在你的 OnCreate中来检查当前的方向,然后可以让你的SetContentView来载入不同的Layout xml.
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
Log.i("info", "landscape");
}
else
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
Log.i("info", "portrait");
}
2.重新载入问题。如果不需要从新载入,可以在androidmanifest.xml中加入配置 android:configChanges="orientation",配置android:configChanges的作用就是如文档所说的:
Specify one or more configuration changes that the activity will handle itself. If not specified, the activity will be restarted if any of these configuration changes happen in the system。
这样在程序中. Activity就不会重复的调用onCreate()甚至不会调用onPause.onResume.只会调用一个 onConfigurationChanged(Configuration newConfig)。
其实在这里我遇到两个奇怪的问题,那就是
1.如果我在android:configChanges中只设置orientation,他依然会重新加载,只有设置了 orientation|keyboardHidden它才会只调用一个onConfigurationChanged(Configuration newConfig)
2.当横屏变竖屏的时候,他会调用两次onConfigurationChanged,而竖屏转横屏时他只调用一次 onConfigurationChanged,真是太奇怪了。如果你知道,欢迎留言共同探讨.
如果需要重新载入,则不需要做任何修改。不过如果需要在重新载入过程中保存之前的操作内容或数据,则需要保存之前的数据。然后在activity的 onCreate()中取出来。当然,如此就不能设置android:configChanges()了,否则就不会调用onCreate()方法。那么数据可以保存在哪呢?Android中四种存储方法都可以,另外,还可以用Android为我们提供了 onRetainNonConfigurationInstance()方法来暂时保存数据。
下面为此举个例子:
保存临时图片:
@Override
public Object onRetainNonConfigurationInstance() {
final LoadedPhoto[] list = new LoadedPhoto[numberOfPhotos];
keepPhotos(list);
return list;
}
之后便可以在activity的onCreate()函数中实现重新调用临时文件,在代码中需要判断系统是否需要重新加载临时文件。以下是放在 OnCreate()函数中加载临时文件的代码:
private
void loadPhotos() {
final Object data = getLastNonConfigurationInstance();
// The activity is starting for the first time, load the photos from Flickr
if (data == null) {
mTask = new GetPhotoListTask().execute(mCurrentPage);
} else {
// The activity was destroyed/created automatically, populate the grid
// of photos with the images loaded by the previous activity
final LoadedPhoto[] photos = (LoadedPhoto[]) data;
for (LoadedPhoto photo : photos) {
addPhoto(photo);
}
}
}
对于大多数的情况并不需要做如上的操作,所以需要谨慎使用这个行文,毕竟最好的行为也并不适用于所有情况,如果应用的不好反而会给程序带来不必要的麻烦。
如果要彻底禁止翻转,可以设置android:screenOrientation的属性为nosensor,如此就可以忽略重力感应带来的麻烦了。不过不知道为什么,在模拟器上不管用,听别人说在真机上是正确的,我没有真机,等有了真机再试试看
发表评论
-
TextView 的属性
2013-04-17 17:45 556收集到了TextView 的属性 ... -
ADT在线安装
2012-11-09 09:53 780注:转载自http://blog.csdn.net/kieve ... -
android 界面布局 很好的一篇总结 【转】
2012-04-26 15:24 916出处:http://www.cnblogs.com/awe ... -
android xml属性大全
2012-03-15 09:12 1012Android activity属性 android:all ... -
Android开发之屏幕大小自适应
2012-01-31 14:19 837屏幕大小: 一:不同的layout Android手机屏幕大小 ... -
Intent常用Uri
2012-01-21 09:37 801一、打开一个网页,类别是Intent.ACTION_VIEW ... -
android raw读取超过1M文件的方法
2011-11-01 15:48 822转载自:http://www.cnblogs.com/yaos ... -
Android Bitmap用法总结
2011-10-09 10:57 963转载自:http://blog.csdn.net/zhou69 ... -
Android之TextView------属性大全
2011-09-22 16:32 683android:autoLink设置是否当 ... -
Android内存泄漏简介
2011-09-09 16:28 805前言 不少人认为JAV ... -
Android的Parcel机制
2011-09-06 15:09 4017转载至:http://blog.csdn.net/caowen ... -
Android Context
2011-09-01 17:12 917在android中context可以作很多操作,但是最主要的功 ... -
android面试题
2011-06-27 11:57 9811.什么是Activity? 2.请描 ... -
android中的hdpi,ldpi,mdpi
2011-06-17 14:31 658Android2.1 和之后的版本 中的 drawable(h ... -
访问android平台的通话记录CallLog
2011-06-01 15:31 1129转载自:http://android.tgbus.com/An ... -
Android软件权限知识普及
2011-05-27 11:08 859APK权限详细对照表 您的 ... -
Android调用WebService
2011-05-18 13:42 1059转载至:http://express.ruanko.com/r ... -
android实用代码片段
2011-05-06 10:58 7291. android获取到系统是24小时制还是12小时制 ... -
Android 应用程序退出的四种方法
2011-05-04 09:33 1464Android程序有很多Activi ... -
开发者不得不知的Android权限说明
2011-04-21 10:55 678程序执行需要读取到安全敏感项必需在androidmanifes ...
相关推荐
android横竖屏
Android studio通过切换不同layout实现横竖屏适配
Android 横竖屏切换 博客地址:http://blog.csdn.net/csdnyuandaimaxuexi/article/details/49426207
介绍:http://blog.csdn.net/zabio/article/details/41313331
android经典开发案例60个(源码类)例:Activity生命周期、横竖屏切换处理等
亲测,完美支持横屏改竖屏,不变形,识别速度还不错! 包含3.2源码包和修改方法。
Android 简单例子:横屏 竖屏切换功能实例,当屏幕为横屏时,可将屏幕切换成竖屏状态,并检测屏幕是否切换成功。反之,当屏幕为竖屏时切换为横屏显示。
如果你发现你怎么样去弄都不能把手机的界面布局做好,甚至你连怎么做都不知道的话,赶紧下载这个看看!
三周没有写了,实在是不能原谅自己。这是横竖屏切换的实验代码,打好了日志,读者可以自己做实验。
ZXing Android二维码/条码扫描,2020 Android Studio版本,横竖屏都支持
android 手机强制横竖屏 下载直接运行 !!!!!!!!
让AndroidX86竖屏显示,默认情况下该版本Android是横屏显示,此文档可以帮你设置能竖屏显示
android二维码扫描里面有竖屏和横屏的工程,竖屏的是简化版的只能扫描文本内带core2.0的核心包,横屏的是google源代码。
JS 判断ipad android 等移动设备横竖屏代码 源码
在Android中要让一个程序的界面始终保持一个方向,不随手机方向转动而变化的办法: 只要在AndroidManifest.xml里面配置一下就可以了。 在AndroidManifest.xml的activity(需要禁止转向的activity)配置中加入...
android二维码横屏竖屏都在压缩包中,经过测试,均可用。放心下载吧!
Activity 的生命周期 以及 横屏竖屏切换时 Activity 的状态变化 例如: 切换到横屏 onSaveInstanceState onPause onStop onDestroy onCreate onStart onRestoreInstanceState onResume
android 摄像头、视频录制demo (竖屏) 预览时候竖屏显示,以及拍照图片时候保存竖屏,视频录制竖屏预览,以及保存的文件在PC端也是跟预览时候一致不会偏置90度
基于mtk平台,手机平台默认竖屏显示,根据此提取包可以要做成横屏模式。
Android横竖屏要解决的问题应该就两个:一。布局问题;... “landscape” 横屏显示(宽比高要长) “portrait” 竖屏显示(高比宽要长) “user” 用户当前首选的方向 “behind” 和该Activity下面的那个Act