Форум программистов, компьютерный форум CyberForum.ru

Basic4Android

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 213, средняя оценка - 4.95
Pro_grammer
Модератор
5914 / 2074 / 399
Регистрация: 24.04.2011
Сообщений: 3,514
Записей в блоге: 10
#1

Basic для платформы Android - Basic4Android - Basic4Android

19.04.2014, 19:43. Просмотров 27980. Ответов 111
Метки нет (Все метки)

Если кто не знает Basic4Android это простой и мощный инструмент разработки приложений для устройств, работающих под управлением операционной системы Android. Язык Basic4Android очень похож на популярный и всеми нами любимый язык Visual Basic. Лично мне показалось, что он больше похож на VB.NET, ООП полноценный.
Basic для платформы Android - Basic4Android
Что можно на нём написать? Да в принципе всё, что и на Java, только быстрее. Игры, GPS навигация, управление звонками, контактами, СМС, FTP, HTTP, виджеты.
Basic для платформы Android - Basic4Android
Огромное кол-во готовых библиотек сильно упрощают программирование, высокоразвитый IDE, отладчик реального времени, возможность отладки как на различных моделях эмуляторов различных устройств ( можно настроить любые параметры устройства) так и на реальном устройстве.
Basic для платформы Android - Basic4Android
Basic для платформы Android - Basic4Android
Если вы знаете Java, то это ещё плюс - можно самому писать любые библиотеки и подключать к своему проекту на Basic4Android.
Basic4Android выдает честный код, реальный .apk файл, без встроенных интерпретаторов, такой, что и на выходе скажем с Eclipse.
Из недостатков можно назвать его платность ($59 USD). Но если вы будете использовать его для написания платных программ, то думаю это смешная цена. А если не будете, то кого волнует, сколько он стоит? Всех волнует, где взять новую версию, а с этим проблем пока нет.
Проблема с общением и поиском единомышленников. Русских сообществ практически нет, форума, где можно задать вопрос на русском языке тоже нет.
Собственно потому я и пытаюсь создать что то подобное в теме. Сам я начал плотное знакомство с этим ЯП примерно неделю назад. Перевел кое что из документации, разобрал несколько примеров, написал свое собственное приложение. Пока всё нравится, и Basic4Android реально торт.
Но торт скучно есть в одиночку. Буду рад, если найдутся заинтересованные люди, готовые поддержать разговор.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2014, 19:43     Basic для платформы Android - Basic4Android
Посмотрите здесь:
Литература по Basic4Android для новичков Basic4Android
Basic4Android Как подключить genymotion к basic4android?
Разработчик для платформы Android,Москва(от 60 до 100 т.р);
Разработчик для платформы Android, Санкт-Петербург(от 70 до 90 т.р);
Android SDK Manager не отображает платформы 2.3.3 (API 10), 2.3.1 (API 9). Как быть? Android
Basic-authentication Https SSL Android, loopj library Android
Android Выбор платформы разработки "1С Мобильная платформа" или "Android Studio"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pro_grammer
Модератор
5914 / 2074 / 399
Регистрация: 24.04.2011
Сообщений: 3,514
Записей в блоге: 10
20.04.2014, 10:02  [ТС]     Basic для платформы Android - Basic4Android #2
Как говаривала моя училка по географии, обводя глазами спрятавшийся под парты класс при опросе домашнего задания: "Лес рук!"
Ну что же, продолжим!

Первым делом для создания программ для Андроида нам необходимо установить и сконфигурировать кроме самого Basic4Android ещё парочку - троечку программ, если можно так выразится. И это не прихоть Basic4Android, это надо установить в любом случае, если вы действительно хотите создавать полноценные .apk файлы, в не зависимости от того, как и на чем вы их будете писать.
А именно это Android SDK, Java JDK и по желанию хороший эмулятор. Эмулятор, или как он называется Андроид Виртуальное Устройство (AVD) уже будет в Android SDK и его можно легко запускать и конфигурировать из среды Basic4Android. И на первых порах его более чем достаточно. Но для серьёзных поделок, типа крутых игр и эмуляции реальных устройств можно выбрать что то и получше. Мой выбор это бесплатный для личного пользования Genymotion

Не по теме:

( даже если не хотите программировать на B4A, то все равно рекомендую всем владельцам Андроид девайсов для тестирования игрушек и любых программ из Итернета. Работает на полный экран компьютера, тянет многие игры, эмулирует реальные устройства!)



