android布局在方向更改时加载不同的图像资源

时间:2012-10-08 17:03:48

标签: android android-layout

我想在xml或关键字中找到解决问题的解决方案:

我有多个屏幕。每个屏幕在layout文件夹中都有自己的xml。例如,代码的一部分:

   <RelativeLayout
        android:id="@+id/headerLayout"
        android:layout_width="fill_parent"
        android:layout_height="80dp"
        android:background="@drawable/header" >

        <Button
            android:id="@+id/btBack"
            android:layout_width="55dp"
            android:layout_height="33dp"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="10dip"
            android:layout_marginTop="10dip"
            android:background="@drawable/bt_back"
             />

    </RelativeLayout>

现在,我希望在轮换时更改"@drawable/header"值运行时,可以配置和Android更改而不是Java代码中的我。用同样的事做完了 "@drawable/bt_back",这是bt_back.xml文件夹中的drawable文件,并且有一个选择器。他的内容在这里:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- selected state -->
    <item android:drawable="@drawable/bt_back_pressed" android:state_pressed="true" android:state_selected="false"/>
    <item android:drawable="@drawable/bt_back_pressed" android:state_pressed="false" android:state_selected="true"/>
    <item android:drawable="@drawable/bt_back_pressed" android:state_pressed="true" android:state_selected="true"/>
    <!-- unselected state (default) -->
    <item android:drawable="@drawable/bt_back_normal"/>

</selector>

现在在文件夹中我想要drawable-hdpi,drawable-ldpi,我只需要放置那两个文件,并且android系统会根据用户设备dpi自动处理按下和正常状态的图像更改。

我希望从纵向和横向旋转标题。例如,它应该将header_port.png替换为header-land.png。

怎么可能?有什么想法吗?

我没有为横向绘制不同的.xml布局,也没有在java代码中挖掘。 也许在不同的文件夹中标题的资源,描述here?港口和土地?

2 个答案:

答案 0 :(得分:5)

您可以创建drawable-land-hdpi目录。将你的横向版本放在合格的文件夹中,android应该自动加载它们。

答案 1 :(得分:2)

要详细说明@ toadzky的答案,您可以为this Android Developer页面上找到的任何限定符创建不同的drawable目录,并在每个页面中放置相同名称的图像,android会自动知道哪一个使用。布局(或布局 - 土地等)文件夹中的布局,值xml文件(例如,字符串资源 - 对本地化或主题有用),值文件夹或您通常的任何其他内容也是如此在res文件夹中找到。

同样重要的是要注意其优先级的工作方式(关于它为资源选择的目录),如果我没记错的话,“在排除所有不兼容的目录后首先匹配”。

所以,如果你只有drawable-hdpi和drawable,并且你有一个mdpi设备,它将消除所有用hdpi限定的目录,并从剩余的目录中选择(所以你最终得到了drawable的版本)夹)。有关链接页面的详细说明,请参阅“Android如何找到最佳匹配资源”。