Поиск сообщества
Показаны результаты для 'размер приложения'.
Найдено: 2 692 результата
-
Ну а как лучше или правильно для андроида - два приложения одно интерфейс второе обновлячка или же все в одном приложении?
-
Как изменить название приложения, так чтобы оно было из 2-х слов? То есть если у меня проект назван "Project", то и на устройстве будет это название.
-
Неправильная выбранная частота отрисовки. Проблема вашего примера в том, что вы используете совершенно не нужную частоту обновления кадра - 100 кадров в секунду. Частота съёмки в современном телевидении составляет порядка 24-30 кадра в секунду (Википедия). При большей частоте кадра человеческий глаз не сможет физически отличить 24 кадра от например 100 кадров в секунду. Поэтому в вашем случае достаточно для таймера использовать например 30-40 милисекунд, увеличив скорость изменения картинки в 3-4 раза. После этих изменений, я не вижу подтормаживаний. Как минимум этим вы увеличите скорость в 3-4 раза. Не нужно использовать изображения больше, чем того нужно, которые потом автоматически программным путем каждый раз сжимаются в несколько раз. Это опять же сказывается на производительности вашего приложения. Например в вашем случае, вы используете картинку размером 300х400, а сами в конечном итоге используете изображения только размером 50х50. P.S. FireMonkey не позиционируется, как игровой движок. Поэтому, если вы приняли решение все-таки сделать игру, игнорируя рекомендации, то вам придется очень детально обращать свое внимание на вопросы производительности: грамотное использование ресурсов, движение объектов, использования картинок и другие вопросы.
-
TIniFile Как можно сохранить программные настройки приложения?
Brovin Yaroslav ответил 97mik вопрос в iOS
Для хранения настроек приложения можно использовать обычный Ini файл, который работает на всех платформах одинаково. TIniFile - класс для работы с ini файлами. Руководство по использованию TIniFile: Using TIniFile and TMemIniFile -
Если картинка часто используется и она не большая, то лучше ее грузить в память. Операция загрузки картинки из файла дорогостоящая операция, особенно, когда она очень часто используется и изображение очень большое. В вашем случае картинка не большая, поэтому я бы лучше ее загрузил в память и потом использовал в нужных местах. Описание включения и использования своих файлов в пакет приложения доступно здесь: Включение своих файлов в приложение
-
TStyleBook Как использовать один экземпляр TStyleBook для нескольких форм?
7profy опубликовал вопрос в TStyleBook
Возможно ли создать один экземпляр TStyleBook и использовать его для всех форм приложения (в т.ч. динамически создаваемых, диалогов и т.д.) -
Для топикастера: вариант "лечения" в панели управления Nvidia выставить для всей системы или конкретно для Delphi и программы режим. Предпочтительный графический процессор - или Автовыбор или Интегрированное графическое оборудование. Эта песня с непрорисовкой имеет место быть в ноутбуках с гибридными видеосистемами Nvidia. Тянется с xe2, в qc писал с 2011 - 0 реакции. Режим direct2d, при переключении на gdi+ моргание уходит, но появляются другие "радости". Также в самой ide тоже работать нельзя. Это касается HD типа приложения, в 3D канва иногда просто непрорисовывается при размещение контролов на TLayer3d - также постил в qc - бестолку. И это только самые поверхностные (есть еще!) неисправленные баги на отдельно взятой системе, боюсь представить какие будут на других.
-
В 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;
- 7 ответов
-
- TControl
- TSelection
- (и ещё 8 )
-
Чтобы определить установлено ли нужное приложение или нет, нужно воспользовать следующим кодом: 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;
-
Не до конца разобрались. TListBoxItem - это обычные контролы, поэтому они так же допускают вставку других контролов друг в друга. Поэтому, чтобы добавить надпись сбоку, достаточно поместить TLabel внутрь итема, выровнить по правому краю и задать правы отступ (Margins.Right = 10). Так же для такой метки в FireMonkey предусмотрен специальный стиль "listboxitemdetaillabel". Обратите внимание, что таким образом можно разместить любой контрол. Здесь следует четко разделить два подхода: Стилизация итемов. Если у нас лист бокс содержит большое число итемов, то лучше использовать подход с созданием отдельного стиля. Поскольку при прокрутке итемов TListBox выгружает стили для итемов, которые не видны на экране и тем самым экономит память. Однако, для большого числа итемов лучше использовать TListView, так как он адаптирован и оптимизирован для работы с большим количеством итемов. В то время, как TListBox рассчитан для создания небольших меню. Непосредственное создание дополнительных контролов в итеме. Этот подход удобен в своем использовании и рекомендуется для варианта использования TListBox, как небольшое меню приложения. Например у меня по такому рецепту получился вот такой вариант:
-
Приложения FireMonkey для Андроида полностью совместимы с версиями Андроид, начиная с версии 2.3 (GingerBread). Поэтому приложение, собранное с последней версии Android SDK, будет успешно работать и на всех предыдущих версия до 2.3 включительно. Однако, если вы хотите поменять используемую для сборки версию Андроид SDK, это можно сделать в настройках SDK профиля. Меню->Tools->SDK Manager (слева в дереве) Выбираем профиль SDK для андроида и в самом низу в поле SDK API-Level Location меняем путь на путь к другой версии SDK. (смотрите прикрепленный скриншот)
-
Судя по этому вопросу, вы не понимаете в принципе, как организована работа с видео где-либо. Поэтому, глядя на другие приложения, задаете этот вопрос. Нужно понимать следующее: Видео - это файл, который либо непосредственно воспроизводится в проигрывателе, например, в компоненте TMediaPlayer, либо отправляется по сети в виде потока. Опять же в проигрыватель. Поэтому "вставить видео" уже странно. YouTube - это веб сервис, который позволяет пользователям просматривать видео файлы, располагаемые на серверах Гугла. Я не знаю способ доставки видео, это может быть как и потоковая передача файла целиком, или же передача только по кадрам. Видео не встраивают и не вставляют. Встраивают видео проигрыватель, который уже воспроизводит файл. На основании этого уже о вашей задаче: Вы показываете в лист боксе картинку TImage, в котором отображаете скриншот видео плеера или же кадр видео. Затем по нажатию на картинку, вы либо открываете видео плеер и воспроизводите соответственный видео файл. Либо встраиваете проигрыватель прямо в лист бокс и там же опять же воспроизводите видео. Ответы на вопросы использования сервиса YouTube для получения видео файлов нужно искать на сайте YouTube в разделе для разработчиков. P.S. Просьба, подробнее расписывать ваш вопрос, прикладывать скриншоты для демонстрации достигаемого результата.
-
Вся отрисовка выполняется в главном потоке приложения. Поэтому, если вы пытаетесь выполнить скачивание файла в основном потоке, то вся отрисовка приостановится до момента окончания вашей операции. Поэтому правило хорошего тона - это вынесение долгих операций (загрузка, ответ авторизации и тд) в отдельный поток. Примерный код приведен ниже: 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; При таком подходе главный поток не будет блокироваться и будет корректно отрисовываться и работать.
-
Как сделать так, чтобы во время выполнения долговременных операций у меня не "замораживался" интерфейс приложения? Например, я выполняю по сети скачивания большого файла и на время скачивания отображаю индикатор загрузки. Но пока файл полностью не загрузиться индикатор не работает.