Значит идем на сайт Oracle и берём там JDK Java SE Development Kit 7 Downloads

Далее стандартно
- Примите лицензионное соглашение.
- Выберите "Windows x86 (32-bit)" в списке платформ (даже для компьютеров с 64-битными системами[).
Это правило не работает, видимо устарело. Для систем x64 можно ( и нужно!) выбирать соответствующее Вашей разрядности JDK!
- Скачайте соответствующий файл и запустите установку.

Далее тут качаем SDK

Установка стандартная.
Если при установке возникает ошибка, что не найден JDK то нужно создать переменную среды. В Windows 7 ее можно создать так - правый клик по "Компьютер", нажать "Свойства". Слева нажать "Дополнительные параметры системы", в открывшемся окошке нажать "Переменные среды.." ( внизу справа ). Там будет два поля. Для верхнего нажать кнопку "Создать".
Ввести имя переменной - JAVA_HOME, а в значение переменной адрес, куда установлен JDK ( пример: C:\Program Files\Java\jdk1.7.0_55 ).

Есть один нюанс!
SDK не будет работать, когда она установлена в папку, в пути до которой есть пробелы (например "C:/Program Files"). Рекомендуется устанавливать SDK в отдельную папку вроде C:/Android.
Запустится ADK Manager, установите Android SDK Platform-tools и как минимум один образ какой либо платформы. Вы можете использовать API 8 и выше. Моя конфигурация, платформы установил две 4.2.2 и 2.3
Basic для платформы Android - Basic4Android

Теперь покупаем или ищем на просторах Интернет Basic4Android версии 3.2 - 3.5 ( древнее чем 3.2 нет смысла ставить). Устанавливаем, регистрируем способом, указанным в источнике приобретения
Что нам дает покупка?
Кликните здесь для просмотра всего текста
Самое главное это легальное владение ( а значит можно торговать своими программами) + поддержка от 2-х месяцев до 2-х лет в зависимости от стоимости продукта. Доступ ко всем библиотекам и закрытым данным на форуме ( найти их можно и незарегистрированному юзеру, но только если добрый дядя выложит в сеть). На форуме можно зарегистрироваться и без покупки лицензии, будут доступны многие материалы и исходники программ, и даже некоторые библиотеки.

Если при запуске установки возникает ошибка такого типа "Basic4Android.exe Application could not be initialized correctly error 0xc0000135", значит у вас нет .Net Framework 2.0 или выше (как вы без него до сих пор жили?), установите обязательно.
Создайте в папке с Basic4Android ещё одну папку для дополнительных библиотек, пусть будет AddLib
Сложите в неё все либы, которые вам удалось отыскать и скачать. Если ещё не удалось, то загуглите такое название "basic4android-libraries-2013-2014", должно повезти. Все либы состоят из 2- файлов xxx.jar и xxx.xml. Эти пары файлов надо извлечь из архивов, если они упакованы и положить в новую папку для библиотек.

Выберите пункт меню Tools > Configure Paths. Выбирайте как на скрине, только цифры будут у вас другие ( версии меняются)
Basic для платформы Android - Basic4Android
Далее можно настроить встроенный эмулятор устройств Андроид. Запускаем из меню Tools > Run AVD Manager
Basic для платформы Android - Basic4Android

Настраиваем устройства по своему вкусу и в соответствии с нужными платформами.

Всё! Считаем среду готовой к написанию первой программы.
Кликните здесь для просмотра всего текста
В следующем моем сообщении будем создавать программу, покруче чем "Привет, Мир!".
Pro_grammer
Модератор
5914 / 2074 / 399
Регистрация: 24.04.2011
Сообщений: 3,514
Записей в блоге: 10
22.04.2014, 11:21  [ТС]     Basic для платформы Android - Basic4Android #3
История создания одной программы

Статистика вообще и Google в частности говорят, что общее кол-во приложений для платформы Android, официально зарегистрированных в Google Play Store, больше миллиона. А мне чего-то не хватало. И не хватало мне обычного, простого Блокнота. Без наворотов, проще чем в Винде, ну совсем простого, как элемент управления Text в Visual Basic. Чтобы просто вставить-копировать-выделить-удалить. Честно сказать блокнотов много в том же Play Store. Но замученные вечно недовольными пользователями они всегда превращаются в монстров редактирования текста, совмещенные с будильниками, календарями, напоминалками, рекламами и пр. ерундой.
Буду писать свой блокнот, решил я и бросился изучать Basic4Android. Благо, что особо для меня, как и для многих это читающих, переучиваться сильно не пришлось – кто Бейсика не знает?
В предыдущих моих сообщениях я подробно рассказал, что и как надо установить на свой компьютер, и если это уже не вызывает трудности, то начнем. С подготовки материалов. В любой программе на Андроид есть основная иконка. Она представляет собой файл изображения в формате PNG размером 64х64 или 128х128, квадратные. Возможно, что и другие размеры подойдут, но в маленькой плохо видно, а в очень большой тоже нет смысла – она будет отмасштабирована до нужных размеров, но увеличит размер программы. Иконки ведь хранятся внутри файла .apk. Кто не в курсе это установочный файл для всех Андроид приложений. Для пытливого компьютерщика это обычный ZIP архив с расширением .apk, который содержит всякие ресурсы и сам скомпилированный код программы. Забегая вперёд скажу, что иконка в нашем проекте будет всегда хранится по адресу :
..\NameProg\Objects\res\drawable\icon.png
Но руками мы её туда копировать не будем (хотя и можно), для этого есть в меню
Project->Choose Icon. Выбранный нами файл переименуется и уляжется в нужное место сам. Где брать файлы иконок? Если у вас нет дара художника, как и у меня, то идем в Интернет, где бесплатно раздают иконки, и выбираем понравившуюся. Я хожу на www.iconfinder.com, там удобный поиск и много бесплатного добра. Я выбрал это
Basic для платформы Android - Basic4Android
Размером 128х128. Тут же нашёл и остальные для пунктов меню. Нам нужны будут ещё 4 иконки, но уже размером 32х32 – это требование для меню программы.
Название: 1398157499_folder-open.png
Просмотров: 3114

Размер: 741 байт Название: 1398157588_save.png
Просмотров: 3092

Размер: 1.0 Кб Название: 1398157679_file_add.png
Просмотров: 3089

Размер: 3.1 Кб Название: 1398157685_file_delete.png
Просмотров: 3108

Размер: 3.1 Кб
Соответственно Открыть, Сохранить, Новый, Удалить.
Теперь, когда у нас есть всё необходимое, приступаем к программированию. Запускаем исполняемый файл Basic4android.exe любым удобным вам способом.
И видим, что нам уже сделали всё за нас и код уже есть и с подробными комментариями.
Первым делом меняем в меню Project->Package name. На скромное mysuper.notepad Каждое приложение в Android идентифицируется по уникальному имени пакета. Это строка, состоящая из нескольких слов, разделенными точками.
Срока должна содержать как минимум две части. Вы не сможете установить два разных приложения с одинаковым именем пакета на одно устройство. Вернее ваше устройство подумает, что это обновление и заменит старое на новое приложение. А если цифра #VersionCode нового приложения будет меньше старого, то и вовсе не установится. Даже в эмуляторе не запустится, вылезет ошибка контроля версий.
Теперь можно установить нашу иконку меню Project->Choose Icon и заменить имя и версию под спойлером Project Attributes
#ApplicationLabel: B4A Example -> Меняем на MyNotepad
#VersionCode: 1 -> это пока лучше не менять
#VersionName: -> тут можно поставить версию 0.01

#ApplicationLabel – это имя будет названием нашей программы в списке программ, под иконкой программы, когда мы её установим в устройство (или эмулятор)
Мы должны сохранить наш проект в надежное место. Для этого выберите меню File - Save. Рекомендуется сохранять каждую отдельную программу в свою собственную папку.
Создайте новую папку: " MyNotepad ", откройте ее и сохраните программу как "MyNotepad“. В папке будут созданы ещё 2 основные папки Files, Objects с подпапками и файл MyNotepad.b4a

С настойками закончили, переходим к проектированию программы.
Выберите меню Tools - Run AVD Manager. Из открывшегося окна выберите эмулятор, который вы настроили как я учил в предыдущих сообщениях, и нажмите Start, затем Launch. Подождите несколько секунд или минут, пока эмулятор полностью не загрузится. Если у вас есть другой эмулятор, к примеру тот, о котором я говорил выше -Genymotion, то просто запустите его и всё.
Basic для платформы Android - Basic4Android
Если необходимо, то настройте на вашем эмуляторе нужный язык обычным для Андроида способом. Можете поиграть с ним, нажимать на кнопочки, запустить встроенные программы, например Интернет браузер и найти этот сайт
Перезапускать эмулятор каждый раз перед загрузкой программы не нужно. Эмулятор может быть запущен все время, пока вы создаете и тестируете свою программу.

Приступаем к проектированию дизайна нашей программы. Запускаем дизайнер из главного меню-> Designer
Basic для платформы Android - Basic4Android
Тут сразу меняем Title Activity-> Мой Блокнот
Эта надпись будет видна в работающем приложении.
Далее, Абстрактный дизайнер можно заменить на реальный эмулятор, щёлкнув по значку с надписью Status:
Мы менять не будем. У нас программа простая, элементов управления не много, а точнее один. Его и добавим. В меню AddView выбираем EditText, устанавливаем его мышкой в Абстрактном дизайнере сверху, растягиваем на всё устройство. Настраиваем свойства. Процесс не отличается от аналогичного в VB6. Для multiline надо установить свойство Single line в False. Измените Text Style пункт Vertical Alignment -> TOP
Добавляем все наши изображения иконок для меню при помощи Add Images. Можно выбрать сразу все, мультивыбор поддерживается.
Получилось что-то такое
Basic для платформы Android - Basic4Android

Закрепляем результат – сохраняем в файл с именем Layout1. Если с другим, то запомните – потом пригодится. Этот файл будет в папке File с именем Layout1.bal
Идем в редактор кода и раскоментируем эту строчку
Visual Basic
1
'Activity.LoadLayout("Layout1")
Если сохранили с другим именем, то вставляйте своё.
Visual Basic
1
2
3
4
5
Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("Layout1")
 
End Sub
Проверяем режим компиляции – Debug( rapid) или (legacy),нам пока не важно, сохраняемся ещё раз запускаем нашу программу нажатием на зелёный треугольник.
Процесс компиляции длится несколько секунд, заметно дольше, чем в VB6. В левом нижнем углу появляется панель управления зелёного цвета, как в проигрывателе, а мы ищем наш эмулятор на панели задач, выводим его на передний план.
Basic для платформы Android - Basic4Android

.
Несмотря на то, что мы пока ещё не написали ни одной строчки кода, мы уже имеем работоспособное приложение для Андроид, которое умеет редактировать текст, выделять, вставлять из буфера и записывать в буфер обмена. Если скомпилировать в режиме Release, то в папке Objects появится файл MyNotepad.apk - его уже можно установить на любое устройство Андроид и использовать.
Ну пока всё. В продолжении ждите:
-Работа с файлами, создание и удаление
-Создание меню программы с иконками

В архиве проект с готовой программой из этого сообщения.
Вложения
Тип файла: zip MyNotepad.zip (414.2 Кб, 156 просмотров)
Pro_grammer
Модератор
5914 / 2074 / 399
Регистрация: 24.04.2011
Сообщений: 3,514
Записей в блоге: 10
22.04.2014, 11:31  [ТС]     Basic для платформы Android - Basic4Android #4
Если что то не выходит, можно задавать вопросы!
aptos
13 / 13 / 2
Регистрация: 04.06.2013
Сообщений: 156
22.04.2014, 22:52     Basic для платформы Android - Basic4Android #5
Времени совсем нету... Курсовые, сессия на носу. Но вы меня так заинтересовали, что, видимо, каникул я не дождусь. Берусь за настройку, буду разбираться. Спасибо большое за идею!

Добавлено через 6 минут
P.S. мой китайский Andoroid пополнился новым приложением. Энтузиазм удвоился

Добавлено через 7 минут
А теперь о проблемах... JDK для х86 у меня выдает ошибку при установке, пришлось устанавливать х64. И выдало предсказуемую ошибку. Оф. сайт направил сюда, но моего английского недостаточно, чтобы понять, что там рекомендуют. Вот:
"I have Windows 8.1 and it will not allow me to install 32 bit JDK so I installed the 64 bit version. The Android SDK could not find JDK, but if you set an environment variable called JAVA_HOME and point it to the JDK directory (in my case, it was "C:\Program Files\Java\jdk1.7.0_51\"), then Android SDK can find it. Already compiled the math tutorial in the beginners guide to verify it works. Hope this helps people with installing B4A in the future."

Надеюсь поможете с переводом, или подскажете свой способ решения проблемы

Добавлено через 15 минут
Разобрался, напишу, может быть кому-то поможет. Чтобы исправить проблему, нужно создать переменную среды. В Windows 7 ее можно создать так - правый клик по "Компьютер", нажать "Свойства". Слева нажать "Дополнительные параметры системы", в открывшемся окошке нажать "Переменные среды.." ( внизу справа ). Там будет два поля. Для верхнего нажать кнопку "Создать".

Ввести имя переменной - JAVA_HOME, а в значение переменной адрес, куда установлен JDK ( у меня это был C:\Program Files\Java\jdk1.7.0_55 ).

Вроде все
Pro_grammer
Модератор
5914 / 2074 / 399
Регистрация: 24.04.2011
Сообщений: 3,514
Записей в блоге: 10
23.04.2014, 04:49  [ТС]     Basic для платформы Android - Basic4Android #6
Цитата Сообщение от aptos Посмотреть сообщение
куда установлен JDK ( у меня это был C:\Program Files\Java\jdk1.7.0_55 ).
Дружище, ну я прямо красным по белому выделил:
Цитата Сообщение от Pro_grammer Посмотреть сообщение
SDK не будет работать, когда она установлена в папку, в пути до которой есть пробелы (например "C:/Program Files"). Рекомендуется устанавливать SDK в отдельную папку вроде C:/Android.
Внимательнее надо читать, тогда бы не было этой проблемы!
Но за собственное решение спасибо!
aptos
13 / 13 / 2
Регистрация: 04.06.2013
Сообщений: 156
23.04.2014, 09:48     Basic для платформы Android - Basic4Android #7
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Дружище, ну я прямо красным по белому выделил:

Внимательнее надо читать, тогда бы не было этой проблемы!
Но за собственное решение спасибо!
Вы путаете
"SDK не будет работать, когда она установлена в папку, в пути до которой есть пробелы (например "C:/Program Files")."

Про JDK ничего такого написано не было. SDK я установил как и требовалось, D:\Android\...

Если же это справедливо и для JDK, добавьте сразу в текст, а то я не додумался сразу
Pro_grammer
Модератор
5914 / 2074 / 399
Регистрация: 24.04.2011
Сообщений: 3,514
Записей в блоге: 10
23.04.2014, 14:48  [ТС]     Basic для платформы Android - Basic4Android #8
Цитата Сообщение от aptos Посмотреть сообщение
Если же это справедливо и для JDK,
Нет вроде для JDK таких ограничений нет. С JDK вообще проблем обычно не возникает, в отличии от SDK. Ещё один подводный камень - если имя пользователя Винды записано кириллицей, то может быть ошибка при запуске.
aptos
13 / 13 / 2
Регистрация: 04.06.2013
Сообщений: 156
24.04.2014, 13:26     Basic для платформы Android - Basic4Android #9
Появился вопросик... Добавил пару полей в программку, все работает. Но хочу чтобы при развороте экрана положение элементов оставалось пропорциональным, для этого мне нужны размеры текущего рабочего пространства (ширина и высота).

Сам вопрос - в VB6 это форма, а как это называется в Basic4android?

Добавлено через 17 минут
А, все. Коня словил. Activity это)
Pro_grammer
Модератор
5914 / 2074 / 399
Регистрация: 24.04.2011
Сообщений: 3,514
Записей в блоге: 10
24.04.2014, 15:26  [ТС]     Basic для платформы Android - Basic4Android #10
Цитата Сообщение от aptos Посмотреть сообщение
чтобы при развороте экрана положение элементов оставалось пропорциональным,
Там всё гениально придумано.
Значит в дизайнере есть вкладка Designer Scripts, где по умолчанию уже есть AutoScaleAll, это позволяет не заботится о истинных размерах.
Далее, на основной вкладке есть кнопка Add Variant. Добавляем 480х320, т.е планшетный вариант, рисуем ( а вернее передвигаем) в этом варианте расположение элементов управления - и вуаля! При повороте девайса всё САМО встает так, как задумано!
Pro_grammer
Модератор
5914 / 2074 / 399
Регистрация: 24.04.2011
Сообщений: 3,514
Записей в блоге: 10
24.04.2014, 19:34  [ТС]     Basic для платформы Android - Basic4Android #11
Дополним нашу программу возможностью сохранять текст в файл, загружать ранее сохранённый текст и удалять текстовые файлы.
Для работы нам понадобится библиотека Dialogs. Она содержит набор стандартных диалогов в котором есть выбор файлов. В основном окне проекта справа есть вкладка, где по умолчанию показаны все модули и процедуры нашего проекта. Правая нижняя вкладка называется Libs. Открываем её, вам представится полный список доступных библиотек и ода из них, а именно Core уже отмечена галочкой. Найдите в списке Dialogs и отметьте галочкой. Если такой библиотеки нет, то см. http://www.cyberforum.ru/basic/threa...ml#post6062619, я там подсказал, как искать.

