Dozent
-
Постов
115 -
Зарегистрирован
-
Посещение
-
Победитель дней
2
Активность репутации
-
Dozent отреагировална Pax Beach в Принудительная ориентация экрана
Я использую принудительную ориентацию экрана на Android устройстве.
Что это означает?
Когда открывается приложение, экран переворачивается в то положение, которое я устанавливаю по умолчанию, или которое было установлено в настройках приложения (состояние читается при запуске приложения).
Приведу пример кода, как я его написал. Здесь что-то лишнее, что-то может стоит доработать.
Есть две проблемы в примере:
1. Чтобы изменить ориентацию экрана, приходится закрывать (уничтожать) приложение, а потом открывать заново.
2. Когда стоит режим ландшафт, то срабатывает автоматический переворот экрана по сенсору, когда поворачиваешь экран на 180 градусов. А когда стоит режим портрет, автоматически экран не переворачивается.
В настройках проекта так:
В Object inspector для главной формы так:
В модуле проекта вот так:
begin Application.Initialize; TAndroidHelper.Activity.getWindow.addFlags (TJWindowManager_LayoutParams.JavaClass.FLAG_KEEP_SCREEN_ON); Application.FormFactor.Orientations := [TFormOrientation.Portrait, TFormOrientation.InvertedPortrait, TFormOrientation.Landscape, TFormOrientation.InvertedLandscape]; Application.CreateForm(TDM, DM); Application.CreateForm(TfmMain, fmMain); VKAutoShowMode := TVKAutoShowMode.Always; Application.Run; end.
В модуле главной формы:
procedure TfmMain.FormShow(Sender: TObject); begin if DM.setOrientation(TAndroidHelper.Activity) then Invalidate; end;
В дата-модуле вот так:
function TDM.setOrientation(Activity: JActivity): boolean; var orient: Integer; begin result := False; if DM.GetSettingsBoolean('IsOrientationLandshaft', true) then orient := TJActivityInfo.JavaClass.SCREEN_ORIENTATION_SENSOR_LANDSCAPE else orient := TJActivityInfo.JavaClass.SCREEN_ORIENTATION_SENSOR_PORTRAIT; try if Activity.getRequestedOrientation <> orient then begin Activity.setRequestedOrientation(orient); result := true; end; except result := False; end; end;
-
Dozent получил реакцию от Error в В продолжения темы растягивания видео по контролу
Кажется я разобрался) Проблем была в том что я веду разработку на ноуте) Есть свои особености резрешения и экрана))
-
Dozent отреагировална enatechno в Создать в рантайме перетаскиваемый компонент
procedure TForm1.Label7Click(Sender: TObject); var Phase: TCalloutRectangle; begin Phase := crtPhase.Clone(ScrollBox1) as TCalloutRectangle; Phase.OnMouseDown := crtPhaseMouseDown; Phase.OnMouseMove := crtPhaseMouseMove; Phase.Parent := ScrollBox1; Phase.Position.X := crtPhase.Position.X + 10; Phase.Position.Y := crtPhase.Position.Y + 10; Phase.Visible := true; end; Замените у себя эту процедуру и удалите Button1 (как я и сказал выше, TButton не является TShape - поэтому и ошибка).
-
Dozent получил реакцию от Alex Bozhko в При изменении размеров или положения компонентов на форме всё проподает
Знаете! Я снял галки в Multi-Device Preview с Айфон 4 и Айфон5 ни чего не закрывал и проблема пока не появляется))) Если появится я попробую ваш совет
-
Dozent получил реакцию от zairkz в При изменении размеров или положения компонентов на форме всё проподает
Знаете! Я снял галки в Multi-Device Preview с Айфон 4 и Айфон5 ни чего не закрывал и проблема пока не появляется))) Если появится я попробую ваш совет
-
Dozent отреагировална Brovin Yaroslav в Почему не изменяется Font.Style и Font.Size?
Label1.StyledSettings := Label1.StyledSettings - [TStyledSetting.Size]; В FireMonkey все, что отвечает за визуальную часть (отображение контрола) обычно выносится в стиль. Однако, не всегда удобно создавать новый стиль, только, когда нужно, например, поменять размер шрифта в TLabel. Поэтому, чтобы позволить пользователям удобно менять такие настройки, как шрифт. Шрифт выделен в отдельное свойство TLabel.Font. При выделении шрифта отдельным свойством, нужно понимать, что при таком подходе контрол "не знает", откуда ему брать шрифт: то ли из свойства, то ли из стиля.
Поэтому, чтобы контрол знал, откуда ему брать шрифт для отображения: из стиля или из свойства Font, введено свойство TLabel.StyledSetting. Которое говорит контролу, какие характеристики шрифта нужно брать из стиля, а какие можно взять из свойства TLabel.Font. По умолчанию, StyledSettings настроены так, что все берется из стиля. В вашем случае, нужно сбросить галку напротив значения ssSize и ssFont.
Подробная информация есть на Embarcadero Doc Wiki: http://docwiki.embarcadero.com/RADStudio/XE5/en/Setting_Text_Parameters_in_FireMonkey
-
Dozent получил реакцию от Dai12lDymn1 в Кнопка с рисунком
Добрый день!
Создал в палитре стилей кнопку с картинкой!
Указал у кнопки этот стиль в свойстве StyleLookup.
Как мне теперь картинку туда положить?
-
Dozent получил реакцию от Kitty в Не воспроизводится видео
Андрей, не это я не вам Абсолютно, а девушке у которой всё работает) А Вам вообще отдельное спасибо за ваш блог!!! Много там нужного и полезно, а с проблемой я справился!!!
Я по своей невнимательности забыл что вертикальная палка это операция или и почему-то влупил AND
Всё работает, простите меня за не внимательность....
procedure TForm1.Play(const sFileName: string); var PackageName: Jstring; ActiveManager: JActivityManager; sFile, exe: string; Intent: JIntent; Data: Jnet_Uri; begin try sFile := sFileName; // MX player: https://sites.google.com/site/mxvpen/api PackageName := StringToJString('com.mxtech.videoplayer.ad'); ActiveManager := GetActivityManager(); ActiveManager.killBackgroundProcesses(PackageName); // exe := System.IOUtils.TPath.GetExtension(sFile); Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW); Data := StrToJURI(sFile); Intent.setDataAndType(Data, StringToJString(PWideChar('video/') + exe)); Intent.setPackage(PackageName); { Intent.putExtra(StringToJString('end_by'), StringToJString('user')); https://github.com/NineWorlds/serenity-android/issues/134 http://stackoverflow.com/questions/22408413/how-to-stop-android-mx-player-on-back-pressed } Intent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_CLEAR_TOP or TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK or TJIntent.JavaClass.FLAG_ACTIVITY_NO_HISTORY); SharedActivity().startActivity(Intent); finally end; end; -
Dozent получил реакцию от Andrey Efimov в Не воспроизводится видео
Андрей, не это я не вам Абсолютно, а девушке у которой всё работает) А Вам вообще отдельное спасибо за ваш блог!!! Много там нужного и полезно, а с проблемой я справился!!!
Я по своей невнимательности забыл что вертикальная палка это операция или и почему-то влупил AND
Всё работает, простите меня за не внимательность....
procedure TForm1.Play(const sFileName: string); var PackageName: Jstring; ActiveManager: JActivityManager; sFile, exe: string; Intent: JIntent; Data: Jnet_Uri; begin try sFile := sFileName; // MX player: https://sites.google.com/site/mxvpen/api PackageName := StringToJString('com.mxtech.videoplayer.ad'); ActiveManager := GetActivityManager(); ActiveManager.killBackgroundProcesses(PackageName); // exe := System.IOUtils.TPath.GetExtension(sFile); Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW); Data := StrToJURI(sFile); Intent.setDataAndType(Data, StringToJString(PWideChar('video/') + exe)); Intent.setPackage(PackageName); { Intent.putExtra(StringToJString('end_by'), StringToJString('user')); https://github.com/NineWorlds/serenity-android/issues/134 http://stackoverflow.com/questions/22408413/how-to-stop-android-mx-player-on-back-pressed } Intent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_CLEAR_TOP or TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK or TJIntent.JavaClass.FLAG_ACTIVITY_NO_HISTORY); SharedActivity().startActivity(Intent); finally end; end; -
Dozent отреагировална d7d1cd в Вызов клавиатуры в Windows 8-8.1
Хабр Вам в помощь! http://habrahabr.ru/company/intel/blog/163333/
-
Dozent отреагировална estra в Не срабатывают точки останова при отладке на Андроид устройстве
Здравствуйте, Ярослав.
Хотел написать это через ЛС, но почему-то они вам не отправляются, по-этому напишу здесь.
С учетом высокой актуальности данной темы, не могли бы вы создать какой нибудь раздел (создать пост, написать статью) где во-первых были бы перечислены устройства, на которых отладка гарантированно работает (исходя из опыта и тестов разработчиков), и во-вторых был бы как можно более подробный анализ возможных причин этой проблемы и способов их устранения (описанное в данном посте не помогает)?
-
Dozent отреагировална estra в Почему отладчик показывает значение вещественной переменной типа Single, не 0.3, а 0.3000000001192029?
так и должно быть.
Обрезать? смотря для чего. Для представления в виде строки может и нужно будет. Вот код, поэкспериментируйте с 2 последними цифрами:
var a: Double = 0.300000011920929; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage( FloatToStrF( a, TFloatFormat.ffFixed, 4, 2 ) ); end; > В райнтайме отображается 0,3!
Посмотрите какое значение указано в параметре DecimalDigits
-
Dozent получил реакцию от Brovin Yaroslav в [TFDQuery] Получение выходных параметров из хранимки FireBird
Можно закрыть RETURNING Unified Support (FireDAC)
-
Dozent отреагировална AngryOwl в Xe6 глюки TLang
Не хочется "никого" обижать)), но TLang - самый глючный компонент из всех с чем мне приходилось иметь дело. Тут, на счет "эмоций", я с Вами полностью согласен.
Поэтому - рекомендую либо самому писать, либо искать адекватное стороннее решение.
На публикацию своего решения у меня пока, к сожалению, нет времени. Как только появится время для того чтобы его оформить в виде компонента и библиотеки - обязательно сделаю и выложу в свободный доступ.
P.S. Свое решение основано на простых текстовых INI-файлах. Работает везде, в т.ч. и на мобильниках, и очень быстро. Над удобством стоит конечно поработать, но в текущий момент меня собственное решение более чем устраивает.
-
Dozent получил реакцию от Nix0N в [Windows] Полученный файл записи с микрофона не звучит при воспроизведении. В чем причина?
Доброй ночи, проблему решил! Зашёл в "Устройства воспроизведения" и удалил не используемые!
Первым был микрофон который не использовался, вторым тот что работал, возможно я ошибаюсь, но похоже получается что берётся первый из списка микрофон, а не тот что по умолчанию!
Но проблема решена всё пишет!
-
Dozent получил реакцию от brunnengi в [Windows] Полученный файл записи с микрофона не звучит при воспроизведении. В чем причина?
Доброй ночи, проблему решил! Зашёл в "Устройства воспроизведения" и удалил не используемые!
Первым был микрофон который не использовался, вторым тот что работал, возможно я ошибаюсь, но похоже получается что берётся первый из списка микрофон, а не тот что по умолчанию!
Но проблема решена всё пишет!