相信大家都知道在安卓开发的时候屏幕旋转是一个很蛋疼的问题。所以很多应用都是禁止横屏的。
最近在做一个项目,为了禁止横屏,在我们的BaseActivity中加入了这么一句话
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
所有的Activity都继承他,果然屏幕旋转问题解决了。
但这不是本文章的重点。对于某些手机。比如三星(的某些型号) 拍照后屏幕会自动旋转的,根本停不下来。后来发现,当拍照后。主Activity的生命周期既然也重新走了一道,重新从服务器拉数据也就算了。还连带着其他的问题。
言归正传,怎么解决的呢。其实方法很简单,就是在清单文件Manifest中加入一句话
android:configChanges="orientation|screenSize"
即:
<!-- 主界面 -->
<activity android:name="com.example.fuckgoogle.MainActivity"
android:configChanges="orientation|screenSize"/>
以前一直以为这两种方法是一样的。后来百度了下Activity的onconfigurationchanged发现其实不是一个玩意儿。
另外。我们的工程中也存在一个问题,如果有网友有兴趣,可以看下。
很常见的问题:把拍照后的路径返回到全局的private String filePath; 里。但是发现三星的拍照后,图片读不出来,后来根据log看出,实际filePath这个变量里是没有值的。Why? 这个就要怪屏幕旋转了。
解决方法有两个,一个是把拍照的返回路径存到SP里,另一个就是在Activity的onSaveInstanceState里保存我们的数据(这种比较正统)
嗯 ,最后只想说一句:三星 *** ;
欢迎访问我的技术博客Bigflower http://www.flowerfat.com