-
Постов
135 -
Зарегистрирован
-
Посещение
-
Победитель дней
12
Активность репутации
-
zairkz отреагировална Равиль Зарипов (ZuBy) в Уничтожение приложения из него самого
такие подойдут?
Application.Terminate; SharedActivity.finish; -
zairkz отреагировална Равиль Зарипов (ZuBy) в Скайп или видео связь
у скайпа есть такие штуки
[android] https://msdn.microsoft.com/en-us/library/office/dn745884.aspx [ios] https://msdn.microsoft.com/en-us/library/office/dn745885.aspx -
zairkz отреагировална Равиль Зарипов (ZuBy) в Отображение в виде плиток
ну мне жалко отдавать деньги за ваши компоненты, они прекрасны конечно. Но пока можно и без них справиться
-
zairkz получил реакцию от Равиль Зарипов (ZuBy) в AppStore iOS 32 и 64 бит
Не обязательно видеть телефон что-бы скомпилировать IPA файл, IPA соберёт 32 и 64 бита, поэтому будьте внимательны, все таки стоит сперва скомпилировать и под 32 бита и 64 для проверки, например в Deploy 32 бита я забыл добавить шрифты, сформировал IPA, на 64 бита все отлично, а вот на 32 не было FontAwesome.
-
zairkz получил реакцию от krapotkin в AppStore iOS 32 и 64 бит
Не обязательно видеть телефон что-бы скомпилировать IPA файл, IPA соберёт 32 и 64 бита, поэтому будьте внимательны, все таки стоит сперва скомпилировать и под 32 бита и 64 для проверки, например в Deploy 32 бита я забыл добавить шрифты, сформировал IPA, на 64 бита все отлично, а вот на 32 не было FontAwesome.
-
zairkz отреагировална Равиль Зарипов (ZuBy) в GCMIntentService или Multiline Push and Local Notification
Нашел на форуме в одной из тем Java Decompiler
им посмотрел fmx.jar в нем лежит, то что нужно
-
zairkz отреагировална Равиль Зарипов (ZuBy) в GCMIntentService или Multiline Push and Local Notification
вставил нужную строчку
/* 115: */ private NotificationCompat.Builder buildNotification(String msgTitle, String msgText, PendingIntent contentIntent) /* 116: */ { /* 117:129 */ int icon = this.mContext.getApplicationContext().getApplicationInfo().icon; /* 118: */ /* 119: */ /* 120: */ /* 121:133 */ NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this.mContext); /* 122:134 */ mBuilder.setSmallIcon(icon); /* 123:135 */ mBuilder.setTicker(msgTitle); /* 124:136 */ mBuilder.setContentTitle(msgTitle); /* 125:137 */ mBuilder.setContentText(msgText); /* 126:138 */ mBuilder.setContentIntent(contentIntent); /* add:ZuBy */ mBuilder.setStyle(new NotificationCompat.BigTextStyle().bigText(msgText)); // эта строчка делает мультилайн /* 127:139 */ mBuilder.setSound(RingtoneManager.getDefaultUri(2)); /* 128: */ /* 129:141 */ return mBuilder; /* 130: */ } на всякий случай прикладываю полностью исходные данные
остался вопрос, как скомпилировать в jar файл?
fmx.src.rar
-
zairkz отреагировална Равиль Зарипов (ZuBy) в GCMIntentService или Multiline Push and Local Notification
Доброго дня!
Решил я побороть проблемку single-line в нотификациях (в частности push, т.к. локальные можно выводить в несколько строк)
Почитал в интернете, набрел на такие статьи
https://mobilefirstplatform.ibmcloud.com/blog/2015/11/24/multi-line-gcm-push-notifications/ https://github.com/vivinkrishnan/multi-line-push/blob/master/MultiLineNotifications/apps/MultiLineNotifications/android/native/src/com/MultiLineNotifications/GCMIntentService.java судя по ним нужно просто подменить библиотеку com.embarcadero.gcm.notifications.GCMIntentService на измененную как статье выше
Вроде плёвое дело, но где найти эту библиотеку и чем скомпилировать исходник?
Если у кого есть познания в этой области, подскажите в какую сторону рыть. Нам ведь всем такое пригодится
fmx.zip (Seattle, Berlin) LocalMultiline.zip (Berlin)
https://github.com/rzaripov1990/Multiline-Push-and-Local-Notifications
-
zairkz отреагировална haword в 3D приложение
чем FMX будет в случае работы с API OpenGL отличаться от делфи? да ни чем. Я думаю можно сделать таку штуку и на FMX.
надеюсь не последует следующий стандартный вопрос в таких случаях - а есть исходный код похожей готовой программы
-
zairkz отреагировална Axbor в Отображение в виде плиток
наверно я всё спутал с этим
Значит по порядку... Я понял что каждая строчка это ListViewItem, и в каждом ListViewItem добавлена TListItemText, TListItemImage, получается на каждом ListViewItem будет по нескольких TListItemText и TListItemImage.. Я просто не понял вот ListViewItem там один фон, и когда я всё это просто нарисую они не будут раздельными как на вашем примере... Вот как добиться такого эффекта? (Сейчас я думаю о том что белая полоса на нижнем части это продолжение ListItemImage...). А где можно найти вашу приложение?
-
zairkz отреагировална Равиль Зарипов (ZuBy) в Отображение в виде плиток
Да вот теперь все правильно понимаете, чтобы разделить визуально колонки пришлось не мало кода дописать в самом FMX.ListView.pas там же сделано и выделения и собственный обработчик нажатия и прочее.
Если хотите могу добавить вас в бета-тест. В личку скиньте платформу и емайл (AppleID или Google account)
-
zairkz отреагировална Равиль Зарипов (ZuBy) в Отображение в виде плиток
Если Button это TButton, проблемы возникнут во первых со стилями, если ерзать вверх вниз( освобождать и загружать) стили, то очень скоро память на девайсе закончится. О чем выше я писал.
Во вторых динамическая загрузка картинок (которую я хотел) не получилось у меня реализовать.
-
zairkz отреагировална Равиль Зарипов (ZuBy) в Отображение в виде плиток
Если вам будет понятно, это стиль айтема отрисованный несколько раз. Поэтому визуально вы видите несколько плиток, а не одну как обычно
-
zairkz отреагировална master webs в AppStore iOS 32 и 64 бит
чтобы работало на 32 и 64 и чтоб можно было загрузить в аппсторе на проверку установите настройки
p/s в сентябре выходит ios 10, уберут поддержку 32 bit поспешите )
-
zairkz отреагировална Равиль Зарипов (ZuBy) в AppStore iOS 32 и 64 бит
ну так в AppStore принимают только приложения скомпилированные для 64-bit архитектуры
просто выберите Application Store и Release и нажмите play у вас появится .ipa файл, который нужно залить через Application Loader
Подключенный девайс не обязателен
-
zairkz отреагировална Равиль Зарипов (ZuBy) в AppStore iOS 32 и 64 бит
вроде ограничения только по версионности iOS
я на днях запускал на IPhone 4S с версией ос 9+ все прекрасно работает.
UPDATE: у меня Seattle (и заливал через TestFlight)
-
zairkz отреагировална Равиль Зарипов (ZuBy) в AppStore iOS 32 и 64 бит
компилятор сам собирает обе версии и вшивает в одну аппликацию (ну или как-то так)
вот требования к девайсу (проект собран для 64-bit)
прекрасно устанавливается на такие девайсы
-
zairkz отреагировална Равиль Зарипов (ZuBy) в Как правильно заполнит ListBox в потоке?
Да, все верно
-
zairkz отреагировална Axbor в Как правильно заполнит ListBox в потоке?
Ах да я кажется понял... Загружаю данные на одном потоке, и при скроллинге загружаю картинки еще на одном потоке... Так правильно будет кажется...
-
zairkz отреагировална brunnengi в [DXBerlin][Android][TMapView] Маячок по центру карты
Нельзя положить поверх карты (андроид), я так понимаю что это проблема только программирования на Андроид из под делфи, коли в других программ под андроид нормально идет?
попробую, посмотрю что из этого выйдет.
А варианта перерисовывать в самом компоненте нет?
-
zairkz отреагировална Brovin Yaroslav в [Android] [XE7] Как получить GPS координаты без компонента?
TThread.Synchronize; Вызывать из кода обработчика таймера Чтобы понять, как это происходит, нужно почитать о том, как работает UI Thread (например тут). В этой статье, как раз рассказывает, что такое лупер и как организуется "якобы многозадачность" (отрисовка, обработка событий и тд) в рамках одного треда. Синхронизация не передает контекст. В данном случае контекст привязан к потоку. Он является частью потока. Поэтому по сути, когда вы синхронизируете (по сути просто вызываете ваш код из лупера, то по сути вы уже работаете в контексте :-) Если заглянуть в исходники андроида:
public final class Looper { // Вырезан код public static void loop() { final Looper me = myLooper(); if (me == null) { throw new RuntimeException("No Looper; Looper.prepare() wasn't called on this thread."); } final MessageQueue queue = me.mQueue; // Make sure the identity of this thread is that of the local process, // and keep track of what that identity token actually is. Binder.clearCallingIdentity(); final long ident = Binder.clearCallingIdentity(); for (;;) { Message msg = queue.next(); // might block if (msg == null) { // No message indicates that the message queue is quitting. return; } // This must be in a local variable, in case a UI event sets the logger Printer logging = me.mLogging; if (logging != null) { logging.println(">>>>> Dispatching to " + msg.target + " " + msg.callback + ": " + msg.what); } msg.target.dispatchMessage(msg); if (logging != null) { logging.println("<<<<< Finished to " + msg.target + " " + msg.callback); } // Make sure that during the course of dispatching the // identity of the thread wasn't corrupted. final long newIdent = Binder.clearCallingIdentity(); if (ident != newIdent) { Log.wtf(TAG, "Thread identity changed from 0x" + Long.toHexString(ident) + " to 0x" + Long.toHexString(newIdent) + " while dispatching to " + msg.target.getClass().getName() + " " + msg.callback + " what=" + msg.what); } msg.recycleUnchecked(); } } ///------------------------------ } То есть по сути это просто бесконечный цикл, в котором из очереди вытаскиваются задания и выполняются по очереди. Как только возникает событие, оно просто складывается в очередь, и лупер в UI треде его просто обрабатывает. Когда вы вызываете TThread.Synchronize, то в конечном итоге ваш код завернется в сообщение, которое будет вызвано из этого куска кода
-
zairkz отреагировална Равиль Зарипов (ZuBy) в [Android] [XE7] Как получить GPS координаты без компонента?
если брать реализацию для андроида, то есть решение без сенсора в этой теме
там в первом сообщении, вложение
-
zairkz отреагировална golomeen в Динамическое создание/уничтожение
если делаешь release то потом purgatory косячит под iOS при каких-то внутренних удалениях стилей
да и вообще динамический add/remove controls под иосью какая-то тяжко решаемая задача
-
zairkz отреагировална kami в Динамическое создание/уничтожение
Нужно использовать myObject.Release, а не Free.
Только обратите внимание, что Release - это отложенное уничтожение, т.е. моментально компонент исчезает с формы, а вот уничтожится - после, когда-нибудь, когда до него дойдет очередь.
Помимо этого, если ссылка на объект есть где-то в поле класса, то нужно заnil-ить ее, дабы уменьшить счетчик ссылок.
-
zairkz отреагировална Равиль Зарипов (ZuBy) в Изменение стиля TfgActivityDialog
Вы просто указали какой стиль предпочитаете для отображения нативных окошек. На этом работа со стайлбуком закончена. Остальное делается через api