Далее объявляем все нужные переменные в Globals. Переменные будут доступны из всех процедур нашей Активности (Аctivity)
Для доступности переменных из всех модулей ( если будут таковые), их надо объявлять в процедуре Process_Globals



Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.
    Dim EditText1 As EditText
    Dim fd As FileDialog
    fd.FastScroll = True
    fd.KeyboardPopUp = False
    fd.FilePath = File.DirRootExternal 'Корневая папка SD карты
    fd.FileFilter = ".txt" ' Фильтр, несколько типов через запятую ".jpg,.png" 
End Sub
Внимательно смотрите на код, если нет красных символов, то значит всё сделали правильно.
DirRootExternal - Корневая папка SD карты, доступна как для чтения, так и для записи любым приложениям.
DirAssets - Собственная папка программы, внутри .apk архива. Доступна только для чтения и только вашей программой. В неё мы поместили иконки при работе с дизайнером ( помните - папка Files?).

В виду того, что наша программа будет работать с картой памяти необходимо проверить при запуске её доступность. По аналогии с VB6, где есть процедура Form_Load() здесь есть процедура Activity_Create(FirstTime As Boolean)
В неё и вставим код проверки
Visual Basic
1
2
3
4
If File.ExternalWritable = False Then
        Msgbox("Нет доступа к записи на карту памяти.", "MyNotepad") ' Упс! надо выходить из программы
    Activity.Finish      'Прекращаем работу программы 
