Документация: Интерфейс Команды Классы Функции Cкачать: HDroidGUI 0.4 build 6 HDroidGUI на Github Поддержка: Форум на Github Примеры приложений: hdDemo-1.1.zip hdDemo 1.1 apk HdDemo на Github hdcalcul-1.5.zip hdCalcul 1.5 apk HdCalcul на Github hddbf-1.2.zip HdDbf на Github |
HDroidGUI - описаниеСоздание нового проектаПроцесс создания нового проекта с помощью утилиты newproject достаточно подробно описан ранее. Здесь я хочу пояснить, почему желательно пользоваться именно этой утилитой. Java и Андроид накладывают некоторые ограничения на структуру каталогов проекта
и на содержание обязательных для проекта файлов. Так, дерево каталогов, в котором
находятся Как это работает.Наше приложение, созданное с помощью HDroidGUI, состоит из двух основных частей, одна из которых написана на Java, другая - на Harbour и C, они связаны между собой посредством JNI - Java Native Interface. Java - часть выполняет всю работу по взаимодействию с устройством. Она отрисовывает экран в соответствии с "заданием", полученным от Harbour - кода, получает информацию от пользователя через соответствующие виджеты и элементы управления устройством, от датчиков - и отправляет ее Harbour - части для последующей обработки, вызывает системные функции. |
Можно представить это следующим образом: есть базис приложения, написанный на Java, который вызывает Harbour - функции для получения "задания", что именно ему следует делать. При старте программы создается главное окно приложения, и Java запрашивает у Harbour информацию о том, что и как следует отобразить в этом окне. Получив ее, Java отображает окно и ждет ввода от пользователя или, например, информации от датчиков - в зависимости от того, как построена программа и, при получении, обращается к Harbour, если он указал, что хочет обработать этот сигнал ( установив соответствующий обработчик - кодоблок ON CLICK для кнопки, например ). Harbour функция - обработчик может, в свою очередь, вызывать Java - методы для реализации тех или иных действий, в т.ч., для создания нового окна.
ИнтерфейсПрежде всего еще раз хочу отметить, что HDroidGUI использует родной интерфейс Андроид, его родные виджеты, в отличие от тех фреймворков, которые рисуют весь интерфейс самостоятельно. Поэтому надо хорошо представлять себе структуру окна Андроид ( в терминологии Андроид оно называется Activity ).
Весь пользовательский интерфейс Андроид построен из объектов View и ViewGroup. View - это аналог понятия control или виджет, объект, который что-то изображает на экране и с которым можно взаимодействовать ( кнопка, строка ввода, ... ). ViewGroup - это невидимый контайнер, в котором расположены другие ViewGroup и View:
HDroidGUI в настоящее время использует один тип ViewGroup - это Linear Layout, которые могут быть вертикальными и горизонтальными. В вертикальных входящие в них объекты располагаются сверху вних по вертикали, а в горизонтальных, соответственно, слева направо по горизонтали. Если нам надо, например, поместить в окно объект, показывающий статический текст (TextView), под ним строку ввода (EditView) и ниже две кнопки, одна рядом с другой, мы должны объявить сначала вертикальный Layout, вставить в него последовательно TextView, EditView и горизонтальный Layout, а в этот последний - две кнопки. Соответствующий код на Harbour будет примерно таким:
BEGIN LAYOUT oLayV SIZE MATCH_PARENT,MATCH_PARENT TEXTVIEW oText TEXT "Введите что-нибудь" SIZE MATCH_PARENT,WRAP_CONTENT EDITBOX oEdit SIZE MATCH_PARENT,WRAP_CONTENT BEGIN LAYOUT oLayH HORIZONTAL SIZE MATCH_PARENT,WRAP_CONTENT BUTTON oBtn1 TEXT "Сохранить" BUTTON oBtn2 TEXT "Отмена" END LAYOUT oLayH END LAYOUT oLayV
А на экране устройства это будет выглядеть так:
Пока не очень красиво :) ? Ну так мы ведь еще не использовали выравнивание, стили, цвета, шрифты, ...
Команды
INIT WINDOW
Начинает описание окна приложения - того, что в терминологии Андроид называется Activity.
Вслед за этой должны следовать команды, реализующие интерфейс окна, и, в завершение,
обязательно - ACTIVATE WINDOW
.
INIT WINDOW <oWnd> [ TITLE <cTitle> ]; [ ON INIT <bInit> ] ; [ ON EXIT <bExit> ]
oWnd - объект класса HDActivity.
cTitle - Заголовок окна.
bInit - Кодоблок, выполняющийся сразу после создания окна.
bExit - Кодоблок, выполняющийся перед закрытием окна.
ACTIVATE WINDOW
Завершает описание интерфейса окна и посылает его системе для создания.
ACTIVATE WINDOW <oWnd>
oWnd - объект окна, созданный
INIT WINDOW
.
INIT DIALOG
Начинает описание диалога. Учтите, что диалог здесь служит, в основном, для реализации
функций типа hd_MsgInfo(), hd_MsgYesNo()
и т.п. Он имеет структуру, отличную от
обычного окна (Activity). Используйте его, только если вы хорошо представляете,
что вы делаете.
INIT DIALOG <oDlg> [TITLE <cTitle>] ; [ ON INIT <bInit> ] ; [ ON EXIT <bExit> ]
oDlg - объект класса HDDialog.
cTitle - Заголовок диалогового окна.
bInit - Кодоблок, выполняющийся сразу после создания диалога.
bExit - Кодоблок, выполняющийся перед закрытием диалога.
ACTIVATE DIALOG
Завершает описание интерфейса диалога и посылает его системе для создания.
ACTIVATE DIALOG <oDlg>
oDlg - объект диалога, созданный
INIT DIALOG
.
BEGIN LAYOUT
Начинает описание Layout. Этот виджет - контейнер для других компонентов, за его
объявлением должны следовать команды, определяющие компоненты, последовательно
размещающиеся в нем ( кнопки, тексты и пр. ). В завершение обязательно должен стоять END LAYOUT
.
Контайнер может быть горизонтальным - в этом случае входящие в него компоненты располагаются
слева направо, или вертикальным - тогда, соответственно, сверху вниз.
BEGIN LAYOUT <oLay> ; [<lHorz: HORIZONTAL>] ; [ SIZE <width>, <height> ] ; [ BACKCOLOR <bcolor> ] ; [ FONT <oFont> ] ;
oLay - объект класса HDLayout.
HORIZONTAL - если есть это слово, контейнер определен как горизонтальный ( по умолчанию - вертикальный ).
width, height - ширина и высота. Размер в dp (Density-independent Pixels). Можно также использовать константы
MATCH_PARENT
(максимально возможная ширина
или высота в пределах родителя) или WRAP_CONTENT
(ширина или высота определяется по содержимому элемента).
bcolor - цвет фона, может задаваться числом или в шестнадцатиричном строковом представлении (#FFFFFF).
oFont - объект класса HDFont.
END LAYOUT
Завершает описание контейнера.
END LAYOUT <oLay>
oLay - объект контейнера, созданный
BEGIN LAYOUT
.
TEXTVIEW
Эта команда создает TextView - компонент GUI Андроид, отображающий статический текст.
TEXTVIEW <oText> ; [ TEXT <cText> ] ; [ SIZE <width>, <height> ] ; [ TEXTCOLOR <tcolor> ] ; [ BACKCOLOR <bcolor> ] ; [ FONT <oFont> ] ; [<lVScroll: VSCROLL>]
oText - объект класса HDTextView.
cText - текст, отображаемый в TextView.
width, height - ширина и высота. Подробнее см. в BEGIN LAYOUT
tcolor, bcolor - цвет текста и фона, соответственно. Может задаваться числом или в шестнадцатиричном строковом представлении (#FFFFFF).
oFont - объект класса HDFont.
VSCROLL - устанавливает вертикальный скроллинг.
BUTTON
Создание кнопки.
BUTTON <oBtn> ; [ TEXT <cText> ] ; [ SIZE <width>, <height> ] ; [ TEXTCOLOR <tcolor> ] ; [ BACKCOLOR <bcolor> ] ; [ FONT <oFont> ] ; [ ON CLICK <bClick> ]
oBtn - объект класса HDButton.
cText - текст, отображаемый на кнопке.
width, height - ширина и высота. Подробнее см. в BEGIN LAYOUT
tcolor, bcolor - цвет текста и фона, соответственно. Может задаваться числом или в шестнадцатиричном строковом представлении (#FFFFFF).
oFont - объект класса HDFont.
bClick - Кодоблок, выполняемый при нажатии кнопки.
EDITBOX
Создание компонента для ввода текста
EDITBOX <oEdit> ; [ TEXT <cText> ] ; [ HINT <cHint> ] ; [ PASSWORD ] ; [ SIZE <width>, <height> ] ; [ TEXTCOLOR <tcolor> ] ; [ BACKCOLOR <bcolor> ] ; [ FONT <oFont> ] ; [ ON KEYDOWN <bKeyDown>]
oEdit - объект класса HDEdit.
cText - текст.
cHint - подсказка - текст, отображаемый в EditBox когда этот компонент пуст.
width, height - ширина и высота. Подробнее см. в BEGIN LAYOUT
tcolor, bcolor - цвет текста и фона, соответственно. Может задаваться числом или в шестнадцатиричном строковом представлении (#FFFFFF).
oFont - объект класса HDFont.
bKeyDown - Кодоблок, выполняемый при вводе очередного символа.
CHECKBOX
CHECKBOX <oChe> ; [ TEXT <cText> ] ; [ SIZE <width>, <height> ] ; [ TEXTCOLOR <tcolor> ] ; [ BACKCOLOR <bcolor> ] ; [ FONT <oFont> ]
oChe - объект класса HDCheckBox.
cText - текст.
width, height - ширина и высота. Подробнее см. в BEGIN LAYOUT
tcolor, bcolor - цвет текста и фона, соответственно. Может задаваться числом или в шестнадцатиричном строковом представлении (#FFFFFF).
oFont - объект класса HDFont.
BROWSE ARRAY
BROWSE <oBrw> ARRAY <aArr> ; [ SIZE <width>, <height> ] ; [<lHScroll: HSCROLL>] ; [ ON CLICK <bClick> ] ;
oBrw - объект класса HDBrwArray.
width, height - ширина и высота. Подробнее см. в BEGIN LAYOUT
HSCROLL - устанавливает горизонтальный скроллинг.
BROWSE DBF
BROWSE <oBrw> DBF <cAlias> ; [ FILTER <xFilter> ] ; [ SIZE <width>, <height> ] ; [<lHScroll: HSCROLL>] ; [ ON CLICK <bClick> ] ;
oBrw - объект класса HDBrwDbf.
width, height - ширина и высота. Подробнее см. в BEGIN LAYOUT
HSCROLL - устанавливает горизонтальный скроллинг.
bClick - кодоблок, выполняемый при выборе строки.
IMAGEVIEW
Эта команда создает ImageView - компонент GUI Андроид, предназначенный для отображения графических объектов.
IMAGEVIEW <oImage> ; [ URI <cUri>> ] ; [ SIZE <width>, <height> ] ; [ BACKCOLOR <bcolor> ] ;
oImage - объект класса HDImageView.
width, height - ширина и высота. Подробнее см. в BEGIN LAYOUT
bcolor - цвет фона.
WEBVIEW
Эта команда создает WebView - компонент GUI Андроид, представляющий собой встроенный броузер.
WEBVIEW <oWeb> ; [ TEXT <cText> ] ; [ SIZE <width>, <height> ] ; [ BACKCOLOR <bcolor> ] ; [<lZoom: ZOOMTOOL>] ; [<lJS: JSCRIPT>]
oWeb - объект класса HDWebView.
cText - текст, отображаемый в TextView.
width, height - ширина и высота. Подробнее см. в BEGIN LAYOUT
bcolor - цвет фона.
ZOOMTOOL
JSCRIPT
PREPARE FONT
Создание нового шрифта
PREPARE FONT <oFont> ; [ FACE <face> ] ; [ STYLE <style> ] ; [ HEIGHT <height> ] ;
oFont - объект класса HDFont.
face - Может принимать одно из значений:
FONT_NORMAL, FONT_SANS, FONT_SERIF, FONT_MONOSPACE
.
style - Может принимать одно из значений:
FONT_BOLD, FONT_ITALIC, FONT_BOLD_ITALIC
.
height - размер шрифта в dp.
INIT STYLE
Создание нового стиля
INIT STYLE <ostyle> ; [COLORS <colors,...>] ; [ORIENT <norient>] ; [CORNERS <corners,...>] ; [TEXTCOLOR <tcolor>]
oStyle - объект класса HDStyle.
colors -
nOrient -
corners -
tcolor -
MENU
Объявление меню для текущего окна (Activity). Вслед за этой командой должен следовать
один или несколько MENUITEM
и, в завершение, MENUITEM
.
MENU [ ID <nId> ] [ TITLE <cTitle> ]
nId - пока не используется.
cTitle - пока не используется.
ENDMENU
Завершение объявления меню.
ENDMENU
MENUITEM
Элемент меню.
MENUITEM <cTitle> [ ID <nId> ] ; ACTION <bAction>
cTitle - название элемента меню.
nId - числовой идентификатор. Если не указан, формируется автоматически.
bAction - Кодоблок, выполняемый при выборе этого пункта меню..
SET TIMER
Установка таймера.
SET TIMER <oTimer> ; VALUE <value> ACTION <bAction>
oTimer - объект класса HDTimer.
value - периодичность активизации таймера в миллисекундах.
bAction - Кодоблок, вызываемый при срабатывании таймера.
INIT NOTIFICATION
Подготовка уведомления. Подготовленное уведомление можно отправить с помощью
oNotify:Run()
.
INIT NOTIFICATION <oNotify> TITLE <cTitle> ; [ TEXT <cText> ] ; [ SUBTEXT <cSubText> ] ; [<lLight: LIGHT>] ; [<lSound: SOUND>] ; [<lVibr: VIBRATION>]
oNotify - объект класса HDNotify.
cTitle - заголовок уведомления.
cText - текст уведомления.
cSubText - дополнительный, более подробный текст.
LIGHT, SOUND, VIBRATION - при указании этих слов, уведомление сопровождается, соответственно, миганием светодиодов, звуковым сигналом или вибрацией.
SET MARGINS
SET <oWidget> MARGINS [ LEFT <ml>] [ TOP <mt>] [ RIGHT <mr>] [ BOTTOM <mb>]
oWidget - объект виджета, для которого устанавливаются параметры.
ml, mt, mr, mb -
SET PADDING
SET <oWidget> PADDING [ LEFT <pl>] [ TOP <pt>] [ RIGHT <pr>] [ BOTTOM <pb>]
oWidget - объект виджета, для которого устанавливаются параметры.
pl, pt, pr, pb -
Классы
HDGUIObject
Переменные:
cargo -
HDWindow INHERIT HDGUIObject
Переменные:
title -
bInit -
bExit -
bBack -
Методы:
New( cTitle, bInit, bExit ) -
FindByName( cName ) -
HDActivity INHERIT HDWindow
Переменные:
oFont -
Методы:
New( cTitle, bInit, bExit ) -
HDDialog INHERIT HDWindow
Переменные:
nRes -
aRes -
Методы:
New( cTitle, bInit, bExit ) -
HDTimer INHERIT HDGUIObject
Переменные:
bAction -
Методы:
New( value, bAction ) -
End() -
HDNotify INHERIT HDGUIObject
Переменные:
cTitle -
cText -
cSubText -
lLight -
lSound -
lVibr -
Методы:
New( lLight, lSound, lVibr, cTitle, cText, cSubtext ) -
Run() -
HDFont INHERIT HDGUIObject
Переменные:
typeface -
style -
height -
Методы:
Add( typeface, style, height ) -
Release() -
HDWidget INHERIT HDGUIObject
Переменные:
objName -
cText -
nWidth -
nHeight -
nMarginL -
nMarginT -
nMarginR -
nMarginB -
nPaddL -
nPaddT -
nPaddR -
nPaddB -
nAlign -
tColor -
bColor -
oFont -
oStyle -
Методы:
New( cText, nWidth, nHeight, tcolor, bcolor, oFont ) -
GetText() -
SetText( cText ) -
getSize() -
setSize( nWidth, nHeight ) -
HDLayout INHERIT HDWidget
Переменные:
lHorz -
Методы:
New( lHorz, nWidth, nHeight, bcolor, oFont ) -
FindByName( cName ) -
HDTextView INHERIT HDWidget
Переменные:
lVScroll -
lHScroll -
Методы:
New( cText, nWidth, nHeight, tcolor, bcolor, oFont, lVScroll, lHScroll ) -
HDButton INHERIT HDWidget
Переменные:
bClick - кодоблок, выполняемый при нажатии кнопки
Методы:
New( cText, nWidth, nHeight, tcolor, bcolor, oFont, bClick ) -
HDEdit INHERIT HDWidget
Переменные:
cHint - подсказка - текст, отображаемый в EditBox когда этот компонент пуст.
bKeyDown - кодоблок, выполняемый при нажатии на клавишу
Методы:
New( cText, nWidth, nHeight, tcolor, bcolor, oFont, cHint, bKeyDown ) -
getCursorPos( n ) - возвращает текущее положение курсора
setCursorPos( nPos ) - устанавливает текущее положение курсора
HDCheckBox INHERIT HDWidget
Переменные:
Методы:
New( cText, nWidth, nHeight, tcolor, bcolor, oFont ) -
Value( lValue ) -
HDColumn INHERIT HDGUIObject
Переменные:
nWidth - ширина колонки в dp
cHead - заголовок (header) колонки
cFoot - footer колонки
lBool -
nAlign -
nHeadAlign -
block - Кодоблок, возвращающий содержание ячейки
Методы:
New( block, nWidth, cHead, cFoot, nAlign, nHeadAlign ) -
HDBrowse INHERIT HDWidget
Переменные:
aColumns - Массив объектов HDColumn - колонок таблицы
data -
lHScroll - .T., если требуется скроллинг по горизонтали
nRowHeight - высота строки
RowTColor -
oRowStyle -
nHeadHeight, HeadBColor, HeadTColor - высота, цвет фона и цвет текста заголовка
nFootHeight, FootBColor, FootTColor - высота, цвет фона и цвет текста footer
oFontHead -
bClick - кодоблок, выполняемый при нажатии на строку
bLong - кодоблок, выполняемый при долгом нажатии на строку
bCheck - кодоблок, выполняемый при клике по чекбоксу
Методы:
New( nWidth, nHeight, tcolor, bcolor, oFont, lHScroll, bClick ) -
AddColumn( oColumn ) -
GoTo( nRow ) -
RowCount() -
GetRow( nRow ) -
Refresh() -
HDBrwArray INHERIT HDBrowse
Переменные:
Методы:
New( aArray, nWidth, nHeight, tcolor, bcolor, oFont, lHScroll, bClick ) -
HDBrwDbf INHERIT HDBrowse
Переменные:
Методы:
New( cAlias, nWidth, nHeight, tcolor, bcolor, oFont, lHScroll, bClick, xFilter ) -
Rebuild( xFilter ) -
RefreshRow( nRow ) -
HDWebView INHERIT HDWidget
Переменные:
lZoom -
lJS -
Методы:
New( cText, nWidth, nHeight, tcolor, bcolor, oFont, lZoom, lJS ) -
HDImageView INHERIT HDWidget
Переменные:
cUri -
Методы:
New( cText, nWidth, nHeight, tcolor, bcolor, oFont, cUri ) -
SetImage( cPath ) -
Функции
hd_ColorN2C( nColor ) -> cColor
Преобразует значение цвета из числа в шестнадцатиричное символьное представление ( #FFFFFF ).
hd_cpFromAsset( cFileIn, cFileOut )
hd_getCurrWindow()
hd_getScreenSize() -> aSize
Возвращает массив геометрических параметров экрана:
- ширина в dp
- высота в dp
hd_getSysDir( cType ) -> cDir
Возвращает доступный общий каталог заданного типа cType
:
- ext - базовый каталог External Storage
- doc - каталог Documents
- pic - каталог Pictures
- mov - каталог Movies
- down - каталог Downloads
- ring - каталог Ringtones
hd_HomeDir() -> cDir
Возвращает домашний каталог приложения. Это каталог, доступный только данному приложению. При удалении приложения он удаляется вместе с ним.
hd_LockOrient()
Запрещает ( блокирует ) изменение ориентации при повороте устройства
hd_MsgGet( cMessage[, cText][, cHint][, bExit] )
hd_MsgInfo( cMessage[, bExit] )
Выводит на экран диалог с текстовым сообщением cMessage
и кнопкой Ok.
Кодоблок bExit
выполняется после закрытия диалогового окна.
hd_MsgYesNo( cMessage[, bExit] )
Выводит на экран диалог с текстовым сообщением cMessage
и кнопками Да, Нет.
Кодоблок bExit
выполняется после закрытия диалогового окна, получая
в качестве параметра соответствующий экземпляр класса HDDialog
.
Переменная nRes
этого экземпляра равна 1, если была нажата кнопка Да.
hd_Progress( symfunc, cTitle, cMess, bNext, aData )
hd_setMargins( oWidget, ml [, mt] [, mr] [, mb] )
Устанавливает margins для виджета oWidget
- левый, верхний, правый, нижний.
Если функция вызвана только с двумя параметрами: hd_setMargins( oWidget, ml )
, то
все 4 margins устанавливаются в указанное значение ml
; если с тремя:
hd_setMargins( oWidget, ml, mt )
, то левый и правый устанавливаются в ml
,
а верхний и нижний - в mt
.
hd_setPadding( oWidget, pl [, pt] [, pr] [, pb] )
Устанавливает padding для виджета oWidget - левый, верхний, правый, нижний.
Если функция вызвана только с двумя параметрами: hd_setPadding( oWidget, pl )
, то
все 4 padding устанавливаются в указанное значение pl
; если с тремя:
hd_setPadding( oWidget, pl, pt )
, то левый и правый устанавливаются в pl
,
а верхний и нижний - в pt
.
hd_takePhoto( cDir, cName, block )
hd_ThreadClosed( oTimer )
hd_Toast( cMessage )
Вывод сообщения на экран - это сообщение само исчезает через несколько секунд.
hd_UnLockOrient()
Разрешает ( разблокирует ) изменение ориентации при повороте устройства
hd_Version( [n] ) -> xVersion
Возвращает версию HDroidGUI:
- при n == 1 - номер версии
- при n == 2 - номер сборки
- без параметров - текстовую строку с номерами версии и сборки
hd_WrLog( cMessage )
Запись сообщения в журнал, служит для отладки приложения на эмуляторе.