Перейти к содержанию
  • Регистрация

Лидеры


Популярный контент

Показан контент с высокой репутацией за 14.07.2019 во всех областях

  1. 1 балл
    sinuke

    переход к x64?

    Проверил в маркете статистику по одному своему приложению... В общем десятью процентами и не пахнет (22,6%)
  2. 1 балл
    sinuke

    переход к x64?

    Да вообще не лучше - дома все устройства с 9-м андройдом. Так что лично я вообще не знаю что делать
  3. 1 балл
    qz5

    переход к x64?

    не советовал бы такое делать за это Гугл может не только приложение забанить, но и полностью Вас как разработчика так что даже если новый аккаунт создадите - на него тоже бан прилетит Гугла не любит когда их так обманывают, в подобных случаях порой создают робота, который обходит и всем таким приложениям бан дает так что это рискованно, лучше пока через MaxSDK
  4. 1 балл
    Barbanel

    переход к x64?

    Т.е. в коммьюнити эдишн его не будет. Редиски!!!
  5. 1 балл
    qz5

    переход к x64?

    Нашли способ, чтобы Плеймаркет не ругался на отсутствие 64-битности, вот оно: http://www.fmxexpress.com/learn-how-to-deploy-delphi-10-3-rio-android-apps-to-google-play-with-android-64-bit-requirements/ Но правда есть проблема: после этого не даст установить такое приложение на Андроид 9 и 10.
  6. 1 балл
    qz5

    переход к x64?

    Вышла версия 10.3.2 - https://community.idera.com/developer-tools/b/blog/posts/announcing-the-release-of-delphi-c-builder-and-rad-studio-10-3-2 Добавили поддержку macOS 64 бит, нотификации и поддержка Линукса новые теперь тоже из коробки поддерживаются но вот Андроид 64 - всё еще нет
  7. 1 балл
    qz5

    переход к x64?

    Нет, не игра, приложение. Просто на Java писать не охота, но желательно кроссплатформенно, чтобы потом на iOS тоже портировать. Лазарус - там Паскаль, его знаю. Unity - там C# и смогу разобраться. Код на Яве на Яблоко не перенесешь. Смотрел еще всякие Kotlin, React Native, но мне больше всего подходит именно Delphi Community Edition.
  8. 1 балл
    qz5

    Версия андроид

    И так я прошил этот телефон за 3000 рублей на Андроид 9 с помощью ADB, который идет вместе с Delphi! Примерно за 15 минус справился, вместе со скачиванием прошивки. Так что для тех, кто хочет иметь дешевый телефон с поддержкой Андроид 8.1, 9 и 10 - https://vk.com/wall-148943419_19677 Делал по инструкции из ссылок, что выше дал, так что всё ОК.
  9. 1 балл
    Ronalds Rizakovs

    Работа с камерой - Rad 10.3

    Заработала с TakePhotoFromCameraAction. Только одна строчка кода для обработчика TakePhotoFromCameraAction1DidFinishTaking Такие официальные мануалы только мозг пудрит... Здесь правлений мануал. http://docwiki.embarcadero.com/RADStudio/XE5/en/Mobile_Tutorial:_Taking_and_Sharing_a_Picture_(iOS_and_Android) И нужно установить Project Options > Entitlements List > Secure File Sharing в значение true. (Этого тоже нету в мануале...)
  10. 1 балл
    mazayhin

    Как узнать Device Name на Андроиде?

    Человек хочет получить то имя, которое на скрине идет первой строкой, на сколько я понял
  11. 1 балл
    qz5

    THTTPClient

    Подробности на английском языке: https://medium.com/@imstudio/android-8-cleartext-http-traffic-not-permitted-73c1c9e3b803 https://medium.com/@son.rommer/fix-cleartext-traffic-error-in-android-9-pie-2f4e9e2235e6 но достаточно, что я выше написал
  12. 1 балл
    qz5

    THTTPClient

    Сделайте как здесь написано http://fire-monkey.ru/topic/5631-не-открываются-страницы-на-android-9/#comment-36008
  13. 1 балл
    qz5

    Версия андроид

    Я разбавлю своим вариантом: Leagoo Power 2. У него цена около 3000 рублей, из коробки идет Андроид 8.1, но можно поставить Андроид 9 и даже... Android 10!!! С одной стороны у меня среди родственников есть смарты от 4ой до 9-ой версии Андроид, да и моя прога сейчас на всех работает (пока она простая). Но с другой стороны решил поискать дешевый смарт, на который можно несколько разных версий Андроид поставить, но: 1. чтобы это было легко, без всяких разблокировок и т.п. (у новых Xiaomi, Huawei как раз проблемы с заблокированным загрузчиком) 2. чтобы был максимально дешевый 3. чтобы можно было поставить Андроид 8.1 и Андроид 9, причем разные сборки 4. чтобы не надо было ставить всякие Flash Tools и т.п. - искал, чтобы прошивка была простой и максимально без лишних программ Оказалось, что Leagoo Power 2 Pro: 1. Поддерживает GSI-прошивки от Project Treble (Андроид 8.1, Андроид 9 и Android 10) 2. стоит около 3000 рублей 3. Для прошивки не нужно никаких лишних программ! Достаточно ADB, а он и так уже идет вместе с Delphi (можно и самому ADB ставить на комп, если Delphi нет например) Взял на будущее, чтобы было дешевое устройство, на котором можно экспериментировать с прошивками Правда сам пока не пробовал - телефон получил, всё работает, но пока закинул его в коробочку, тестирую на смартфоне с Андроид 7 (он всё равно постоянно на столе и там нужные мне программы). Как прошить ТВРП: https://4pda.ru/forum/index.php?showtopic=928803&st=120#entry81458052 Другие версии Андроид брать здесь: https://4pda.ru/forum/index.php?showtopic=892755 Где купить: решайте сами, многие покупают на Пандао, но я почитал отзывы - Пандао какой-то странный магазин, ничего там не покупал и не стал из-за 200 рублей рисковать. Я взял там, где советует официальный производитель: https://vk.com/wall-148943419_19677 Доставила почта Сингапура за 20 дней. p.s. я кучу разных вариантов пересмотрел и остановился именно на нем. Самая легкая перепрошивка из всех, недорогой смарт, есть запчасти, возможность ставить разные кастомы. может кому пригодится
  14. 1 балл
    Пока тестировал хелпер в боевом проекте он потихоньку оброс исрпавлениями/улучшениями: Загрузка из потока сделана через TBitmapSurface - это позволяет избежать множества глюков. LoadFromStream вынесен из Synchronize (основного потока) в поток HTTPClient - по результатам бенчмарка операция оказалась самая жручая. После исправления интерфейс перестал залипать совсем. Добавлен overload вариант с передачей в процедуру TListItemImage - для использования в TListView и корректной перерисовки подгруженных картинок через AListItemImage.Invalidate. unit BitmapAsyncLoader; interface uses FMX.Graphics, FMX.Surfaces, System.Net.HttpClient, System.Types, System.Classes, FMX.ListView.Types, FMX.ListView.Appearances; type TBitmapAsyncLoader = class helper for TBitmap procedure LoadFromURLAsync(const AUrl : String); overload; procedure LoadFromURLAsync(const AUrl : String; const AListItemImage : TListItemImage); overload; end; implementation var AHTTPClient : THTTPClient; procedure TBitmapAsyncLoader.LoadFromURLAsync(const AURL : String); begin try AHTTPClient.BeginGet( procedure (const ASyncResult: IAsyncResult) var AHTTPResponse : IHTTPResponse; ABitmapSurface : TBitmapSurface; begin if Not ASyncResult.IsCompleted then exit; try AHTTPResponse:=THTTPClient.EndAsyncHTTP(ASyncResult); except end; if Assigned(AHTTPResponse) and (AHTTPResponse.StatusCode = 200) then begin ABitmapSurface:=TBitmapSurface.Create; if TBitmapCodecManager.LoadFromStream(AHTTPResponse.ContentStream, ABitmapSurface, CanvasClass.GetAttribute(TCanvasAttribute.MaxBitmapSize)) then TThread.Synchronize(Nil, procedure begin if Assigned(Self)then Assign(ABitmapSurface); ABitmapSurface.Free; end ) else ABitmapSurface.Free; end; end, AURL ); except end; end; procedure TBitmapAsyncLoader.LoadFromURLAsync(const AURL : String; const AListItemImage : TListItemImage); begin try AHTTPClient.BeginGet( procedure (const ASyncResult: IAsyncResult) var AHTTPResponse : IHTTPResponse; ABitmapSurface : TBitmapSurface; begin if Not ASyncResult.IsCompleted then exit; try AHTTPResponse:=THTTPClient.EndAsyncHTTP(ASyncResult); except end; if Assigned(AHTTPResponse) and (AHTTPResponse.StatusCode = 200) then begin ABitmapSurface:=TBitmapSurface.Create; if TBitmapCodecManager.LoadFromStream(AHTTPResponse.ContentStream, ABitmapSurface, CanvasClass.GetAttribute(TCanvasAttribute.MaxBitmapSize)) then TThread.Synchronize(Nil, procedure begin if Assigned(Self) and Assigned(AListItemImage) then begin AListItemImage.BeginUpdate; Assign(ABitmapSurface); AListItemImage.Invalidate; AListItemImage.EndUpdate; end; ABitmapSurface.Free; end ) else ABitmapSurface.Free; end; end, AURL ); except end; end; initialization AHTTPClient:=THTTPClient.Create; finalization if Assigned(AHTTPClient) then AHTTPClient.DisposeOf; end. Тестовый проект, на этот раз с ListView (по кнопке добавляется 100 итемов) прилагаю. BitmapAsyncLoaderListView.7z
  15. 1 балл
    krapotkin

    Фреймворк для стандартного ListView

    Всем привет! После долгого творческого запоя я запилил альфу либы, которая позволяет юзать обычный, не-генномодифицированный ListView. Данные подаются в виде модели данных, описание раскладки итема лежит в JSON. Для работы пишется примитивный наследник класса-адаптера, который биндит данные модели на элементы из JSON. Я решил, что руками делать это дешевле чем через RTTI { TMyAdapter } procedure TMyAdapter.SetupDrawableContent(const ADrawable: TListItemDrawable; const AData: TMyData); begin if SameText( ADrawable.Name, 'text') then begin (ADrawable as TListItemText).Text := AData.Text; end else if SameText( ADrawable.Name, 'detail') then begin (ADrawable as TListItemText).Text := AData.Detail; end else if SameText( ADrawable.Name, 'balance') then begin (ADrawable as TListItemText).Text := FormatFloat('0.00', AData.Balance); end else if SameText( ADrawable.Name, 'reserved') then begin (ADrawable as TListItemText).Text := FormatFloat('0.00', AData.Reserved); end end; Главная хитрость и отличие от стандартного DynamicAppearance+LiveBinding - переменная высота итемов ListView и использование арифметики в описании раскладки. Можно указать Detail.Y = Text.Bottom + 5, ItemHeight = Detail.Bottom + 10, Detail.W = ItemWidth/2 - X {"Kind":"rect","Name":"BonusRect","Value":"", "Place":{"X":"itemwidth*3/4","Y":"Text.Y","W":"ItemWidth/4-5","H":"50"}, "BorderColor":"#FF005500", "Color":"lime", "LineWidth":3}, {"TextHAlign":2,"TextVAlign":1,"Kind":"text","Name":"Balance","Value":"", "Place":{"X":"BonusRect.x+5","Y":"Text.Y","W":"BonusRect.w-10","H":"50"}, "WordWrap":true, "Color" :"Black", "Font":{"Size":18,"Style":""}} ], "ItemHeight":"detail.bottom+10", Это дает довольно гибкую систему. Не на все случаи жизни, но все, что нужно, можно после автоматической раскладки дополнительно приписать в OnUpdateObjects Код для работы примерно такой procedure TForm1.FormCreate(Sender: TObject); begin data:= TMyDataList.CreateFromFile(ExePath()+'data.json'); // загрузка в модель данных Adapter := TMyAdapter.Create(lvWallets, data.Items, ExePath()+'pattern.json'); // создание адаптера и загрузка шаблона Adapter.Pattern.SetupListView(lvWallets); // задать отступы и разную мелочь Adapter.ResetView(); // здесь в цикле из модели данных создается нужное количество итемов ListView end; procedure TForm1.lvWalletsUpdatingObjects(const Sender: TObject; const AItem: TListViewItem; var AHandled: Boolean); begin Adapter.SetupContent(AItem); // загрузить текст, картинки и другое содержимое в элементы итема Adapter.Pattern.DoLayout(AItem); // поправить раскладку в соответствии с содержимым элементов итема end; Для использования кроме стандартных - текст, картинка, кнопка - создано несколько дополнительных элементов итема - прямоугольник, круг, уголок, линия. Отличие от ModernLV - , 1) все происходит без правки системных файлов 2) пока нет колонок и других особых изысков. На результат работы смотреть тут. Исходники пока не причесаны, будут чуть позже ListViewFramework.7z
  16. 1 балл
    krapotkin

    Фреймворк для стандартного ListView

    Вот и картинки подвезли. Идиотский Deployment отказывается переписывать старые файлы на новые.... Пока полностью не удалил приложение, файл-описание раскладки был старый, без картинок Как видно из заголовка 3000+ итемов с авторасчетом высоты. 6 секунд Крутится плавно... ListViewTest.apk.rar
  17. 1 балл
    ENERGY

    Неверная ширина текста из .Canvas.TextWidth

    Оттого, что ширина текста определяется для шрифта и размера указанного в Canvas, а не для шрифта из компонента. Например, в TLabel.TextSettings.Font и в его TLabel.Canvas.Font размер шрифта будет разный (в Canvas он дефолтный - 12). В FMX компонентах Canvas, кстати, общий и один и тот же - это Canvas формы. Если в OnResize чего-либо, сделать так: Label.Canvas.Font.Size := Label.Font.Size; или Label.Canvas.Font.Assign(Label.Font); (чуть дольше) lRealWidth := Label.Canvas.TextWidth(Label.Text); То размер будет корректный.
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...