End If
Внимание! Проверте в вашем эмулятре, есть ли поддержка SD карты? Иначе программа не запустится!

Тут же добавляем в программу пункты меню
Visual Basic
1
2
3
4
   Activity.AddMenuItem3("Загрузить файл","mnuOpen",LoadBitmap(File.DirAssets,"1398157499_folder-open.png"),True) ' Adds menu 
    Activity.AddMenuItem3("Сохранить файл","mnuSave",LoadBitmap(File.DirAssets,"1398157588_save.png"),True) ' Adds menu 
    Activity.AddMenuItem3("Удалить файл ","mnuDel",LoadBitmap(File.DirAssets,"1398157685_file_delete.png"),True) ' Adds menu 
    Activity.AddMenuItem3("Новый/Очистить текст ","mnuNew",LoadBitmap(File.DirAssets,"1398157679_file_add.png"),True) ' Adds menu
Уже можно запустить код на выполнение и проверить, как отображается меню в эмуляторе.

Basic для платформы Android - Basic4Android

У вас может быть совсем по-другому, в зависимости от версии Андроид и размеров. Если меню не умещается целиком, возможно отображение только части рисунков, а остальное в виде текста.

Далее дописываем процедуры, которые обрабатывают действия, при выборе пунктов Меню
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Sub SaveStringExample
    Dim EText As String
    DateTime.DateFormat = "ddMMyyHHmmss"
    now = DateTime.now
    dt = DateTime.Date(now) ' файл вида 210414200150
 
    EText = EditText1.Text
         File.WriteString(File.DirRootExternal, dt & "_MyN.txt",EText)
      ToastMessageShow("Сохранён файл - " & dt & "_MyN.txt", False)
