Какви папки с оформление са необходими за поддръжка на всички устройства с Android?

Разработвам приложение за калкулатор, което има относително оформление за портретен режим. Всички бутони и текстови изгледи са поставени в това единично относително оформление и едно и също относително оформление за наземния режим. Рових се в мрежата почти 15 дни, но не намерих нищо подходящо. Моето приложение също има поддръжка за таблети. MinSDKVer е 14, а Target е v21.

В момента опитвам тези папки Layouts

1:layout-sw400dp (предназначен за Note 3 и Mate 7)

2:layout-sw600dp (предназначен за 7" таблети)

3:layout-sw720dp (предназначен за 8,9" и 10" таблети)

4:layout-small-ldpi

5:layout-normal-ldpi

6:layout-normal-mdpi

7:layout-large-mdpi (предназначен за 480×800 телефони с екран >5" като Pantech Sky Vega Note)

8:оформление-нормален-hdpi

9:layout-large-hdpi (предназначен за Galaxy Note 2, Galaxy Note и Galaxy Mega)

10:оформление-нормално-xhdpi

11:нормално оформление-xxhdpi

12:layout-large-xxhdpi (предназначен за Galaxy Note 4)

13:layout-normal-xxxhdpi (предназначен за Nexus 6 и за други QFHD телефони)

Всички тези оформления имат наземен режим.

Проблем възникна, когато поставих (layout-sw400dp). Nexus 6, Note 4, Note 2, Galaxy Mega и голям телефон 480×800 започнаха да използват това оформление, а не предвидените оформления.

Това се случва, защото swdp има по-висок приоритет от layout-normal-xxxx или layout-large-xxxx.

Note 3 и Mate 7 са 400dpi устройства, затова поставих layout-sw400dp. Преди това всички устройства работеха перфектно с изключение на Note 3 и Mate 7.

И друг проблем са устройствата с резолюция 540×960.

Пробвах layout-320dp. С помощта на това xhdpi устройствата и xxhdpi устройствата започнаха да използват това оформление.

Опитах също тези оформления за 540×960, но те не проработиха дори след като направих отделна папка за layout-long-port-800×480.

1: оформление-h960dp-w540dp

2:layout-long-port-960×540

3: оформление-нормално-960×540

Прочетох всички екрани от Android Virtual Device Manager, като създадох различни устройства с действителни спецификации.

Опитах ръчно да настроя оформление за 540 × 960 устройства в java файл и успях, но не искам да правя това и не искам да използвам и линейно оформление.

Задълбочено проучих „Поддръжка на различни екрани на Android и предоставяне на ресурси“.

Моля, кажете името на всички необходими папки за оформление, за да поддържате всички устройства с Android или друг ефективен начин да направите това с помощта на java.

Качих всички файлове с ресурси в Mediafire, които можете да изтеглите Calculator Layout.zip

Всички предложения и решения ще бъдат оценени Благодаря предварително

Съжалявам за английския, защото не е моят роден език.


person Kamil Mahmood    schedule 19.03.2015    source източник
comment
Да имаш толкова много оформления е малко пресилено. Повечето от промените могат да бъдат постигнати с препращане към различни измерения.   -  person Lamorak    schedule 19.03.2015
comment
@Lamorak Дайте ми пример как можете да постигнете желаната от мен цел, като използвате измерения, защото размерите не са нищо друго освен един файл, съдържащ стойности на измерения, които могат да бъдат препращани отвсякъде. Ако телефонът не избере предвиденото оформление, тогава как мога да осигуря правилна височина и ширина... Не мога да използвам запълване на родител или обвиване на съдържание   -  person Kamil Mahmood    schedule 19.03.2015
comment
Обикновено, когато искате да напаснете оформлението си към различни размери на екрана, основното нещо, което се променя, е размерът на изгледите. Вместо да имате две подобни оформления, можете просто да посочите размерите. Няма нито един dimen файл, можете да имате няколко от тях в папки като values-normal-hdpi и т.н.   -  person Lamorak    schedule 19.03.2015
comment
@Lamorak последното ти предложение беше доста добро, но не мислиш ли, че в този случай устройството може също да може да избира нежелани размери   -  person Kamil Mahmood    schedule 19.03.2015
comment
е, поне шансовете са равни на това да изберете нежелано оформление, но ще избегнете много дублиращи се кодове и работа. Оформлението на вашия калкулатор толкова сложно ли е, че да се притеснявате толкова много за размера на екрана?   -  person Lamorak    schedule 19.03.2015
comment
@Lamorak Layout е прост, тъй като има 22 квадратни бутона и два текстови изгледа, чиято ширина съответства на ширината на родителя, а височината е различна за всяка плътност. Има 36 правоъгълни бутона и два текстови изгледа в пейзажен режим. TextViews имат същите свойства като Portrait. Проблемът е, че ако имам layout-xhdpi, той няма да запълни екрана при xxxhdpi и бутоните излизат от изглед при плътност ‹xhdpi.   -  person Kamil Mahmood    schedule 19.03.2015
comment
така че проблемът се свежда до клавиатура, фиксирана в долната част на екрана и променливо пространство отгоре за два текстови изгледа?   -  person Lamorak    schedule 19.03.2015
comment
Квадратните (не пълните квадратни) клавиши не означават, че имат еднаква височина и ширина за всички плътности, това означава, че формата им е квадратна (не пълният квадрат) за всички плътности. Височината и ширината им са променливи, което означава, че на малки екрани бутоните ще бъдат малки, а на големи екрани бутоните ще са големи. Ключовете покриват почти 62% от оформлението по височина и 100% по ширина и ключовете не са капсулирани в други блокове (не знам много за това). Ами ако ви покажа моя activity_main.xml? Ще можете да разберете по-добре.   -  person Kamil Mahmood    schedule 19.03.2015
comment
Да, това би помогнало много   -  person Lamorak    schedule 20.03.2015
comment
@Lamorak Редактирах въпроса си и добавих файлове с ресурси за по-добро разбиране, погледнете отново въпроса. Съжалявам за късния отговор, защото нямах интернет връзка   -  person Kamil Mahmood    schedule 20.03.2015
comment
Съгласен съм с @Lamorak. Това изглежда като труден подход за това нещата да изглеждат добре на различни устройства.   -  person Mark    schedule 30.07.2015
comment
Може да искате да създадете различна папка с възможност за рисуване за hdpi, xhdpi. xxhdpi и така нататък. За оформления бих предложил да създадете папки на базата на ширина в dp, като layout-sw320dp. Ако се сблъскате с проблеми с изображения в оформлението си, опитайте да създадете файловете с изображения въз основа на указанията на страницата за разработчици на Android.   -  person crazy_coder    schedule 30.07.2015
comment
@crazy_coder В крайна сметка използвах линейно оформление, защото е наистина лесно за управление и е съвместимо между екраните на различните устройства.   -  person Kamil Mahmood    schedule 01.08.2015


Отговори (4)


Вместо да използвате толкова много прости папки с оформление, използвайте следните папки.

За смартфони

1. оформление: Нормално

2.layout-hdpi: използвайте Nexus one, Nexus S

3.layout-xhdpi: използвайте Nexus 4

4.layout-xxhdpi: използвайте Nexus 5

5.layout-xxxhdpi: използвайте Nexus 6

За таблети

1.layout-large : използвайте Nexus 7

2.layout-xlarge: използвайте Nexus 9

3.layout-xxlarge: използвайте Nexus 10

person suresh madaparthi    schedule 15.07.2016
comment
Забележка: Започвайки с Android 3.2 (API ниво 13), тези групи размери (големи, големи и т.н.) са отхвърлени в полза на нова техника за управление на размерите на екрана въз основа на наличната ширина на екрана. Ако разработвате за Android 3.2 и по-нова версия, вижте Деклариране на оформления на таблет за Android 3.2 за повече информация. препратка: връзка - person Andrea Leganza; 04.09.2017

Вместо да използвате толкова много папки за оформление, използвайте следните папки

За смартфони и фаблети

  • оформление-mdpi
  • оформление-hdpi
  • оформление-xhdpi
  • оформление-xxhdpi

За 7" таблети

  • оформление-sw600dp

За 10" таблети

  • оформление-sw720dp

Ако се съсредоточите върху създаването на толкова много папки с оформление и евентуално толкова много файлове с оформление, това ще стане тромав процес за всяко ново устройство/спецификация на екрана, добавено към семейството на Android.

Вместо това се съсредоточете върху оптимизирането на оформленията, които създавате, за да се поберат в тези кофи. Като предоставяне на стойности в dp и избягване на даването на твърдо кодирани стойности за размер/поле/подложка, използване на dimens файл с ресурси по ефективен начин и т.н.

Надяваме се, че това ще ви спести някои излишни усилия.

person silwar    schedule 09.10.2015
comment
Тези папки не покриват всички устройства и можете да ги видите във въпроса ми - person Kamil Mahmood; 09.10.2015
comment
Как да създадете папка с възможност за рисуване за 8,9-инчови таблети? Сега 8,9-инчовите таблети взимат изображения от drawable-sw720dp, но тези изображения са огромни за тези таблети. - person DaleYY; 07.09.2017

Използвам оформление на само три папки

- layout-sw600dp (за таблети).
- layout-sw360dp (за телефони със среден размер).
- оформление (за всички, които имат най-малка ширина под 360).

person Rahul Jain    schedule 24.04.2017

За различни размери на екрана, по-долу е списък с папки с ресурси в приложение, което предоставя различни дизайни на оформление за различни размери на екрана за малки, средни, високи и свръхвисоки екрани с плътност.

res/layout/my_layout.xml             // layout for normal screen size ("default")
res/layout-small/my_layout.xml       // layout for small screen size
res/layout-large/my_layout.xml       // layout for large screen size
res/layout-xlarge/my_layout.xml      // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation

res/drawable-mdpi/my_icon.png        // bitmap for medium density
res/drawable-hdpi/my_icon.png        // bitmap for high density
res/drawable-xhdpi/my_icon.png       // bitmap for extra high density

Следният код в манифеста поддържа всички dpi.

<supports-screens android:smallScreens="true" 
          android:normalScreens="true" 
          android:largeScreens="true"
          android:xlargeScreens="true"
          android:anyDensity="true" />

За повече вижте тук

person Aditya Vyas-Lakhan    schedule 09.10.2015