gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 13:41:29 24 4
gpt4 key购买 nike

我的 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);

它解决了这个问题。但是每次配置更改或通过 Activity 时,它都会导致大量内存泄漏。

编辑:我创建了一个 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">

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

有没有其他方法可以在方向发生时强制更改可绘制对象?或者是否有任何原因导致应用程序发生内存泄漏?

编辑:关于内存泄漏问题,我曾在 Android Memory Usage Problem on possibly using ActivityGroup 上提问过

最佳答案

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

This post在 Android Developer's blog 上提出了一些关于如何在方向改变时保留对象并避免过程中的内存泄漏的提示和技巧;这将为您提供进一步的帮助。

关于android - 在 android 中,当方向改变时,背景图像不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5156000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com