Translate

пятница, 13 января 2017 г.

Онлайн-сервисы в помощь разработчику по дизайну

Доброго времени суток!

Не каждый разработчик владеет дизайнерскими навыками, но хорошо что есть онлайн-сервисы, которые помогают нам без особых усилий сделать красивости.

Перечислю несколько must-have сервисов:

суббота, 10 декабря 2016 г.

Красим статус бар на ANDROID и IOS

Доброго времени суток!

    Долгое время искал решение как можно покрасить статус бар (шторку) на Android устройствах выше 5 версии.
Про IOS мы не будем говорить, потому что, это сделано в FMX из коробки (в демо проекте будет дополнение чтобы в run-time применять покраску)

    Примерно год назад я создал модуль, который реализовывал эту фичу, но он был не полноценен, на некоторых устройствах покраска происходила только после смены ориентации экрана, что неправильно. Проблемы с покраской были у устройств на базе процессоров Intel и arm64-v8a. В том модуле я использовал изменение флагов JWindow в run-time, а именно добавлял FLAG_TRANSLUCENT_STATUS

Но видимо изменение флагов в run-time некорректно обрабатывается…
Решение пришло на днях, попробовать подменить стиль для MainActivity и добавить нужные флаги в XML разметку.

суббота, 3 декабря 2016 г.

#3 ModernListView - динамическая подгрузка контента

Доброго времени суток!

Сегодня хотел бы рассмотреть динамическую подгрузку контента.
Мы не так давно в нашем ламповом чатике обсуждали два варианта подгрузки данных:
  • Бесконечный скроллинг (например как лента в ВК)
  • Паджинация/Пагинация (постраничная загрузка)
В современных приложениях почти всегда используется бесконечный скроллинг, это удобно по нескольким причинам:
  1. Пользователю не нужно дотягиваться до кнопок переключения страниц или использовать жесты влево/вправо
  2. Разработчику не нужно искать место для размещения контролов переключения страниц или реализовывать доп. функционал по управлению паджинацией с помощью жестов
Было свободное время и я реализовал два этих варианта с применением ModernListView, т.к. в нём есть специальные методы и события для простой реализации.

Опишу немного как всё это работает:
На сервер отправляется запрос с указанием страницы, PHP скрипт сформирует массив из имён статичных файлов (картинок) и упакует это в JSON формат. Наш клиент принимает JSON и отображает информацию в списке. При прокрутке контента происходит динамическая подгрузка картинок с сервера.

понедельник, 28 ноября 2016 г.

#2 ModernListView - режим мультивыделения

Доброго времени суток!

Продолжаю знакомить Вас с TListView и возможностями надстройки ModernListView.
Сегодня я расскажу как можно сделать MultiSelect для списка.

воскресенье, 27 ноября 2016 г.

#1 ModernListView - горизонтальный режим

Доброго времени суток!

Я уже кратко рассказал о ModernListView в предыдущем посте, теперь бы хотел чуть подробней рассказать о горизонтальном режиме.

пятница, 25 ноября 2016 г.

#0 ModernListView - знакомство

Доброго времени суток!

Так вышло, что в мобильных приложениях мы часто используем списки для отображения информации и самый гибкий и удобный компонент это TListView. Но часто стандартного функционала нам не достаточно, поэтому я решил его немного доработать.

В этом посте я вкратце расскажу о ModernLV

четверг, 24 ноября 2016 г.

История с IPv6 или публикация в App Store

Доброго времени суток!

Не так давно я публиковал приложение в App Store, это заняло у меня месяц...

27 сентября 2016 года я подал на публикацию в AppStore, первый reject пришел 29 сентября с текстом:
От: Apple
  • 2. 1 PERFORMANCE: APP COMPLETENESS
Performance - 2.1

We discovered one or more bugs in your app when reviewed on iPad and iPhone running iOS 10.0.2 on Wi-Fi connected to an IPv6 network.
Specifically, content fails to load after launch.
We've attached screenshot(s) for your reference.
Next Steps
Please run your app on a device while connected to an IPv6 network (all apps must support IPv6) to identify the issue(s), then revise and resubmit your app for review. 
Как выяснилось позже сеть Apple построена на IPv6, поэтому запросы на сервер (настроенный на IPv4) не доходили. После этого я снова подавал на публикацию изменяя код в приложении, пробовал использовать TidHTTP и TNetHTTPClient, но также получал reject с аналогичным текстом от Apple. оставался единственный вариант с настройкой IPv6 на сервере. Написал в тех. поддержку хостинга, о просьбе выдать мне IPv6 адрес, с описанием проблемы. Через пару дней с положительным ответом пришло письмо на почту. Оставалось только настроить...