- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
-(void) reloadHelpMessage:(BOOL) _isPortrait
{
//ignoreDisappear = NO;
//ingnoreWillAppear = NO;
if (_isPortrait)
{
helpMessage.frame = CGRectMake(helpMessage.frame.origin.x, helpMessage.frame.origin.y, self.view.bounds.size.width, 175);
for (UIView* sub in [helpMessage subviews])
{
NSLog(@"__%@",[sub description]);
switch (sub.tag)
{
case 1:
sub.frame = CGRectMake(68, 17, 200, 18);
break;
case 2:
sub.frame = CGRectMake(68, 40, self.view.bounds.size.width - 70, 80);
break;
case 3:
sub.frame = CGRectMake(267, 3, 35, 29);
break;
case 4:
sub.frame = CGRectMake(10, 8, 48, 53);
break;
case 5:
sub.frame = CGRectMake(11, 128, roundf((self.view.bounds.size.width - 32)/2), 36);
break;
case 6:
sub.frame = CGRectMake(roundf((self.view.bounds.size.width/2) + 5), 128, roundf((self.view.bounds.size.width - 32)/2), 36);
break;
default:
break;
}
}
}
else
{
helpMessage.frame = CGRectMake(helpMessage.frame.origin.x, helpMessage.frame.origin.y, self.view.frame.size.width, 138);
for (UIView* sub in [helpMessage subviews])
{
NSLog(@"__%@",[sub description]);
switch (sub.tag)
{
case 1:
sub.frame = CGRectMake(68, 17, 200, 18);
break;
case 2:
sub.frame = CGRectMake(68, 40, self.view.bounds.size.width - 80, 40);
break;
case 3:
sub.frame = CGRectMake(400, 3, 35, 29);
break;
case 4:
sub.frame = CGRectMake(10, 8, 48, 53);
break;
case 5:
sub.frame = CGRectMake(11, 91, roundf((self.view.bounds.size.width - 32)/2), 36);
break;
case 6:
sub.frame = CGRectMake(roundf((self.view.bounds.size.width/2) + 5), 91, roundf((self.view.bounds.size.width - 32)/2), 36);
break;
default:
break;
}
}
}
}
Ня!
> CGRectMake(68, 17, 200, 18);
А как это работает на ифунах с разным разрешением или размером экрана? (Ну хотя это, наверное, не в пикселях, а в независимых от девайса единицах).
Собственно, у ифунов только 2 разрешения, не ретина и ретина.
Это как? О_о
Можно подробней?
P.S. Напомните, какие цвета текста за что отвечают. Я помню только, зеленый - сарказм.
Сарказм (впрочем и черным тоже).
Ссылка.
Спойлер
Модерастия.
Пользователю bormand, согласно правилам вынесено предупреждение за обсуждение модератора и/или его действий.
Ибо гласят правила, не сотвори себе модератора, окроме того что поставлен свыше.
Lure of chaos и krypt - самозванцы. Единственно верный модератор - это я.
fix
Та ладно.
Я уже давно почитываю сайт так:
http://pichub.ru/pic_b/12/12/17/c319cbecf89297b2d4743e44bf118ce0.png
Только я по человечески считал сначала, а по программистски :)
Офигенно иметь крайне несильно разнообразные устройства.
Ага, с ведром и китайским зоопарком на нем хуже.
Там им разрешения экрана пришлось собрать аж в 4 группы - ldpi, mdpi, hdpi и xhdpi (привет, ретина). Да еще и куча дисплеев разного размера, и хоть там все координаты указываются в независящих от разрешения dp, и ведро умеет резиновые лейауты, но лейаут от огромного galaxy tab явно будет смотреться как говно на моем 4" highscreen, и наоборот...
---
http://www.iphoneresolution.com/
А ничего, что разрешение у айфона 3 - 320x480 и у 4 - 640x960?
Или на самом деле всё не так плохо?
Если не выходить за пределы абстракций, не страдать херней типа "по лейауту на каждый сотик", и внимательно читать доку (хотя бы вводные разделы) - все хорошо ;)
Ну я, конечно, далеко не профи в ведроразработке, всего одна прога, и так пока не закончена - но поддержка разных экранов делается так:
1) Делаем 4 папки с ресурсами, в которые складываем рисунки в разном dpi (можно и одну в mdpi, если насрать на то, что он будет их растягивать).
2) Смотрим, насколько ужасно будут смотреться интерфейсы на экранах разного размера, и делаем пару-тройку лейаутов под разные (к примеру на планшете можно показать все элементы за раз, а на мелком сделать тоже самое вкладками).
Вот и все. Мультитачи там из коробки поддерживаются, я сам офигел, когда кинул на форму 4 слайдера, и смог их катать одновременно и независимо четырмя пальцами.
На процессоры, в принципе, насрать. Если не пишешь высокопроизводительную игрушку. Жаба все-таки.
С операционками очень помогает ведроплагин к эклипсу. Он подсказывает, если случайно поюзал функцию, которая появилась в более свежем sdk, нежели указанный в манифесте. Юзать такие функции, кстати, можно, но тогда нужно проверять версию операционки самому. Ну и там неплохая совместимость - очень мало изменений, которые что-то ломают, в основном просто добавляются новые фишки.
По опыту - собирал под 4.0.3, дал погонять другу на ведре 2.2. Все запустилось, работает, поломалось только уведомление, которое я по дурости написал не дочитав ман. Сделал как по ману - заработало.
P.S. После неудачной попытки покодить под симбиан, где разработка это просто треш угар и содомия - андроид просто прелесть. Очень радует то, что сдк работает в линухе и имеется неплохая документация на офсайте.
Даже не рискую. Хотя оборудование имеется.
Говно не в зоопарке, а в том, что НДК это пиздец лютый.
>NDK...им точно пытают Гитлера в аду, и я не уверен что эта пытка там легальна.
Дело в том, что примеры готовые сами нихера не работают, что ты должен руками заполнять файл сборки, хреносборки и манифест по правилам, которые нигде не указаны и документации по ндк хрен найдёшь, и если ты что-то заполнишь неверно, то просто программа не запустится, да, а ещё в АПИ некоторые функции работают неправильно и ими лучше не пользоваться, приходится какими-то жёсткими костылями эта баги обходить.
Тарас, ты сам выбрал тернистый крестоблядский путь... Для тех, кто не юзает NDK, кодинг под ведро на порядки проще и приятней.
Причем если я правильно понимаю идею NDK - на нем нужно писать мелкие заоптимизированные по самые яйца функции, которые не прыгают обратно в жабу, а затем уже дергать их из высокоуровневого кода на жабе. Typical good candidates for the NDK are self-contained, CPU-intensive operations that don't allocate much memory, such as signal processing, physics simulation, and so on гласит надпись на страничке NDK.
Если же ты пишешь на крестах высокоуровневую логику, дергая при этом жабоапишки, то твой код мало того что будет выглядеть как сраное говнище, и ты потратишь на его написание дохуя времени, так он еще и всяко работает медленнее, чем тупой код, тупо написанный на яве.
P.S. Я понимаю, что ты хочешь написать кросплатформенную игру, которая будет идти еще и на ПК. Но имхо ты быстрее бы запилил движок на жабе для ведра и движок на чем-то другом для ПК, чем будешь ебаться с "кроссплатформенным" крестоблядским кодом.