End Sub
Sub ReadStringExample
    Dim EText As String
    ret = fd.Show("Посмотреть заметку", "Отменить", "Нет", "Да", Null)  
    If ret = -2 Then
 
      EText = File.ReadString(File.DirRootExternal,fd.ChosenName)
      EditText1.Text = EText
    Else
    ToastMessageShow("Загрузка " & fd.ChosenName & " отменена!", False) 
    End If
    
    
End Sub
 
Sub mnuOpen_Click
   ReadStringExample
End Sub
 
Sub mnuSave_Click
   SaveStringExample
End Sub
Sub mnuNew_Click
  EditText1.Text =""
End Sub
 
 
Sub mnuDel_Click
    
    ret = fd.Show( "Удалить файл", "Отменить", "Нет","Да", Null)    
    If ret = -2 Then
             If  File.Delete(File.DirRootExternal,fd.ChosenName) Then 
                   ToastMessageShow("Удаление" & fd.ChosenName & " успешно!", False)    
             End If
     
    Else
    ToastMessageShow( "Удаление" & fd.ChosenName & " отменено!", False) 
    End If
End Sub
Код процедур простой, кто пишет программы на Basic тому разобраться не сложно. Поясню принцип сохранения файла. Процедура SaveStringExample
Генерирует имя файла из текущей даты и времени вида 210414200150_MyN.txt _MyN это как визитная карточка нашей программы. Преимущество этого подхода в быстром сохранении файла – нет надобности набирать имя файла в ручную.

