2013-12-22 211 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之間的區別。但是,如果你使背景適合屏幕,那麼所有這些都不重要,因爲你只能通過屏幕尺寸縮放圖像。 –