Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/34: Рейтинг темы: голосов - 34, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 34
1

Разная разметка для разных разрешений

15.09.2014, 20:09. Показов 6319. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как сделать так, чтобы для экрана с разрешением 400х800 был свой layout файл, а для разрешения 1920х1080 свой.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.09.2014, 20:09
Ответы с готовыми решениями:

Разметка для разных экранов
У меня такой вопрос как сделать разметку для разных размеров экранов наиболее оптимально. Ну если в...

CSS для разных разрешений
Всем привет! Подскажите, разрешения нужно в CSS указывать в порядке убывания или возрастания? Вот...

Как адаптировать свой сайт для разных разрешений экрана?
Вот сайт - http://anime-test.e3w.ru . На моем разрешении показывает всё нормально,две картинки...

Отступ сайта слева от края браузера для разных разрешений?
Наивный вопрос, но подскажите плиз: Можно ли средствами css сделать разное выравнивание сайта...

11
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
15.09.2014, 22:11 2
Указывать размеры (в dimens.xml) в папках values-hdpi, values-ldpi и т.д. Изображения разного размера в папках drawable.
Или вопрос в другом?
0
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
21.06.2016, 11:22 3
Я хотел спросить тоже по этой теме. Мне тоже нужно получить разные layout файлы для разных разрешений. Нашел такое решение вынести размеры элементов и шрифтов в dimens а сами файлы dimens раскидать по папкам
values-sw320dp-xhdpi
values-sw600dp-xhdpi
values-sw720dp-xhdpi
values-sw320dp-xxhdpi
values-sw600dp-xxhdpi
values-sw720dp-xxhdpi
values-sw320dp-xxxhdpi
values-sw600dp-xxxhdpi
values-sw720dp-xxxhdpi

У меня есть несколько вопросов: Во первых что означает префикс sw, а если было бы просто w то чем отличалось бы? Во вторых почему здесь задается только один размер, например 320 - что он означает и где второй размер (или это диагональ устройства)? И потом как система поймет для какого именно разрешения устройства применить те или иные размеры? То есть сам layout файл может быть один, ну а в dimens мы просто задаем размеры которые система будет подставлять для соответствующей конфигурации экрана так?
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
21.06.2016, 11:24 4
Цитата Сообщение от yura91 Посмотреть сообщение
У меня есть несколько вопросов: Во первых что означает префикс sw
https://developer.android.com/... pport.html
потрудись прочитать это внимательно, там есть ответы на все вопросы
0
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
21.06.2016, 18:25 5
Да я перенес размеры в папку dimens создал папку, которая называется values-sw768dp-xhdpi
в ней файл dimens с такой разметкой
XML
1
2
3
4
5
6
7
8
<resources>
    <!-- Default screen margins, per the Android Design guidelines. -->
    <dimen name="layout_marginLeft">5dp</dimen>
    <dimen name="layout_marginRight">5dp</dimen>
    <dimen name="layout_height">35dp</dimen>
    <dimen name="textSize">14sp</dimen>
    <dimen name="layout_marginTop">3dp</dimen>
</resources>
Вот сама разметка активити
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<android.support.v4.widget.SwipeRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/swipe_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<LinearLayout
 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="1">
 
    <TextView
        android:layout_height="@dimen/layout_height"
        android:layout_width="match_parent"
        android:layout_marginLeft="@dimen/layout_marginLeft"
        android:layout_marginRight="@dimen/layout_marginRight"
        android:textSize="@dimen/textSize"
        android:background="#5F00"
        android:layout_marginTop="@dimen/layout_marginTop"
        android:id="@+id/tvResult1"
        android:gravity="center">
    </TextView>
 
    <TextView
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:layout_marginLeft="@dimen/layout_marginLeft"
        android:layout_marginRight="@dimen/layout_marginRight"
        android:text="FEED"
        android:textSize="@dimen/textSize"
        android:layout_marginTop="@dimen/layout_marginTop"
        android:id="@+id/tvResult2"
        android:gravity="center_horizontal">
    </TextView>
 
    <TextView
        android:layout_height="@dimen/layout_height"
        android:layout_width="match_parent"
        android:layout_marginLeft="@dimen/layout_marginLeft"
        android:layout_marginRight="@dimen/layout_marginRight"
        android:background="#5F00"
        android:onClick="onclick"
        android:textSize="@dimen/textSize"
        android:layout_marginTop="@dimen/layout_marginTop"
        android:id="@+id/tvResult3"
        android:gravity="center">
    </TextView>
 
 <TextView
     android:layout_height="@dimen/layout_height"
     android:layout_width="match_parent"
     android:layout_marginLeft="@dimen/layout_marginLeft"
     android:layout_marginRight="@dimen/layout_marginRight"
     android:background="#5F00"
     android:onClick="onclick"
     android:textSize="@dimen/textSize"
     android:layout_marginTop="@dimen/layout_marginTop"
     android:id="@+id/tvResult4"
     android:gravity="center">
 </TextView>
 
 <TextView
     android:layout_height="@dimen/layout_height"
     android:layout_width="match_parent"
     android:layout_marginLeft="@dimen/layout_marginLeft"
     android:layout_marginRight="@dimen/layout_marginRight"
     android:background="#5F00"
     android:onClick="onclick"
     android:textSize="@dimen/textSize"
     android:layout_marginTop="@dimen/layout_marginTop"
     android:id="@+id/tvResult5"
     android:gravity="center">
 </TextView>
 
</LinearLayout>
 
    </ScrollView>
</android.support.v4.widget.SwipeRefreshLayout>
Потом создал устройство Genymotion 768 на 1280 и плотностью 320 dp. Ну и в итоге размеры из файла dimens, который я создал в папке values-sw768dp-xhdpi в него не добавляются, а добавляются только размеры из dimens, который находится просто в values(то есть от values-sw768dp-xhdpi толку никакого нет). Почему такое происходит?
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
21.06.2016, 18:31 6
Цитата Сообщение от yura91 Посмотреть сообщение
Почему такое происходит?
я бы написал почему, но мне влепят предупреждение
перечитай еще пару раз ссылку
0
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
21.06.2016, 19:00 7
Извините я просто плохо знаю английский и не все слова сразу могу уловить. Хорошо перечитаю.
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
21.06.2016, 19:13 8
Цитата Сообщение от yura91 Посмотреть сообщение
Genymotion 768 на 1280 и плотностью 320 dp.
разрешение экрана и плотность - разные вещи
768 на 1280 при плотности 320dp это экран примерно 4.7 дюйма диагональ

а модификатор sw768dp говорит что в папке заданы размеры для экрана минимальной ширины 768 ДЭПЭ, то есть при плотности 320 точек на дюйм этот экран имеет 1280 / 2 = 640dp (ДЭПЕ, не точек) ширину, если был создан как планшет а не телефон

если надо задать размеры для планшетов отдельно то проще всего создать папку values-sw600dp без всяких там xhdpi и т.д.
и вирутальное устройство надо создавать правильное что бы это все проверить

я уже слышу - "а как создавать правильное устройство покажите пожалуйста"
просто - выбрать любой планшет из предложенных там в списке, с диагональю не меньше 7 дюймов
1
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
21.06.2016, 19:30 9
А по какой формуле это все считать. Ну например как расчитать диагональ зная длину ширину и плотность устройства? Как они связаны между собой?
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
21.06.2016, 19:39 10
по теореме пифагора
что тут непонятного?
есть размеры экрана в ПИКСЕЛЯХ и плотность, допустим 768*1280 и 320dpi

если размеры экрана в точках это катеты треугольника, то диагональ - это гипотенуза

sqrt(768*768 + 1280*1280) = sqrt(589824 + 1638400) = sqrt(2228224) = 1492 точки
перевожу, что я тут высчитал - если у девайса размеры экрана в ПИКСЕЛЯХ равны 768 на 1280 то его диагональ в тех же пикселях равна примерно 1492 точки

теперь зная диагональ и плотность точек на дюйм легко высчитать размер диагонали в дюймах
1492 / 320 = 4.6625 дюйма

на накоторых устройствах плотность точек по вертикали и горизонтали может отличаться, но зная обе плотности так же легко вычислить диагональ
0
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
22.06.2016, 00:46 11
то есть при плотности 320 точек на дюйм этот экран имеет 1280 / 2 = 640dp (ДЭПЕ, не точек) ширину, если был создан как планшет а не телефон
1280 точек здесь это вообще то высота(длина а не ширина) и почему так высчитывается 1280 / 2 можете обьяснить? Ну дюйм это примерно 2 см, но здесь 1280 - это пиксели, ну а получается размер вообще в dp. Можете пояснить этот расчет?

Добавлено через 4 часа 35 минут
А такой еще вопрос 1dp при разрешении 768 на 1280 и плотностью 320 dp это 2 пикселя верно? Поэтому 1280 / 2 = 640dp(ширина из пикселей переводится в dp) да? 768 здесь все таки длина или ширина? Можете обьснить этот момент?
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
22.06.2016, 10:31 12
Цитата Сообщение от yura91 Посмотреть сообщение
1280 точек здесь это вообще то высота(длина а не ширина)
я не телепат что там за устройство было создано, но все равно это не принципиально
Цитата Сообщение от yura91 Посмотреть сообщение
и почему так высчитывается 1280 / 2
потому что экран имеет плотность 320 точек на дюйм, то есть двойная плотность относительно базовой (160dp)
лю этом тоже написано в той ссылке что я давал
поэтому делим на два
Цитата Сообщение от yura91 Посмотреть сообщение
А такой еще вопрос 1dp при разрешении 768 на 1280 и плотностью 320 dp это 2 пикселя верно?
да, без разницы какое разрешение экрана, и об этом тое написано в той ссылке
The conversion of dp units to screen pixels is simple: px = dp * (dpi / 160). For example, on a 240 dpi screen, 1 dp equals 1.5 physical pixels. You should always use dp units when defining your application's UI, to ensure proper display of your UI on screens with different densities
Цитата Сообщение от yura91 Посмотреть сообщение
Поэтому 1280 / 2 = 640dp(ширина из пикселей переводится в dp) да? 768 здесь все таки длина или ширина? Можете обьснить этот момент?
если созданное устройство - телефон то ширина 768 в данном случае, а если планшет то по идее ширина 1280
1
22.06.2016, 10:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.06.2016, 10:31
Помогаю со студенческими работами здесь

Как сделать фон шапки страницы для разных разрешений монитора?
Подскажите пожалуйста, как можно реализовать верстку макета, если макет 1280 шириной, и чтобы шапка...

Установить плейлист на форум. Разная музыка для разных страниц
Хочу установить плей лист на форум, и чтобы когда переходите в тему или в раздел чтобы музыка не...

Оптимизация сайта под мониторы разных разрешений
Всем привет Столкнулся с проблемой связанной с шапкой сайта Сама шапка эта одна картинка...

C разных компьютеров разная выдача?
C разных компьютеров разная выдача в Яндексе? Проверял выдачу в Яндексе по одним и тем же запрсам...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru