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

Andrey Efimov

Модераторы
  • Постов

    851
  • Зарегистрирован

  • Победитель дней

    129

Весь контент Andrey Efimov

  1. Пересчёт? Ну так и делайте его там, где вам это необходимо. Мне не очень понятна задача... Если спроектировать интерфейс на TLayout'ах, то компоненты на панели, будут сами изменять размер, положение в зависимости от размера родителя (TPanel или другого компонента или TFrame и т.п.). Если вы об этом конечно... Mobile Tutorial: Using Layout to Adjust Different Form Sizes or Orientations (iOS and Android) FireMonkey Layouts Strategies Tutorial: Using FireMonkey Layouts
  2. Получится один classes.dex. Такой задачи у меня ещё не было, поэтому только теория: Варианты: 1) Пишем два класса, наследника от BroadcastReceiver. Прописываем в манифесте, один будет реагировать на перезагрузку, другой на время. По очереди, клеим к основному файлу classes.dex от приложения. Т.е. приклеили 1 раз, у нас получился 1 classes.dex, далее клеим к нему след. класс. 2) Пишем один класс, который будет отрабатывать за два. Суть в том, чтобы отслеживать Action внутри OnReceive. Клеим его, а вот генерация интента уже будет отличаться. Это в теории .
  3. А вот ещё, проверьте, файл classes.dex от приложения вы сгенерили? А то он у вас пишет, что не может найти его... Да, там с версиями косяк какой-то, уже далеко не первый раз пишут мне с такой проблемой, но пока всем помогало добавление строки "-source 1.7 -target 1.7". Причём ошибки у всех разные, но эта магическая строчка спасает
  4. Это обычный варнинг, не обращайте на него внимания. Ошибка исчезла? Файлы сгенерились?
  5. 1) Откройте bat файл 2) найдите строку, которая начинается на "javac" (примерно 19) если файл из статьи, то выглядит вот так: javac %VERBOSE_FLAG% -Xlint:deprecation и т.д. замените на javac -source 1.7 -target 1.7 %VERBOSE_FLAG% -Xlint:deprecation Если не получится, то замените цифры на 1.6. (т.е. вам надо добавить -source 1.7 -target 1.7 сразу после javac) 3) Отпишитесь о результате.
  6. Прикладывайте к таким сообщениям скрины. Планшеты есть не у всех. Можно попробовать покрасить форму в чёрный цвет, на форму кинуть, например, TPanel (или TRectangle) с необходимыми размерами, выравниванием по центру и уже в него вставлять все остальные компоненты.
  7. В далёком 2013 переводил эту заметку, читать тут: Создание выпадающего меню в приложении на Android
  8. Посмотрите пример по вашей задаче: C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\Object Pascal\Multi-Device Samples\User Interface\Forms
  9. На Андроиде, главная форма всегда растягивается на весь экран (если точнее, то на размеры Активити), задать ей определённый размер нельзя.
  10. if Ord(KeyChar) = vkSpace then Memo1.Lines.Add('Пробел') или if KeyChar = ' ' then Memo1.Lines.Add('Пробел') Проверил на всякий случай, работает отлично.
  11. [Статья][Android] AlarmManager - Автозапуск приложения в назначенное время
  12. Правило: Обращение к любому визуальному компоненту в потоке только через TThread.Synchronize
  13. Например, можно использовать TNetHTTPClient и свойство Asynchronous.
  14. Спасибо, Ярослав уже знает о проблеме.
  15. Повторяю, пользуйтесь поиском и вообще смотрите соседние темы в разделе, перед тем как задать вопрос. Все начальные вопросы уже обсуждались. Поиск -> "не меняется высота" -> результат - ничего сложного... [TEdit] [Android] Можно ли изменить высоту TEdit?
  16. В меню Project -> Deployment -> Кликаем по иконке «Диск и стрелочка» (подписана как «Deploy»)
  17. Если грубо, то примерно вот так: uses Androidapi.JNI.App, Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.JavaTypes, Androidapi.JNI.Os, Androidapi.JNIBridge; function IntArrayToJArray(const OrigArray: array of Integer): TJavaArray<Integer>; var I: Integer; begin Result := TJavaArray<Integer>.Create(Length(OrigArray)); for I := Low(OrigArray) to High(OrigArray) do Result.Items[I] := OrigArray[I]; end; procedure TForm3.Button1Click(Sender: TObject); var ActivityManager: JActivityManager; List: JList; Iterator: JIterator; Process: JActivityManager_RunningAppProcessInfo; ArrayMemoryInfo: TJavaObjectArray<JDebug_MemoryInfo>; begin ActivityManager := TJActivityManager.Wrap(TAndroidHelper.Context.getSystemService(TJContext.JavaClass.ACTIVITY_SERVICE)); List := ActivityManager.getRunningAppProcesses; Iterator := List.iterator; while Iterator.hasNext do begin Process := TJActivityManager_RunningAppProcessInfo.Wrap(Iterator.next); ArrayMemoryInfo := ActivityManager.getProcessMemoryInfo(IntArrayToJArray([Process.pid])); Memo1.Lines.Add(JStringToString(Process.processName) + ' ' + ArrayMemoryInfo[0].getTotalSharedDirty.ToString); end; end; Повторюсь, это грубый, но рабочий пример. Рекомендуется доработать его перед использованием в рабочем проекте!
  18. Да, не спорю. Пару версий назад, данный поиск у меня глючил и я окончательно вернулся на Total Commander (он меня ещё ни разу не подводил )
  19. GetActivityManager - что это? такого в АПИ нет... Может вы имели ввиду ActivityManager -> getRunningAppProcesses() ? Если так, то вам необходимо подключить файл Androidapi.JNI.App.pas. Чтобы быстро найти файл, в котором реализован интерфейс/класс/метод из АПИ, можно воспользоваться любой утилитой позволяющей искать текст в файлах. Это может быть FAR, Total Commander и др. (я использую Total Commander)
  20. Утилита написана на JAVA, т.к. у вас уже установлен JRE, то просто скачиваете и запускаете. Более подробно про утилиту можно почитать по ссылке из статьи Улучшенный 9-patch редактор
  21. android-** (** - версия АПИ, чем выше цифра, тем больше нового поддерживает обёртка. Обратная совместимость поддерживается.) Выбираете файл по АПИ под которое пишите. По вашему примеру: JList уже определён в файле "Androidapi.JNI.JavaTypes.pas", т.е. нет необходимости подключать стороннюю обёртку. Указываете в uses Androidapi.JNI.JavaTypes и работаете с JList. p.s. Обёртки, которые вы скачали, необходимо проверять, т.к. многие из них сгенерены с ошибками.
  22. Вот так подготовили Как добавить "резиновый" SplashScreen в XE7 ? p.s. Старайтесь прикладывать проекты к темам, так будет проще вам помочь.
  23. Ну, если не хотите попробовать мою демку и посмотреть класс, то давайте изменю ваш код: procedure Vibr; //Процедура вибрации var Vibrator: JVibrator; begin Vibrator := TJVibrator.Wrap(TAndroidHelper.Context.getSystemService(TJContext.JavaClass.VIBRATOR_SERVICE)); if Vibrator.hasVibrator() then Vibrator.vibrate(2000); end; доступ к сервису вибрации нужно получать у Context'a. Если всё равно падает, то смотрите логи, через monitor.bat (находится примерно тут: C:\Android\sdk\tools, у вас путь до sdk может быть другим).
  24. Права дали точно? Вот вам мой класс для работы с вибрацией, там есть код проверки прав - https://github.com/AndrewEfimov/Android-API/blob/master/Vibrator/class/Vibrator.Android.pas (https://github.com/AndrewEfimov/Android-API/tree/master/Vibrator, класс и тестовое приложение) либо посмотрите в настройках приложения, раздел с правами.
×
×
  • Создать...