这是hipak那边测试反馈回来的一个问题,说来惭愧,一直没注意到这个问题的存在。以为Power键就是onPause处理就完了,结果不是。
这里边google的设计或许也有点问题,在竖屏情况下也许是一样处理的,不过当你的app是横屏,那就要注意了。
每次Power键的时候,app是会强制回到竖屏状态的,并且会重新调用Activity的onCreate(),当然很多时候这不是我们想要的。所以就需要用到android:configChanges了,在配置文件里设置 android:configChanges="keyboardHidden|orientation",这样在屏幕方向改变的时候就不会重新调用 Activity的onCreate(),而是调用onConfigurationChanged(),然后在Activity里重载下
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
vjPlayerSurfaceView.reSize();
} else {
Log.e("vjplayer", "shu");
}
}
一般就这么处理下就可以了,要命的是用到了SurfaceView,而SurfaceView和Thread的生命周期是不一样的,唉,这里要说一下Google提供的sample了,里边有bug!!
由于每次Power键的时候会调用SurfaceView的surfaceDestroyed(SurfaceHolder holder),但是回到app的时候又没有执行surfaceCreated(SurfaceHolder holder),于是就咯屁了~~
目前想到一个能解决的方案是在onConfigurationChanged(Configuration newConfig)里手动处理,surfaceDestroyed(SurfaceHolder holder)+urfaceCreated(SurfaceHolder holder)+pause()处理。。。
唉,希望可以找到一个比较好的解决方案吧。
分享到:
相关推荐
本实例主要探讨如何在Android应用中实现在横屏和竖屏之间的自由切换,以及如何检测屏幕方向的变化。 首先,Android系统提供了两种基本的屏幕方向:横屏(Landscape)和竖屏(Portrait)。默认情况下,Android应用会...
在Android操作系统中,开发者可以为应用设置特定的屏幕方向,让用户在特定场景下强制使用横屏或竖屏模式。这通常涉及到Android系统提供的布局管理、传感器管理和Activity配置更改等相关知识。下面将详细介绍如何实现...
本篇文章将深入探讨如何控制Android Activity的屏幕方向,实现始终横屏、全屏显示以及如何处理屏幕方向改变时Activity的销毁与重建问题。 1. **屏幕始终横屏或竖屏** 在AndroidManifest.xml中,我们可以为特定的...
横屏模式下,可能需要更大的控制面板,更多的信息展示空间;竖屏模式则需要紧凑的布局,保证单手操作的便利性。 5. **视频控件**:播放、暂停、进度条、全屏按钮等控件是视频播放器不可或缺的部分。使用`SeekBar`来...
总的来说,通过在AndroidManifest.xml中正确设置`android:configChanges`属性,并在Activity中忽略配置变化,可以在Android 4.0及以上版本中实现禁止横屏竖屏切换的功能。然而,这种方法可能会导致用户界面在不同...
2. **定义布局文件**:为Fragment创建一个对应的布局文件,例如`fragment_layout.xml`,在其中定义横竖屏所需的视图元素。 3. **在Activity中添加Fragment**:在Activity的布局文件中,使用标签或者在代码中动态...
Android支持在res/layout-land(横屏)和res/layout-port(竖屏)目录下放置不同的布局文件,系统会自动根据当前屏幕方向加载相应的布局。 在进行毕业设计时,这份源码可以帮助你了解如何处理屏幕适配,提高应用的...
4. **考虑全屏模式**:如果需要在横屏时全屏显示视频,可以监听WebView的JavaScript事件,通过`WebChromeClient`的`onShowCustomView()`和`onHideCustomView()`方法来控制全屏和退出全屏。 以上就是如何在Android的...
将`android:configChanges`设置为`orientation|screenSize`,然后在活动中处理配置改变事件,可以确保扫描界面在横竖屏切换时正确显示。同时,需要注意保存和恢复活动的状态,防止屏幕旋转时数据丢失。 在实际开发...
当设备从横屏切换到竖屏,或者反过来,Android会调用Activity的相关生命周期方法,例如`onConfigurationChanged()`。默认情况下,系统会销毁并重新创建Activity以加载对应方向的资源。 1. **屏幕配置更改**: ...
Android设备可以支持横屏(Landscape)和竖屏(Portrait)两种模式,这两种模式对于用户体验和界面设计都有不同的要求。本篇将深入探讨“Android横竖屏”相关的知识点,以及如何处理屏幕旋转带来的影响。 一、...
当设备从横屏切换到竖屏,或者反之,Android系统会默认重新创建Activity及其包含的所有Fragment。这是因为Android认为新的屏幕配置需要一个新的Activity实例。然而,开发者可以通过配置`android:configChanges`属性...
在Android中,默认情况下,当设备方向发生改变时(从横屏变为竖屏或相反),系统会销毁当前`Activity`实例并重新创建它。这导致了一系列生命周期方法的调用顺序如下: 1. **onSaveInstanceState()**:系统调用此...
android activity 执行屏幕横竖屏切换的时候activity声明周期执行的竖屏的时候点击横屏 09-04 15:54:27.675: I/yxd(6708): 应用程序执行了============onPause===方法===>> 09-04 15:54:27.685: I/yxd(6708): 应用...
在Android平台上,开发一款支持二维码扫描的应用时,通常会遇到横屏和竖屏两种设备方向的问题。本主题主要探讨如何在Android应用中处理这两种屏幕方向,确保二维码扫描功能的正常运行。 首先,Android系统允许应用...
在Android应用开发中,"竖屏转横屏的Activity切换效果"是一个常见的需求,涉及到屏幕方向的处理和动画效果的实现。以下将详细介绍这个主题的相关知识点。 首先,Android系统支持两种基本的屏幕方向: portrait(竖...
首先,Android系统允许应用根据设备的方向(如横屏或竖屏)来自动调整布局。这主要通过监听屏幕的旋转事件来实现,这些事件由系统通过传感器数据触发。Android提供了`SensorManager`类来获取设备的传感器数据,包括...
这个属性可以让 Activity 默认显示在横屏模式下,但是这并不能阻止屏幕方向的改变。我们仍然需要使用 `android:configChanges` 属性和 `onConfigurationChanged` 方法来正确处理屏幕方向的改变。 让 Android 横竖屏...
1. 按照上述步骤切换横屏时,系统会调用`onSaveInstanceState()`、`onPause()`、`onStop()`和`onDestroy()`,但在横屏状态下不会销毁Activity,而是保留其状态。 2. 切换回竖屏时,由于我们指定了配置变化由Activity...
有时横屏转竖屏会触发两次,而竖屏转横屏则只触发一次。这可能是由于设备厂商对系统行为的定制或是特定情况下的bug。解决这类问题通常需要深入分析设备特性和系统源码。 如果确实需要在屏幕旋转时重新加载Activity...