/* 声明Display对象,以取得屏幕宽高 */
final Display defaultDisplay = getWindow().getWindowManager()
.getDefaultDisplay();
intScreenH = defaultDisplay.getHeight();
intScreenW = defaultDisplay.getWidth();
/* 如果为Landscape */
if (intScreenW > intScreenH)
{
/* Landscape => Portrait */
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else
{
/* Portrait => Landscape */
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
我们可以通过屏幕方向的事件改变监听来处理
public void onConfigurationChanged(Configuration newConfig)
{
// TODO Auto-generated method stub
/* 重写onConfigurationChanged事件,捕捉当设置之后的值 */
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
{
}
}
当然在配置文件里面,我们需要设置activity的这个属性:
<!-- 必須設定activity的configChanges屬性 ,不然每次都会重启Activity-->
android:configChanges="orientation|keyboard"
但这个权限好像不需要设定了:
<!-- 貌似这个权限可以不添加 -->
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
分享到:
相关推荐
在Android开发中,当应用程序的Activity在横竖屏之间切换时,系统默认行为是销毁当前Activity并重建,以便更新布局适应新的屏幕方向。这会导致`onCreate()`方法被再次调用,可能会造成用户体验上的中断。然而,有些...
要让它们也显示新语言,可能需要重启Activity或者整个应用。 - 为了避免内存泄漏,记得在改变语言后释放旧的`Resources`引用。 - 不同的Android版本可能有不同的实现方式,如API 17及以下版本需要使用`...
在Android开发中,屏幕切换是常见的应用场景,尤其在设计用户界面和优化用户体验时显得尤为重要。Android系统支持多种屏幕尺寸和方向,包括横屏(Landscape)和竖屏(Portrait)。本篇文章将深入探讨如何在Android中...
Android 横竖屏切换是 Android 开发中的一种常见需求,通过利用 Android 系统每次屏幕切换会重启 Activity 的特性,在 OnCreat 处自动加载不同显示状态下的 layout。下面将详细介绍 Android 横竖屏切换的实现方法。 ...
需要注意的是,让 Android 横竖屏切换时不销毁当前的 Activity,并不意味着我们可以完全忽视屏幕方向的改变。我们仍然需要在 Java 代码中加入配置信息改动的处理代码,以便正确处理屏幕方向的改变。 另外,Activity...
这告诉系统,当配置改变(如屏幕方向变化)时,Activity不应该被销毁,而是应该通过回调方法来处理这些变化。 ```xml <activity android:name=".MainActivity" android:label="@string/app_name" android:...
在设备旋转时,系统会触发Activity的生命周期方法,以便重新布局UI并适应新的屏幕尺寸。 描述中提到,“设备旋转时,当前看到的Activity实例会被系统销毁,然后再创建一个新的当前Activity实例。”这是因为Android...
为了避免这种情况,可以在AndroidManifest.xml中为相应Activity设置`android:configChanges="orientation|screenSize"`,然后在Activity中覆盖onConfigurationChanged()方法,处理横竖屏切换。 ```xml <activity ...
- 如果Activity不在栈顶,系统会创建新实例并压入栈。 - 适用于希望避免重复实例的情况,如消息通知接收Activity。 3. **SingleTask** - 创建一个单独的任务栈,并且栈内只有一个Activity实例。 - 当Activity...
可以通过在AndroidManifest.xml中设置`android:configChanges="orientation|screenSize"`来手动处理配置变更,而不是让系统重启Activity。 4. **保存和恢复状态**:在横竖屏切换时,为了防止数据丢失,开发者需要...
7. **配置变更和Activity重启**:当设备配置如屏幕方向、语言设置等发生改变时,默认情况下,Android系统会销毁当前Activity并重新创建。开发者可以通过重写onSaveInstanceState()保存状态,onRestoreInstanceState...
- **性能优化**:频繁的屏幕切换会导致不必要的资源消耗,因此,除非必要,否则尽量避免在`onConfigurationChanged()`中进行复杂的操作。 总之,Android应用程序的横竖屏切换可以通过系统自动处理或手动控制来实现...
当设备从横屏切换到竖屏,或者反过来,Android会调用Activity的相关生命周期方法,例如`onConfigurationChanged()`。默认情况下,系统会销毁并重新创建Activity以加载对应方向的资源。 1. **屏幕配置更改**: ...
此属性控制`Activity`是否可以从一个任务切换到另一个任务。当设置为`true`时,如果用户从一个任务中启动了某个`Activity`,然后又从另一个任务中启动了相同的`Activity`,系统会将该`Activity`重新归入新任务中,而...
当设置这些值时,Android不会默认重启Activity,而是调用`onConfigurationChanged()`方法,让你在代码中处理配置变更。 接下来,我们将在MainActivity.java中重写`onConfigurationChanged()`方法: ```java @...
7. **配置变更**:如屏幕方向改变,可能会导致Activity重启。通过重写onSaveInstanceState()和onRestoreInstanceState(),或设置android:configChanges,开发者可以控制Activity如何响应这些配置变化。 8. **FLAG_...
它们有自己的视图层次结构,可以在布局中动态地插入和移除,这样就能在不重启Activity的情况下改变用户界面。 创建Fragment的步骤如下: 1. 创建一个新的Java类,继承自`androidx.fragment.app.Fragment`(对于...
在左右滑动的场景中,每个界面通常由一个Fragment表示,这样可以在不重启Activity的情况下改变屏幕内容。 3. **PageTransformer**: 如果希望自定义滑动动画,可以实现ViewPager的PageTransformer接口。这个接口提供...
另外,如果希望Activity不显示标题栏,可以在`res/values`文件夹下创建一个名为`winStyle.xml`的样式文件,定义一个无标题的主题: ```xml <item name="android:windowNoTitle">true ``` 然后在`...