【问题标题】:How can I use 2 different background between landscape mode and portrait mode如何在横向模式和纵向模式之间使用 2 种不同的背景
【发布时间】:2011-04-05 21:39:22
【问题描述】:

我有一个 android 应用程序,我想知道我是否可以为横向和纵向模式提供 1 个布局(1 个布局 xml 文件)。但是我想要每种模式都有不同的背景?那可能吗?我需要 2 个 xml 文件指向不同的背景图像吗?或者我可以使用 1 个 xml 文件来实现我想要的?

谢谢。

【问题讨论】:

    标签: android


    【解决方案1】:

    我通过创建 drawable-land-hdpi 文件夹并将我的风景背景复制到其中实现了相同的目的。

    我不想更改我的代码,我只有一个 XML 布局文件和两个不同的 background.jpg 图像在两个文件夹 drawable-land-hdpidrawable-hdpi em>。

    【讨论】:

    • 如果有人遇到同样的问题:为了使用它,你不能在清单中为你的活动设置 android:configChanges="orientation" ,否则当前活动不会被破坏和资源从相应目录重新初始化...这里是您可以使用的所有修饰符的描述developer.android.com/guide/topics/resources/…
    • android:configChanges="orientation" 在清单中为您的活动设置
    • 这是正确的方法,是的,不能使用 android:configChanges="orientation"。
    【解决方案2】:

    如果您愿意使用代码来完成此操作,您可以尝试插入类似

    View view = (View) findViewById(R.id.background_carrying_view);
    int orientation = getResources().getConfiguration().orientation;
    if(orientation == Configuration.ORIENTATION_LANDSCAPE) {
        view.setBackgroundResource (R.drawable.background_land);
    } else {
        view.setBackgroundResource (R.drawable.background_port);
    }
    

    进入您的 onCreate() 和/或 onConfigurationChange()。

    使用这种方法,您可以为横向和纵向使用相同的布局。

    【讨论】:

    • 这可行,但我个人会使用 'View view = this.getWindow().getDecorView();'
    • 您也可以始终定义两个单独的 xml 布局。一张纵向,一张横向。
    • 是的,当然;看来 OP 想避免这种情况。 :)
    • 如果从onConfigurationChange()中使用,Configuration对象已经作为参数传递了,所以简单一点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多