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

Поиск сообщества

Показаны результаты для 'размер приложения'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Общие вопросы
    • Анимация
    • Графика
    • Стили
    • Базы данных и REST
    • Компоненты
    • Положение, размеры, выравнивание
    • Работа с текстом
    • Приложение и формы
    • Отладка
    • Развертывание приложений
    • Вопросы по языку Object Pascal и RTL
    • Общая информация о TControl
    • События
    • Прочие вопросы
  • Вопросы по платформам
    • Android
    • iOS
    • OSX
    • Windows
    • Windows Phone
    • Linux
  • Вопросы по использованию RAD Studio
    • Лицензирование
    • Сборка проектов
    • Multi-Device Designer
    • Редактор кода
    • Вопросы
  • Обучение
    • Основная информация
    • Вопросы
    • Отзывы
  • Поиск специалистов по FireMonkey
    • Консультации
    • Ищу подрядчика
  • Дополнительные ресурсы по FireMonkey
    • Сторонние компоненты
    • Приложения, написанные с использованием FireMonkey
    • Примеры
    • Руководства
    • Шаблоны
    • Статьи и заметки
    • Информация о версиях RAD Studio
    • Новости
  • Организация работы данного форума

Поиск результатов в...

Поиск контента, содержащего...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Регистрация

  • Начало

    Конец


Группа


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


StackOverflow


Защита от ботов


Город


