在android中,当方向改变时,背景图像不会改变

2024-03-01

我的 ActivityGroup 有一个定义的线性布局

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:mtx="http://schemas.android.com/apk/res/com.matriksdata"
  android:id="@+id/homeActivityGroupBG"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical"
  android:background="@drawable/background">

我有 2 个背景可绘制对象位于“drawable”和“drawable-land”文件夹中。 当方向改变时,一切正常,但背景不会根据方向改变。它总是保留第一个可绘制的背景。

我尝试手动更改它onConfigurationChanged方法通过添加行:

background.setBackgroundResource(R.drawable.background);

它解决了问题。但每次配置更改或传递活动时,它都会导致大量内存泄漏。

编辑:我创建一个 theme.xml 来定义窗口的背景图像。 XML 文件包含:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme" parent="android:Theme">
<item name="android:windowBackground">@drawable/background</item>
</style>
</resources>

我将 AndroidManifest.xml 更改为

<application android:icon="@drawable/icon" android:label="@string/app_name"
android:debuggable="true" android:name="com.matriksdata.app.DefaultApplication"
android:theme="@style/Theme">

我从布局中删除了背景元素。根本没有任何改变。当设备方向发生变化时,我无法获得新的可绘制对象,并且出现内存泄漏,最终导致应用程序崩溃。

当方向改变时,还有其他方法可以强制改变可绘制对象吗?或者应用程序是否有任何原因导致内存泄漏?

编辑:对于内存泄漏问题,我在以下位置提出了一个问题:可能使用 ActivityGroup 的 Android 内存使用问题 https://stackoverflow.com/questions/5116728/android-memory-usage-problem-on-possibly-using-activitygroup


您可以切换布局,而不是在方向更改时切换可绘制对象。通过将同名的 xml 文件放入布局土地/文件夹,当屏幕方向为横向时,操作系统将加载此替代布局。这样,您将始终使用正确的可绘制对象(因为它们可以在两个 xml 文件中以不同的方式指定),并且还有一个额外的优点,即您可以独立优化两个方向的布局!

这个帖子 http://android-developers.blogspot.com/2009/02/faster-screen-orientation-change.htmlAndroid 开发者博客上提出了一些关于如何在方向更改时保留对象并避免过程中内存泄漏的提示和技巧;这将对您有进一步的帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在android中,当方向改变时,背景图像不会改变 的相关文章

随机推荐