2013-12-22 67 views
2

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

在我的应用我用全部的最佳实践:

  1. 我有位于绘制-xhdpi,华电国际,MDPI和LDPI的所有图像的多个版本,xxhdpi
  2. 我已经二手包的内容和填写家长尽可能
  3. 我用的RelativeLayout
  4. 我用DP的边距和补

在截图这个特殊的布局布局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> 

什么是我的问题吗?我唯一没有遵循的是有多个版本的布局( - 大,小 - 等)。这是问题吗?如果有一种方法可以解决这个问题,而没有很多布局文件。目前我只有一个布局文件夹,我已经放置了所有的布局文件。

回答

0
  • 创建名称布局小,不同的文件夹 布局大布局XLARGE资源文件夹
  • 复制粘贴乌尔所有的.xml的从乌尔布局thes文件夹
  • 打开所有的xml的&设置使用不同的屏幕尺寸的边距一个接一个
  • 则U可以运行&看到应用程序在不同大小的仿真器

这是最简单的办法!

+0

谢谢VivekWarde。我会尽力解决问题,并会回来。 – Nazerke

0

简短回答:不要懒惰。

更详细的回答:你的背景被缩放以适应屏幕,但你的其他图像不是,所以背景和其他图像之间的比例在不同的设备上是不同的,如果你仔细看,你会看到脑罐不仅在不同的地方,而且大小不同。为了解决这个问题,你简单地,或者不是那么简单;)需要为不同的屏幕尺寸添加布局,以便布局和缩放你的大脑瓶子。

+0

谢谢Babibu的详细解答。这是我得不到的,为什么图像太大或太小。那么我有drawable-hdpi,xhdpi和mdpi?这些不同版本的图像是否应该解决这个问题? 第二个问题是,它为什么不解决定位问题。是不是dp抽象措施的原因和android应该自动计算每个设备基于这个dp的正确的位置? P.S.我不懒惰。这只是我必须在3天内完成。没有足够的时间 – Nazerke

+0

@Nazerke不,hdpi,xhdpi假设图像保持真实大小,就像你在不同设备上使用真实生活尺子时所测量的那样。这也是dp和p之间的区别。但是,如果你使背景适合屏幕,那么所有这些都不重要,因为你只能通过屏幕尺寸缩放图像。 –