Примечание! Переменные now,dt,ret в коде светятся «красным». Формально это ошибка, мы их не задекларировали при помощи DIM. Но т.к. мы сразу после использования им присвоили значения, то они ошибку при компиляции не вызывают и так делать допустимо.

Для настройки различных параметров работы и совместимости в виде планшета и телефона есть на основной вкладке Дизайнера форм кнопка Add Variant. Добавляем 480х320, т.е планшетный вариант и растягиваем EditText1 на всю ширину экрана.

Вот и весь код. Можно компилировать, собирать в режиме Релиз и пользоваться.
Готовый код не даю, пусть будет стимул вам для самостоятельного повторения.


Ну вот, Блокнот написали. теперь очередь за Paint. Ждите, в следующем уроке будем делать подобие Виндовской Рисовалки.
aptos
13 / 13 / 2
Регистрация: 04.06.2013
Сообщений: 156
24.04.2014, 19:39     Basic для платформы Android - Basic4Android #12
Хорошо, но поздно (это про ориентацию). Я все координаты просто сделал гибкими, в зависимости от размеров текущего Activity, соответственно независимо от разрешения экрана и его ориентации все соответственно перестраивается

У меня тут проблемка появилась на ровном месте. Понадобился мне рандомный массив без повторяющихся элементов, массиву из кнопок значения задать. Написал алгоритм на VB6, все работает:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Option Explicit
Dim i, j, rand(8)
 
