Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Опис програмного продукту

Читайте также:
  1. Реалізація страхового продукту. Страхові договори, порядок їх підготовки й укладання. Права й обов'язки сторін. Контроль за виконанням договорів.

3.1 Загальна структура модуля «полотно»

На рисунку 3.1.1 зображена структура основних класів програми, що відповідають за процес малювання.

Рис. 3.1.1 Структура основних класів полотна

 

Під час запуску програми створюється клас MainActivity, який далі створює об’єкти усіх інших класів у функції onCreate (лістинг 3.1.1).


Data. init (this);
TimeProvider. start ("start");

getWindow().requestFeature(Window. FEATURE_NO_TITLE);
if (!(Boolean) Data. get (Data. statusBarBoolean ()))
getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN, WindowManager.LayoutParams. FLAG_FULLSCREEN);
if ((Boolean) Data. get (Data. keepScreenOnBoolean ())) {
getWindow().setFlags(WindowManager.LayoutParams. FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams. FLAG_KEEP_SCREEN_ON); //подсветка всегда включена
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp. screenBrightness = 1.0f;
getWindow().setAttributes(lp);
}
draw = new Draw(context);
//задать ориентацию пока не поздно
int current_orientation_canvas = draw. orientationProvider. getScreenOrientation();
int needed_orientation_canvas = (Integer) Data. get (Data. orientationCanvasInt ());
if (needed_orientation_canvas == Draw.OrientationProvider. ORIENTATION_AUTO)
setRequestedOrientation(ActivityInfo. SCREEN_ORIENTATION_UNSPECIFIED);
else if (needed_orientation_canvas == Draw.OrientationProvider. ORIENTATION_VERTICAL)
setRequestedOrientation(ActivityInfo. SCREEN_ORIENTATION_PORTRAIT);
else if (needed_orientation_canvas == Draw.OrientationProvider. ORIENTATION_HORIZONTAL)
setRequestedOrientation(ActivityInfo. SCREEN_ORIENTATION_LANDSCAPE);
//если текущая ориентация не соответствует заданой в настройках - программе гроизт перезагрузка. А значит, грузить текущую сессию дальше нет смысла
if (needed_orientation_canvas!= Draw.OrientationProvider. ORIENTATION_AUTO && current_orientation_canvas!= needed_orientation_canvas) {
Logger. log ("Текущая ориентация холста не совпадает с требуемой - я ухожу.");
return;
}
//Create menu
mainMenu = new MainMenu(this, draw);

//make layout
View mainView = draw;
if ((Boolean) Data. get (Data. paletteStripBoolean ()) && Data. tools. isPaid())
mainView = addBottomPanel(mainView, getBottomPalette());
if ((Boolean) Data. get (Data. menuStripBoolean ()) && Data. tools. isPaid())
mainView = addBottomPanel(mainView, getBottomToolbar());

setContentView(mainView);
processIntent();

Лістинг 3.1.1 Ініціалізація головного екрану програми

 

Головним об’єктом є клас Draw – він представляє полотно. Всередині він містить змінні для кожного інструмента, та зображення – Bitmap. Під час завантаження програми він виконує ініціалізацію інструментів окремих функціональних модулів (лістинг 3.1.2). Коли ініціалізація завершується, на екрані відображається полотно для малювання і програма готова до роботи.

bitmap = Bitmap. createBitmap (w, h, Bitmap.Config. ARGB_8888);
canvas = new Canvas(bitmap);

//DEFINE INSTRUMENTS AND PROVIDERS
instruments. add(scale = new Scale(this));
instruments. add(brush = new Brush(this));
instruments. add(fill = new Filler(this));
instruments. add(erase = new Eraser(this));
instruments. add(gesture = new Gesture(this));
instruments. add(text = new Text(this));
instruments. add(accurate = new Accurate(this));
instruments. add(line = new Line(this));
instruments. add(pipette = new Pipette(this));
instruments. add(figures = new Figures(this));
providers. add(main = new Main(this));

orientationProvider. afterRotate();

if (currentInstrument == null)
setInstrument("brush");
undoProvider. prepare();

refresh();
doScheduled();
TimeProvider. finish ("start");

Лістинг 3.1.2 Ініціалізація полотна

 


Дата добавления: 2015-08-09; просмотров: 80 | Нарушение авторских прав


Читайте в этой же книге: АНАЛІЗ КОНКУРЕНТНИХ РІШЕНЬ НА РИНКУ | Критерії порівняння програмних продуктів | Огляд програми «SketchBook Express» від Autodesk Inc. | Огляд програми «Рисование» від developer5 | Розроблення структури меню та інтерфейсу програми | Розроблення дизайну меню та елементів управління | Розроблення набору кольорів для палітри | Розроблення алгоритму згладжування кутів | Розроблення алгоритмів динамічного керування товщиною пензля | Головне меню |
<== предыдущая страница | следующая страница ==>
Розроблення алгоритмів зафарбовування| Меню жестів

mybiblioteka.su - 2015-2024 год. (0.007 сек.)