支持多屏幕问题

时间:2013-12-22 12:22:50

标签: android android-layout

在Android文档中阅读Designing for Multiple Screens后,我有点困惑。 Eclipse中有一个工具可以在不同的屏幕中预览布局。我可以从那里看到某些图像不合适而且太大或太小。例如,在这个屏幕截图中,最重要的是它应该是什么样子,而其他所有屏幕都是它在其他屏幕中的样子。正如您所看到的,所有屏幕屏幕中的大脑罐都不合适(Galaxy Nexus除外)。 enter image description here

在我的整个申请过程中,我使用了所有最佳实践:

  1. 我有多个版本的所有图片位于drawable-xhdpi,hdpi,mdpi和ldpi,xxhdpi
  2. 我尽可能使用了wrap-content和fill-parent
  3. 我使用了RelativeLayout
  4. 我使用dp作为边距和填充
  5. 屏幕截图中此特定布局的布局xml:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/wall_nobrainjar"
        android:orientation="vertical" >
    
        <ImageButton
            android:id="@+id/brainjar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_marginRight="129dp"
            android:layout_marginTop="215dp"
            android:layout_toLeftOf="@+id/red_paint"
            android:background="@drawable/brainjar"
            android:onClick="zoomImage" />
    
        <Button
            android:id="@+id/riddle_book"
            android:layout_width="70dp"
            android:layout_height="30dp"
            android:layout_alignBottom="@+id/red_paint"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="83dp"
            android:background="@android:color/transparent"
            android:onClick="zoomImage" />
    
        <ImageView
            android:id="@+id/zoomed_image"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
    
        <FrameLayout
            android:id="@+id/brainjar_zoomed"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >
    
            <ImageView
                android:id="@+id/brainjar_zoomed_image"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:background="@drawable/brain_grey"
                android:visibility="gone" />
    
            <ImageView
                android:id="@+id/riddleBook_zoomed_image"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:background="@drawable/riddle_zoomed"
                android:visibility="gone" />
        </FrameLayout>
    
        <Button
            android:id="@+id/red_paint"
            android:layout_width="50dp"
            android:layout_height="60dp"
            android:layout_alignParentRight="true"
            android:layout_alignTop="@+id/brainjar"
            android:layout_marginRight="14dp"
            android:background="@android:color/transparent"
            android:onClick="zoomImage" />
    
    </RelativeLayout>
    

    我的问题是什么?我唯一没有遵循的是布局的多个版本(-large,-small等)。那是问题吗?如果有办法解决它而没有很多布局文件。目前我只有一个布局文件夹,我放置了所有布局文件。

2 个答案:

答案 0 :(得分:0)

简答:不要偷懒。

更详细的答案:您的背景会缩放以适应屏幕,但您的其他图片不是,因此背景和其他图片之间的比例在不同设备上有所不同,如果您仔细观察你会发现脑瓶不仅在不同的地方,而且还有不同的大小。要解决这个问题,你可以简单地,或者不那么简单;)需要为不同的屏幕尺寸添加布局,以便布局和扩展你的大脑罐。

答案 1 :(得分:0)

  • 创建名称 layout-small 的不同文件夹, 的布局大下, 的布局XLARGE res 文件夹
  • 将所有ur .xml从ur布局复制粘贴到thes文件夹
  • 打开所有xml&amp;使用不同的屏幕尺寸逐个设置边距
  • 然后你可以跑步&amp;看到不同大小的模拟器中的应用程序

这是最简单的方法!