Private Sub Form_Click()
Cls
Randomize
For i = 0 To 8
   rand(i) = Int(1 + Rnd * 9)
   For j = 0 To 7
      If rand(i) = rand(j) And i <> j Then
      i = i - 1
      Exit For
      End If
   Next
Next
 
For i = 0 To 8
Print rand(i)
Next
End Sub
А вот на Basic4android выдает ошибку ArrayIndexOfBoundsException. Код практически тот же, почему же не работает? Вот:
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub Buttons_Click
For i = 0 To 8
   rand(i) = Rnd(1,12)
   For j = 0 To 7
      If rand(i) = rand(j) AND i <> j Then
      i = i - 1
      j = 7
      End If
   Next
Next
For i=0 To 8
   Buttons(i).Text = rand(i)
Next
End Sub
Pro_grammer
Модератор
5914 / 2074 / 399
Регистрация: 24.04.2011
Сообщений: 3,514
Записей в блоге: 10
24.04.2014, 19:53  [ТС]     Basic для платформы Android - Basic4Android #13
Цитата Сообщение от aptos Посмотреть сообщение
Код практически тот же,
В b4a массивы определены по другому Dim rand(8) означает 8 элементов с 0 по 7.
Т.о. там нет значения 8
aptos
13 / 13 / 2
Регистрация: 04.06.2013
Сообщений: 156
24.04.2014, 20:10     Basic для платформы Android - Basic4Android #14
И кстати про координаты. Там ведь только поворот экрана учитывается, но не разрешение? А в случае через координаты вроде как и разрешение учитывается.

Добавлено через 2 минуты
Цитата Сообщение от Pro_grammer Посмотреть сообщение
В b4a массивы определены по другому Dim rand(8) означает 8 элементов с 0 по 7.
Т.о. там нет значения 8
Точно, спасибо большое

Добавлено через 1 минуту
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Там всё гениально придумано.
Значит в дизайнере есть вкладка Designer Scripts, где по умолчанию уже есть AutoScaleAll, это позволяет не заботится о истинных размерах.
Далее, на основной вкладке есть кнопка Add Variant. Добавляем 480х320, т.е планшетный вариант, рисуем ( а вернее передвигаем) в этом варианте расположение элементов управления - и вуаля! При повороте девайса всё САМО встает так, как задумано!
Там всмысле в дизайнере.

Добавлено через 1 минуту
Если учитывать что приложением будешь пользоваться не только сам, добавлять все возможные варианты разрешений довольно утомительно на мой взгляд.

