【问题标题】:Change app background更改应用背景
【发布时间】:2012-03-04 09:35:34
【问题描述】:

我目前正在制作一个 Android 应用程序,我希望用户能够在其中更改背景图像。 我有 3 张图片和一个屏幕,我可以在其中选择一张图片和一个申请按钮。

问题: 我可以允许用户以我想要的方式查看所有图像,但我不知道如何将所选图像设置为应用背景。

我想做的事: 我希望用户单击一个按钮,该按钮将所选图像导出到“/res/drawable-mdpi”中的“bakgrund.png”并替换当前图像。这将使我能够轻松地集成后台切换器。重命名当前文件也可以。

PS:我当前的背景图片位于 /res/drawable-mdpi 命名为 1.png 2.png 和 3.png。

【问题讨论】:

  • 问题到底是什么?看来您是在要求我们为您设计整个事情。
  • 您可以在活动的 onCreate 中发布您的 main.xml 或您在 setContentView(...) 中调用的任何 xml 文件吗?

标签: java android background settings


【解决方案1】:

首先,您需要具有不同背景的不同主题。所以你可以在你的Activity 中使用this.setTheme 方法。

确实,我建议您使用两种不同的布局(具有不同的背景但具有相同的组件)并在onClick 期间使用setContentView

希望它能解决你的问题。

【讨论】:

    【解决方案2】:

    最简单的方法是在根布局上调用setBackgroundResource(image_id) 方法。就像如果你有一个 LinearLayoutandroid:id="@+linear" 作为布局 xml 中的根布局,那么这段代码会有所帮助:-

    LinearLayout linearLayout=(LinearLayout) findViewById(R.id.linear);
    linear.setBackgroundResource(R.drawable.1);//call this in the OnClickListener's OnClick Method
    

    【讨论】:

    • 我喜欢代码实现,并且可以正常工作,但仅限于当前视图。此外,一旦我离开窗口,drawable 就会恢复到它的旧状态(1.png)。有没有办法让这个设置适用于所有名为可能的相对布局并保留该设置,即使重新启动整个应用程序也是如此?
    • 您不能为多个视图提供相同的 id,否则您可能会收到 ClassCastException。相反,您可以将这些布局的对象放在 ArrayList 中,然后在 Button 侦听器的 OnClick() 方法中,您可以在 ArrayList 上运行一个循环,将每个布局的背景设置为所需的可绘制对象。
    • 好的...这是我得到的结果:我不能在 RelativeLayouts 上拥有相同的 id?当活动被破坏并申请所有布局xml时,仍然存在保留图像的问题。我读到过使用共享内容视图或字符串来做这件事,但我就是无法让它工作。谢谢你帮助我。 :)
    猜你喜欢
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    相关资源
    最近更新 更多