Перейти к содержанию
Fire Monkey от А до Я

Лидеры

  1. ENERGY

    ENERGY

    Пользователи


    • Баллы

      7

    • Постов

      568


  2. sinuke

    sinuke

    Пользователи


    • Баллы

      6

    • Постов

      190


  3. Равиль Зарипов (ZuBy)

    Равиль Зарипов (ZuBy)

    Модераторы


    • Баллы

      3

    • Постов

      2 517


  4. FREEFAR

    FREEFAR

    Пользователи


    • Баллы

      3

    • Постов

      255


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

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

  1. С помощью маски можно любую форму.TBitmap.CreateFromBitmapAndMask(). В результате получим изображение с прозрачностью, в данном случае звезда и прозрачный фон. procedure TForm1.Button1Click(Sender: TObject); var ImageRes: TResourceStream; Result: TBitmap; tmpMS : TMemoryStream; begin ImageRes := TResourceStream.Create(HInstance, 'IMAGE', RT_RCDATA); try Image1.Bitmap.CreateFromStream(ImageRes); Image2.Bitmap.LoadFromFile('c:\temp\MaskedBitmap\Images\Mask.png'); Result := TBitmap.Create; Result.CreateFromBitmapAndMask(Image1.Bitmap, Image2.Bitmap); // applying alpha channel to Bitmap - workaround. If you can improve write here how tmpMS := TMemoryStream.Create; Result.SaveToStream(tmpMS); Result.LoadFromStream(tmpMS); tmpMS.Free; Image3.Bitmap.Assign(Result); finally ImageRes.Free; Result.Free; end; end; MaskedBitmap.zip
    6 баллов
  2. продублирую сюда свое "исследование"
    2 балла
  3. Про память возможно и не точно. Я в чатике проводил "исследование" месяца 1,5 назад...
    2 балла
  4. Очередные холивары из разряда "мои проблемы никто не хочет решить за меня, значит Delphi плохой инструмент, давайте все перейдем в другую песочницу...". Минусы FMX есть и будут, от этого никуда не денешься, но в последнее время весь soft и продукты катятся в яму с кучей bugs даже от крупных компаний и корпораций даже спустя многие releases. Если на то пошло, то предлагаю все "невозможные" фишки периодически добавлять в первый пост и прикреплять решения, если они существуют. Проблемы FMX в следующем: Жесткая привязка к версии SDK, возможно сделано целенаправленно, чтобы пользователи обновляли лицензии год за годом. Позволяет разработчику не углубляться в особенности операционной системы, и не меняя мышления клепать свой "первоклассно рабочий VCL стиль" код и тонны компонентов под все платформы. Пропаганда "возьмите свой старый код и сделайте мобильное приложение" - маркетологи, вы в своем уме? Отсутствие достойных плагинов для IDE. Тот же Cn Wizard давно пора включить по дефолту. Неужели сложно добавить плагин для создания wrappers для java классов сразу в IDE? Разве сложно загрузить приложение прямо в маркет без ручного копирования? Отсутствует редактор manifest, plist как таковой. Вспоминается анекдот про танк и "доработать напильником". Многие достойные вещи делаются на голом энтузиазме сообществом, но почему-то только спустя много-много времени внедряются в коробку. Отсутствует нормальный debug на мобильных платформах, логами все не покроешь. Ограничения в ARM процессорах. Желание все хранить в .fmx, .dfm файлах, а не ссылками в ресурсы, как это принято в мобильной разработке. Это конечно обходится написанием своих менеджеров, но неужели сложно это продумать из коробки? Такое чувство, что пытаемся охватить как можно больше платформ по чуть чуть, чтобы кому-нибудь впарить свой продукт, а уже потом будем думать, как выкручиваться. FMX Canvas - ахиллесова пята. Не смотря на все это FMX является очень мощным инструментом и крайне приятным в умелых руках, если вы любите напильник (или мазохист). Средне статические проекты можно реализовывать не боясь, но для более серьезных вещей понадобятся знания нативной разработки, без этого никак. Если заказчик начинает разговор "я хочу такое, как в том-то приложении..." - значит без написания своей обертки или исправления исходников не обойдешься. FMX в последнее время активно развивается и спустя Х лет все будет у нас превосходно, просто не бегите за новыми версиями, а подождите Update 3 или используйте предыдущую версию (Berlin Update 2 все еще в соку). Другие кросплатформенные frameworks (Xamarin, Reac Native, RemObject, Native script, другие) тоже не лишены недостатков, но там слегка другие концепции и другая аудитория, кто лучше - покажет лишь время.
    2 балла
  5. Как создавать это вью или как им созданным пользоваться? Если создавать - то создаете разметку в xml, деплоете ее в layouts. Примеров в интернете можно кучу найти. Остальное - в другие папки. В общем, получится во так. Здесь задеплоено 3 файла - картинка res/drawable/myicon.png, res/drawable/border.xml - прямоугольник подложки и res/layouts/toast.xml - сам lauoyt. toast.xml ("-- " - комментарии, удалить надо будет). Текст, картинки и прочее можем сразу указать в разметке, и грузить автоматически. Но всегда сможем поменять в коде border.xml Думаю, тут все понятно. Примитив может быть любой. И формируем тост: //uses FMX.Helpers.Android, AndroidApi.Helpers, AndroidApi.JNI.GraphicsContentViewText, Androidapi.JNI.Widget var Toast: JToast; InfObj: JObject; Inflater: JLayoutInflater; View: JView; Text: JTextView; begin InfObj := TAndroidHelper.Context.getSystemService (TJContext.JavaClass.LAYOUT_INFLATER_SERVICE); Inflater := TJLayoutInflater.Wrap((InfObj as ILocalObject).GetObjectID); View := TJView.JavaClass.init(TAndroidHelper.Context); View := Inflater.inflate(TAndroidHelper.Context.getResources() .getIdentifier(StringToJString('layout/toast'), StringToJString('layout'), TAndroidHelper.Context.getPackageName), nil); //Грузим из ресурсов. Второе значение всегда nil Text := TJTextView.Wrap ((View.findViewById(TAndroidHelper.Context.getResources() .getIdentifier(StringToJString('id/toastText'), StringToJString('id'), TAndroidHelper.Context.getPackageName)) as ILocalObject).GetObjectID); // Так ищем элементы разметки, если надо свои значения поставить. Так же могли и поменять картинку(id/toastImage), подложку и т.д. Text.setText(StrToJCharSequence('Привет, х11! Я нативный Toast!' + #13 + 'Сегодня пишем на Pascal')); //Устанавливаем свое значение. CallInUIThreadAndWaitFinishing( //В сервисе запускаем без этого, отключаем FMX.Helpers.Android - только его, GraphicsContentViewText к графике, которая ломает сервис, отношения не имеет. procedure begin Toast := TJToast.JavaClass.init(TAndroidHelper.Context); Toast.setView(View); // Своя вьюшка Toast.setDuration(TJToast.JavaClass.LENGTH_LONG); //Константа. Свое значение не пройдет Toast.Show; //Показываем end); end; Ну и все в принципе. Сложного, считаю, 0. А что не понятно, яндекс показывает, глаза разбегаются.
    1 балл
  6. ну я ж не виноват, что ЛВ такой удачный и быстрый)) ну а по поводу АС... ну уже начал ковырять. посмотрим что из этого выйдет ))
    1 балл
  7. Выполняйте oItem.Adapter.ResetView(oItem) в OnScrollViewChange по мере необходимости. Вначале для всех видимых + еще пару экранов вниз. При прокрутке повторяем.
    1 балл
  8. Да, забыл добавть, в константе ConstGCMAppID должен лежать ваш идентификатор отправителя (только циферки), к примеру 904067404541
    1 балл
  9. Равиль, безмерно благодарен за ZMaterial. Они очень помогли сделать интерфейсы более красивыми. Вот с ModernLV пока не подружился, но понимаю что без него не обойдется
    1 балл
  10. Сравнивать RAD надо не с нативными студиями разработки, а с Xamarin, например, там вообще тихий ужас... Есть 1С:Мобильная платформа, там тоже можно собирать под Android, iOS - правда все в желтом цвете (про toolbar), но знаю людей, кто на этом столько денег заработал, что авторы нативных приложений и не видели еще... Дело в направленности приложений и ДА, некоторые типы приложений (например, корпоративные) делаются быстрее. Не надо рисовать виджет погоды на Delphi, не надо делать путеводитель по сортам кофе на Delphi. Делайте это нативными инструментами. Востребованность в кроссплатформе есть и эта тенденция будет только усиливаться. Сейчас это напоминает мне разговор в 1998 году о том, что все ПО под Windows надо писать на C++, потому что на других языках - НЕ НАТИВНО, МЕДЛЕННО РАБОТАЕТ, ПОДВИСАЕТ! А потом, я пришел в одну контору и руководство провозгласило: ТОРМОЗИТ? Добавьте Гигагерц и ОЗУ - это дешевле и быстрее, нежели переписывать на нативных языках! Так вот, со временем так же будет и с мобилами! и уже очень скоро! НЕ РАБОТАЕТ НА КИТАЙСКИХ СМАРТФОНАХ? выбросьте их и купите уже нормальные аппараты! это дешевле, нежели платить Kotlin разрабу!
    1 балл
  11. http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Using_an_HTTP_Client NetHTTPClient1.ProxySettings := TProxySettings.Create('192.168.1.1', 8080, 'MyUserName', 'MyPassword');
    1 балл
  12. Про красиво - вот наш прототип. Более менее UFriendly
    1 балл
  13. Если, главный модератор и разработчик, Равиль Зарипов, говорит, что у дельфи нет будущего и надо уходить с Дельфи. То это диагноз FMX на сегодняшний день. Грустно...
    1 балл
  14. Нет как раз таки. Berlin Update 2 более стабильный и там меньше багов FMX чем в Tokyo. В Токио от одного бага со сменой главного потока целая эпопея, с потерей производительности и проблем с анимацией - много что посыпалось. Была, а может еще и будет. Некоторые программисты с форума EMBT вообще считают Токио самой неудачной версией Delphi, в плане багов за всю ее историю.
    1 балл
  15. Не обманывай людей . Это что: procedure onReceivePermissionsResult(const ASender: TObject; const AMessage: TMessage); ?
    1 балл
  16. Вот поэтому нужно валить с делфи, если хотите и дальше писать под андроид. Нам нельзя повышать СДК (андроид 6.0+ запрашивает разрешения в рантайм, чего мы не можем делать, хотя есть костыль у Андрея Ефимова)
    1 балл
  17. Вопрос не в том, что можно или не можно принципиально сделать, а в том на сколько это потом будет работать у пользователя. Так вот например в текущей версии (10.2.2) можно добиться, что установленное с помощью шнура и adb приложение будет работать стабильно. Но потом берём удаляем это приложение через диспетчер, ставим этот же apk и получаем крэш на старте в дебрях fmx. Очищаем данные с помощью кнопки в диспетчере приложений, и прога (о чудо!) работает без сбоев. Вот подобные проблемы сводят на нет все старания. Когда у вас на отладочных телефонах всё работает нормально, а в плей марките вам единицы ставят да ещё и в отзывах ругают.
    1 балл
  18. Например так uses FMX.Ani Frame.Position.X := clientWidth; TAnimator.AnimateFloat(Frame, 'Position.X', 0, 0.2); ну понятно что предварительно этот фрей привести к росту/весу основных окон или вписанных областей
    1 балл
  19. sinuke

    Монетизация TBannerAd

    считать можно. там вроде есть событие onClick - там и можно считать. но за клик никаких баллов (пусть и внутри только приложения) начислять нельзя - это прямо противоречит правилам программы AdSense и AdMob. за это забанят пожизненно и никакая апелляция не поможет. плюс могу забанить за недействительные клики, когда с одного устройства будет много кликов (накрутка). даже если это сделает ваш конкурент - вас могут забанить. забанить могут даже за частые показы на одном и том же устройстве. поэтому показ и клики нужно продумать - допустим не более 10 показов и не более 5 кликов за сеанс. Нужно себя обезопасить, чтобы потом можно было доказать Гуглу, что вы настроены на честный зароботок п.с. в AdMob есть видеореклама с вознаграждением. вот за просмотр (!) этой рекламы можно будет начислять какие-то баллы. но TBannerAd ее не поддерживает (как и модуль, который тут есть для межстраничной рекламы)
    1 балл
  20. использовать TMultiView с режимом Custom + FMX.MultiView.CustomPresentation.pas смотреть демо пример кинуть на этот MultiView edit и кнопку, готово
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...