Добавлено через 5 минут
Так, кажется опять коня словил. AutoScaleAll видимо эти разрешения и учитывает
Runkin
55 / 55 / 3
Регистрация: 22.12.2011
Сообщений: 252
Записей в блоге: 2
24.04.2014, 23:09     Basic для платформы Android - Basic4Android #15
Привет! я щас разбираюсь с b4a - вот в eclipse было так
любое слово, надпись создавалась ссылка отдельно и в зависимости от вкл. на устройстве языка
осуществлялся перевод! Вы не видели, есть ли подобное средство в b4a ?
aptos
13 / 13 / 2
Регистрация: 04.06.2013
Сообщений: 156
24.04.2014, 23:52     Basic для платформы Android - Basic4Android #16
Цитата Сообщение от Runkin Посмотреть сообщение
Привет! я щас разбираюсь с b4a - вот в eclipse было так
любое слово, надпись создавалась ссылка отдельно и в зависимости от вкл. на устройстве языка
осуществлялся перевод! Вы не видели, есть ли подобное средство в b4a ?
Я не программировал на eclipse, но если вы про всплывающие подсказки на русском для программного кода - там вроде и русского интерфейса нету, не говоря про подсказки.)
Или я не так понял?
Runkin
55 / 55 / 3
Регистрация: 22.12.2011
Сообщений: 252
Записей в блоге: 2
25.04.2014, 00:30     Basic для платформы Android - Basic4Android #17
нет! в eclipe например создаёшь кнопку и привязываешь к ней ссылку.(например @button1)
Дальше есть разные папки с ссылками на разных языках
наприер:
en @button1=Hello!
ru @button1=Привет!
какая ссылка используется зависит от языка в настройках андроид!
можно было бы сделать переменные где такое прописать, но может это очень объёмно и не удобно!
Pro_grammer
Модератор
5914 / 2074 / 399
Регистрация: 24.04.2011
Сообщений: 3,514
Записей в блоге: 10
25.04.2014, 07:13  [ТС]     Basic для платформы Android - Basic4Android #18
Цитата Сообщение от Runkin Посмотреть сообщение
есть ли подобное средство в b4a ?
Локализация приложений средствами ресурсов. Для каждого языка создается свой локализованный ресурс. Если пользователь запустит приложение на телефоне с английской локалью, то он увидит текст на английском языке. Если приложение запустит русский пользователь, то он увидит текст на русском языке.
Я конкретно до этого не дошёл ещё, но есть пример с локализацией на английский( дефолтный) + немецкий + французский. Для русского я так понял, что надо добавить в папку res/ свою папку values-ru/ со свои файлом strings.xml. И в зависимости от того, какой язык используется в устройстве он автоматически подхватывается. Это считается профессиональным подходом и работает не только для basic4android.
Примечание! файл strings.xml должен иметь атрибут "Только для чтения", иначе он будет удален при компиляции.

Если делать при помощи переменных, то надо будет узнать язык устройства по умолчанию. Есть такой код
Visual Basic
1
2
3
Dim r As Reflector
r.Target = r.RunStaticMethod("java.util.Locale", "getDefault", Null, Null)
ToastMessageShow("Язык = " & r.RunMethod("getLanguage") , False)
Для работы надо подключить библиотеку Reflection
Вложения
Тип файла: zip Localization.zip (7.6 Кб, 68 просмотров)
Runkin
55 / 55 / 3
Регистрация: 22.12.2011
Сообщений: 252
Записей в блоге: 2
25.04.2014, 11:19     Basic для платформы Android - Basic4Android #19
Да спасибо это то! Только не Reflection, а AndroidResources!

а вы не работали с модулем KeyValueStore ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2014, 11:29     Basic для платформы Android - Basic4Android
Еще ссылки по теме:
Подбор платформы для создания БД

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Pro_grammer
Модератор
5914 / 2074 / 399
Регистрация: 24.04.2011
Сообщений: 3,514
Записей в блоге: 10
25.04.2014, 11:29  [ТС]     Basic для платформы Android - Basic4Android #20
Цитата Сообщение от Runkin Посмотреть сообщение
Только не Reflection, а AndroidResources!
Reflection это для куска кода, который я привел, а для ресурсов да, нужна AndroidResources, но в примере это есть, потому я и не заострил на этом внимание.
Цитата Сообщение от Runkin Посмотреть сообщение
модулем KeyValueStore
Нет, пока ещё до этого не дошёл. Но пример работы скачал, если надо выложу.
Yandex
Объявления
25.04.2014, 11:29     Basic для платформы Android - Basic4Android
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru