0

Я пытаюсь создать приложение, подходящее для любого экрана.Как поддерживать несколько экранов (разная кнопка расстояния в трех разных устройствах)

Я создал 4 различных типов компоновки (расположение - sw320dp, 480dp, 600dp, 720dp)

я в настоящее время иду на «шаг», и я начал создавать макет для устройств, которые находятся в пределах sw-720dp того среднего для устройств от 10 "

Это activity_main.xml файла:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/drawer_layout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:fitsSystemWindows="true" 
    tools:openDrawer="start"> 

    <RelativeLayout 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 

     <include layout="@layout/toolbar" /> 

     <FrameLayout 
      android:layout_below="@+id/toolbar" 
      android:id="@+id/fragment_container" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:foreground="@drawable/shadow_toolbar"/> 
    </RelativeLayout> 

    <android.support.design.widget.NavigationView 
     android:id="@+id/nav_view" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:fitsSystemWindows="true" 
     app:headerLayout="@layout/nav_header_main" 
     app:menu="@menu/nav_body_main" /> 

</android.support.v4.widget.DrawerLayout> 

Тогда я разработал макет фрагмента ... и добавила кнопку и кнопку плавающих действий, чтобы вставить себя в социальных ссылках s (facebook twitter и т. д.). С последним я дал размер в dp и все больше расстояний dp в одном из

Это код.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:paddingEnd="16dp" 
    android:paddingLeft="16dp" 
    android:paddingRight="16dp"> 

    <Button 
     android:id="@+id/button_vai_assistenza" 
     android:layout_width="540dp" 
     android:layout_height="65dp" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:background="@drawable/custom_button" 
     android:text="INIZIA SUBITO!" 
     android:textColor="@drawable/custom_textcolor_button" 
     android:textSize="20dp" /> 

    <TextView 
     android:id="@+id/textView_nome_app" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/imageView_logo" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:layout_marginTop="20dp" 
     android:text="Assistenza Copyworld" 
     android:textColor="#000000" 
     android:textSize="35dp" 
     android:textStyle="bold" /> 

    <ImageView 
     android:id="@+id/imageView_logo" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:layout_marginTop="30dp" 
     android:src="@drawable/logo_nav_grande" /> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/textView_copyright_benv" 
     android:layout_alignStart="@+id/textView_copyright_benv" 
     android:layout_below="@+id/button_vai_assistenza" 
     android:layout_marginTop="122dp" 
     android:text="www.copyworld.it" 
     android:textSize="25dp" /> 

    <RelativeLayout 
     android:id="@+id/RelativeLayout_social" 
     android:layout_width="wrap_content" 
     android:layout_height="95dp" 
     android:layout_below="@+id/textView2" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:layout_marginTop="12dp" 
     android:orientation="horizontal"> 

     <android.support.design.widget.FloatingActionButton 
      android:id="@+id/float_social_facebook" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentStart="true" 
      android:layout_alignParentTop="true" 
      android:adjustViewBounds="false" 
      android:src="@drawable/fb_icon_social" 
      app:backgroundTint="@drawable/custom_floating_action_button" /> 

     <android.support.design.widget.FloatingActionButton 
      android:id="@+id/float_social_twitter" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:layout_alignParentTop="true" 
      android:layout_marginLeft="20dp" 
      android:layout_toEndOf="@+id/float_social_facebook" 
      android:layout_toRightOf="@+id/float_social_facebook" 
      android:src="@drawable/tw_icon_social" 
      app:backgroundTint="@drawable/custom_floating_action_button" /> 

     <android.support.design.widget.FloatingActionButton 
      android:id="@+id/float_social_linkedin" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:layout_alignParentTop="true" 
      android:layout_marginLeft="20dp" 
      android:layout_toEndOf="@+id/float_social_twitter" 
      android:layout_toRightOf="@+id/float_social_twitter" 
      android:src="@drawable/li_icon_social" 
      app:backgroundTint="@drawable/custom_floating_action_button" /> 

     <android.support.design.widget.FloatingActionButton 
      android:id="@+id/float_social_youtube" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:layout_alignParentTop="true" 
      android:layout_marginLeft="20dp" 
      android:layout_toEndOf="@+id/float_social_linkedin" 
      android:layout_toRightOf="@+id/float_social_linkedin" 
      android:src="@drawable/yt_icon_social" 
      app:backgroundTint="@drawable/custom_floating_action_button" /> 
    </RelativeLayout> 

    <TextView 
     android:id="@+id/textView_copyright_benv" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:layout_marginBottom="22dp" 
     android:text="Copyright © 2016 Copyworld srl " /> 

</RelativeLayout> 

я тогда запустил приложение на 3-таблетки у меня имеется .. (а именно вкладки Galaxy 2 10.1, вкладки галактики А и вкладку галактики E).

Как только приложение открыто на 3 устройства я заметил эту вещь «ненормальные» ...

«Социальные иконки» и TextView были на разных расстояниях между ними ... ( в частности, вкладки галактики 2 10.1 и вкладки Galaxy Tab E), в то время как значки Galaxy и значки TextView находятся на правильном расстоянии, как установлено в 'xml ...

Почему два устройства имеют расстояния не только от правильного устройства ?? (Два устройства имеют текст и видят значки на равных расстояниях, но отличаются от значков на вкладке Galaxy A)

Что касается других компонентов, таких как (изображение с изображением приложения и TextView с именем приложение) размеры и расстояния были соблюдены ...

Как сделать все, чтобы сделать все в «идеальном адаптируемом макете» на всех устройствах, каждый из которых не предполагает, чтобы пропорции и расстояния отличались друг от друга?

Я прочитал официальный путеводитель по этой теме, где он говорит о дпе, его расположение и т.д.

Я оставляю фотографии присоединенных 3 устройства.

Galaxy Tab E and 10.1

Galaxy Tab A

ответ

0

Создайте три разных Layouts Folder в своей папке res для всех устройств и используйте соответствующие размеры.

Generic Layout Папки

res/layout-small 
res/layout-normal 
res/layout-large 
res/layout-xlarge 

После того, как вы закончите с созданием ваши Normal/Medium Макеты выполните следующие действия:

  1. Преобразование нормальных размеров для других размеров экрана.
  2. Скопируйте файлы xml в обычном формате в другие папки.
  3. Изменить суффикс размеров, используемых в соответствии с папкой, в которой вы находитесь
  4. Измените размер ресурсов изображения в вашей папке с возможностью перемещения (ширина и высота - та же техника, что и для преобразования размеров), и поместите их в соответствующие поля (drawable-ldpi, drawable-mdpi, drawable-hdpi, drawable-xdpi и т. д.).
  5. Затем ваши макеты должны работать на каждом устройстве с правильным расположением.

Для преобразования значений

0.75 - ldpi (small) //mdpi dimens *0.75 
1.0 - mdpi (normal) //First create these dimensions 
1.5 - hdpi (large) //mdpi dimens *1.5 
2.0 - xhdpi (xLarge) //mdpi dimens *2.0 

Для примера

android:layout_width="66dip" //in normal 
android:layout_width="100dip"//in large 66*1.5=100(approx) 
android:layout_width="52dip" //in small 66*0.75=52(approx) 

Также новый Классификатор был введен - SmallestWidth - AvailableScreenWidth - AvailableScreenHeight

подробнее об этом здесь https://developer.android.com/guide/practices/screens_support.html

Я надеюсь, что это поможет.

2

Вы можете использовать Google библиотеку PercentRelativeLayout с этой библиотекой вы можете установить width и height ваших взглядов на процент, который является большим, потому что во всем экране они выглядят одинаково, и, конечно, это не сложно его закодировать. Здесь пример:

<android.support.percent.PercentRelativeLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
    <ImageView 
     app:layout_widthPercent="50%" 
     app:layout_heightPercent="50%" 
     app:layout_marginTopPercent="25%" 
     app:layout_marginLeftPercent="25%"/> 
</android.support.percent.PercentRelativeLayout> 

также добавьте эту строку в свою сборку.Gradle

dependencies { 
    compile 'com.android.support:percent:23.2.0' 
} 

и официальной документации по Google https://developer.android.com/reference/android/support/percent/PercentRelativeLayout.html

Если у вас есть какие-то вопросы, не стесняйтесь спрашивать.