Макет Android перепутан от эмулятора до планшета - PullRequest
2 голосов
/ 01 марта 2011

Я недавно разработал игру для Android с использованием Eclipse.Я действительно новичок в этом, так что прости меня, если то, что я спрошу, слишком просто.>. <</p>

Приложение отлично работает и выглядит в эмуляторе Android, установленном в Eclipse.Однако, когда мы попытались установить его на вкладку Samsung Galaxy, которая, очевидно, имеет больший экран, чем эмулятор, макет был испорчен.Кнопки расположены не в правильном порядке и т. Д. У меня есть экраны, использующие макеты XML, и некоторые из них представляют собой простые полотна со спрайтами.Любая идея, как я мог сохранить оригинальную компоновку в эмуляторе для планшета?Я пытался использовать RelativeLayout вместо LinearLayout, но он все еще не работает.

Любая помощь будет оценена.Спасибо!

Один код файла XML и соответствующий ему экран из эмулятора, показанный ниже.

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/MenuLayout" >

<Button android:id="@+id/btnNew"
    android:layout_width="140px"
    android:layout_height="65px"
    android:layout_marginTop="160px"
    android:background="@drawable/newgame"/>
<Button android:id="@+id/btnInst"
    android:layout_width="140px"
    android:layout_height="65px"
    android:background="@drawable/instructions" />
<Button android:id="@+id/btnCredits"
    android:layout_width="140px"
    android:layout_height="65px"
    android:background="@drawable/credits"/>
<Button android:id="@+id/btnExit"
    android:layout_width="140px"
    android:layout_height="65px"
    android:background="@drawable/exit"/> </LinearLayout>

corresponding image for xml above

Ответы [ 4 ]

0 голосов
/ 04 марта 2015

иц лучше обеспечить разметку для разного размера экрана. У меня также есть такая же проблема при разработке игры. Вы, возможно, предоставили макет, поэтому вы просто предоставите layout-large, small и xlarge.and вместо макетов ur вы должны предоставить папки для рисования, такие как папки hdpi, mdpi, ldpi, xdpi, и вы должны сохранить изображения разного размера 58 * 58,75 * 75,100 * 100 для следования, а затем проверить это ты получишь.

0 голосов
/ 01 марта 2011

Как уже упоминалось, вы должны использовать «dp» вместо «px». Это независимые от устройства пиксели, которые масштабируются для соответствия разным разрешениям экрана.

Вы также должны следовать этому руководству о том, как использовать структуру папок для поддержки различных разрешений и размеров экрана.

Приветствия

0 голосов
/ 02 марта 2011

Исходя из вашего отредактированного вопроса и комментариев, вот способ изменить ваш макет на относительный:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     style="@style/MenuLayout"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent">

    <Button android:id="@+id/btnNew"
        android:layout_width="140dip"
        android:layout_height="65dip"
        android:layout_marginTop="160dip"
        android:background="@drawable/newgame" 
        android:layout_centerHorizontal="true" 
        android:layout_above="@+id/btnInst" />

    <Button android:id="@+id/btnInst"
        android:layout_width="140dip"
        android:layout_height="65dip"
        android:background="@drawable/instructions" 
        android:layout_centerHorizontal="true" 
        android:layout_above="@+id/btnCredits"/>

    <Button android:id="@+id/btnCredits"
        android:layout_width="140dip"
        android:layout_height="65dip"
        android:background="@drawable/credits"
        android:layout_centerHorizontal="true" 
        android:layout_above="@+id/btnExit"/>

    <Button android:id="@+id/btnExit"
        android:layout_width="140dip"
        android:layout_height="65dip"
        android:background="@drawable/exit"
        android:layout_centerHorizontal="true" 
        android:layout_alignParentBottom="true" 
        android:layout_marginBottom="25dip"/> 

</RelativeLayout>

Хотя, если вы хотите идеальное решение, вам нужно спроектироватькнопки и фоновые изображения в 3 размерах и поместите их в соответствующие папки drawable-hdpi, drawable-mdpi и drawable-ldpi (а для планшетов, начиная с 2.2, вы также можете иметь drawable-xhdpi!).Внимательно прочитайте эту статью и протестируйте свой макет в эмуляторе на максимально возможном количестве экранов (из ADT 10.0 действительно легко предварительно просмотреть свой макет для различных конфигураций непосредственно на вкладке "Графический макет" в XML).

Кроме того, android:layout_marginTop="160dip" и android:layout_marginBottom="25dip" не очень полезны в относительной компоновке.Я бы посоветовал вам попробовать 9-патч для вашего фона, только с деревянной доской, растягиваемой для кнопок (хотя я не уверен, что она так работает).В качестве альтернативы, у меня была бы отдельная картинка с Главное меню , которую я бы поместил над кнопками и оставил на заднем плане только деревья и все остальное.

0 голосов
/ 01 марта 2011

Вам нужно использовать dpi, а не пиксели.Вот хороший ресурс.http://developer.android.com/guide/practices/screens_support.html

...