Интересы

  1. Ну а как лучше или правильно для андроида - два приложения одно интерфейс второе обновлячка или же все в одном приложении?
  2. Столкнулся с проблемой, как ни странно, но после перезагрузки ПК запустив приложение, отказалось загружаться изображение из галереи в TImage Для своего приложения Android просто переделал пример CameraRoll Пожалуйста дайте совет в чем может быть проблема?
  3. Как изменить название приложения, так чтобы оно было из 2-х слов? То есть если у меня проект назван "Project", то и на устройстве будет это название.
  4. Автор: Павел Литвинко Обзорная статья: http://blogs.embarcadero.com/vsevolodleonov/2014/01/31/appfactory1/ Видео обзор (Rus): http://www.youtube.com/watch?v=6Tahytk_QUM Видео обзор (En): http://www.youtube.com/watch?v=xVUhMAJquw8 Ссылки на приложения: AppFactory, AppProducts
  5. Неправильная выбранная частота отрисовки. Проблема вашего примера в том, что вы используете совершенно не нужную частоту обновления кадра - 100 кадров в секунду. Частота съёмки в современном телевидении составляет порядка 24-30 кадра в секунду (Википедия). При большей частоте кадра человеческий глаз не сможет физически отличить 24 кадра от например 100 кадров в секунду. Поэтому в вашем случае достаточно для таймера использовать например 30-40 милисекунд, увеличив скорость изменения картинки в 3-4 раза. После этих изменений, я не вижу подтормаживаний. Как минимум этим вы увеличите скорость в 3-4 раза. Не нужно использовать изображения больше, чем того нужно, которые потом автоматически программным путем каждый раз сжимаются в несколько раз. Это опять же сказывается на производительности вашего приложения. Например в вашем случае, вы используете картинку размером 300х400, а сами в конечном итоге используете изображения только размером 50х50. P.S. FireMonkey не позиционируется, как игровой движок. Поэтому, если вы приняли решение все-таки сделать игру, игнорируя рекомендации, то вам придется очень детально обращать свое внимание на вопросы производительности: грамотное использование ресурсов, движение объектов, использования картинок и другие вопросы.
  6. Для хранения настроек приложения можно использовать обычный Ini файл, который работает на всех платформах одинаково. TIniFile - класс для работы с ini файлами. Руководство по использованию TIniFile: Using TIniFile and TMemIniFile
  7. Если картинка часто используется и она не большая, то лучше ее грузить в память. Операция загрузки картинки из файла дорогостоящая операция, особенно, когда она очень часто используется и изображение очень большое. В вашем случае картинка не большая, поэтому я бы лучше ее загрузил в память и потом использовал в нужных местах. Описание включения и использования своих файлов в пакет приложения доступно здесь: Включение своих файлов в приложение
  8. Возможно ли создать один экземпляр TStyleBook и использовать его для всех форм приложения (в т.ч. динамически создаваемых, диалогов и т.д.)
  9. После запуска приложения. В любом месте на форме запрашиваем класс канвы: Canvas.ClassName Далее по классу определяем канву: TCanvasD2D - Direct 2D (Win) TCanvasGdiPlus - GDI + (Win) TCanvasGpu - GPU (Все платормы) TCanvasQuartz - Quartz (iOS, OSX)
  10. Для топикастера: вариант "лечения" в панели управления Nvidia выставить для всей системы или конкретно для Delphi и программы режим. Предпочтительный графический процессор - или Автовыбор или Интегрированное графическое оборудование. Эта песня с непрорисовкой имеет место быть в ноутбуках с гибридными видеосистемами Nvidia. Тянется с xe2, в qc писал с 2011 - 0 реакции. Режим direct2d, при переключении на gdi+ моргание уходит, но появляются другие "радости". Также в самой ide тоже работать нельзя. Это касается HD типа приложения, в 3D канва иногда просто непрорисовывается при размещение контролов на TLayer3d - также постил в qc - бестолку. И это только самые поверхностные (есть еще!) неисправленные баги на отдельно взятой системе, боюсь представить какие будут на других.
  11. В 2D приложения третья ось не учитывается, поэтому можете в конструкторе указать, что она равна 0. MoveVector := TVector.Create(X - FStartPos.X, Y - FStartPos.Y, 0); Либо вместо TVector использовать TPointF. В этом случае нужно будет заменить вызовы: DraggableImage.LocalToAbsoluteVector(MoveVector); DraggableImage.ParentControl.AbsoluteToLocalVector(MoveVector); на DraggableImage.LocalToAbsolute(MovePoint); DraggableImage.ParentControl.AbsoluteToLocal(MovePoint); Где MovePoint: TPointF;
  12. Чтобы определить установлено ли нужное приложение или нет, нужно воспользовать следующим кодом: uses FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText; function IsAppInstalled(const AAppName: string): Boolean; var PackageManager: JPackageManager; begin PackageManager := SharedActivity.getPackageManager; try PackageManager.getPackageInfo(StringToJString(AAppName), TJPackageManager.JavaClass.GET_ACTIVITIES); Result := True; except on Ex: Exception do Result := False; end; end; В качестве параметра указываем полный путь к пакету приложения. При этом сам вызов использования может быть таким для проверки: "Установлено ли приложение com.embarcadero.Project12 или нет?": procedure TForm1.Button1Click(Sender: TObject); begin Label1.Text := BoolToStr(IsAppInstalled('com.embarcadero.Project12'), True); end;
  13. Не до конца разобрались. TListBoxItem - это обычные контролы, поэтому они так же допускают вставку других контролов друг в друга. Поэтому, чтобы добавить надпись сбоку, достаточно поместить TLabel внутрь итема, выровнить по правому краю и задать правы отступ (Margins.Right = 10). Так же для такой метки в FireMonkey предусмотрен специальный стиль "listboxitemdetaillabel". Обратите внимание, что таким образом можно разместить любой контрол. Здесь следует четко разделить два подхода: Стилизация итемов. Если у нас лист бокс содержит большое число итемов, то лучше использовать подход с созданием отдельного стиля. Поскольку при прокрутке итемов TListBox выгружает стили для итемов, которые не видны на экране и тем самым экономит память. Однако, для большого числа итемов лучше использовать TListView, так как он адаптирован и оптимизирован для работы с большим количеством итемов. В то время, как TListBox рассчитан для создания небольших меню. Непосредственное создание дополнительных контролов в итеме. Этот подход удобен в своем использовании и рекомендуется для варианта использования TListBox, как небольшое меню приложения. Например у меня по такому рецепту получился вот такой вариант:
  14. Приложения FireMonkey для Андроида полностью совместимы с версиями Андроид, начиная с версии 2.3 (GingerBread). Поэтому приложение, собранное с последней версии Android SDK, будет успешно работать и на всех предыдущих версия до 2.3 включительно. Однако, если вы хотите поменять используемую для сборки версию Андроид SDK, это можно сделать в настройках SDK профиля. Меню->Tools->SDK Manager (слева в дереве) Выбираем профиль SDK для андроида и в самом низу в поле SDK API-Level Location меняем путь на путь к другой версии SDK. (смотрите прикрепленный скриншот)
  15. Судя по этому вопросу, вы не понимаете в принципе, как организована работа с видео где-либо. Поэтому, глядя на другие приложения, задаете этот вопрос. Нужно понимать следующее: Видео - это файл, который либо непосредственно воспроизводится в проигрывателе, например, в компоненте TMediaPlayer, либо отправляется по сети в виде потока. Опять же в проигрыватель. Поэтому "вставить видео" уже странно. YouTube - это веб сервис, который позволяет пользователям просматривать видео файлы, располагаемые на серверах Гугла. Я не знаю способ доставки видео, это может быть как и потоковая передача файла целиком, или же передача только по кадрам. Видео не встраивают и не вставляют. Встраивают видео проигрыватель, который уже воспроизводит файл. На основании этого уже о вашей задаче: Вы показываете в лист боксе картинку TImage, в котором отображаете скриншот видео плеера или же кадр видео. Затем по нажатию на картинку, вы либо открываете видео плеер и воспроизводите соответственный видео файл. Либо встраиваете проигрыватель прямо в лист бокс и там же опять же воспроизводите видео. Ответы на вопросы использования сервиса YouTube для получения видео файлов нужно искать на сайте YouTube в разделе для разработчиков. P.S. Просьба, подробнее расписывать ваш вопрос, прикладывать скриншоты для демонстрации достигаемого результата.
  16. Вся отрисовка выполняется в главном потоке приложения. Поэтому, если вы пытаетесь выполнить скачивание файла в основном потоке, то вся отрисовка приостановится до момента окончания вашей операции. Поэтому правило хорошего тона - это вынесение долгих операций (загрузка, ответ авторизации и тд) в отдельный поток. Примерный код приведен ниже: 1. Создаем отдельный поток, в котором вы будите скачивать файл (я поставил для эмуляции скачивания просто паузу на 5 секунд): type TMyTask = class (TThread) protected FOnTaskStarted: TThreadMethod; FOnTaskFinished: TThreadMethod; procedure DoStarted; procedure DoFinished; procedure Execute; override; public property OnTaskStarted: TThreadMethod read FOnTaskStarted write FOnTaskStarted; property OnTaskFinished: TThreadMethod read FOnTaskFinished write FOnTaskFinished; end; Реализация: { TMyTask } procedure TMyTask.DoFinished; begin if Assigned(OnTaskFinished) then OnTaskFinished; end; procedure TMyTask.DoStarted; begin if Assigned(OnTaskStarted) then OnTaskStarted; end; procedure TMyTask.Execute; begin Synchronize(DoStarted); try Sleep(5000); // Эмуляция выполнения 5 Секундной задачи finally Synchronize(DoFinished); end; end; Само использование такого потока будет следующим (в моем примере после выполнения операции, появится сообщение): TForm3 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private FMyTask: TMyTask; public procedure DoTaskStarted; // Callback, вызываемый в начале старта операции procedure DoTaskFinished; // Callback, вызываемый в конце выполнения операции. Аналог OnTerminate procedure StartMyTask; // Запуск задачи end; procedure TForm3.Button1Click(Sender: TObject); begin StartMyTask; end; procedure TForm3.DoTaskStarted; begin end; procedure TForm3.DoTaskFinished; begin ShowMessage('Выполнение задачи окончено'); end; procedure TForm3.StartMyTask; begin if FMyTask <> nil then begin FMyTasl.OnTaskStarted := nil; FMyTasl.OnTaskFinished := nil; FMyTask.Free; end; FMyTask := TMyTask.Create(True); FMyTask.OnTaskStarted := DoTaskStarted; FMyTask.OnTaskFinished := DoTaskFinished; FMyTask.Start; end; При таком подходе главный поток не будет блокироваться и будет корректно отрисовываться и работать.
  17. Как сделать так, чтобы во время выполнения долговременных операций у меня не "замораживался" интерфейс приложения? Например, я выполняю по сети скачивания большого файла и на время скачивания отображаю индикатор загрузки. Но пока файл полностью не загрузиться индикатор не работает.
×
×
  • Создать...