Введение
Общее описание
Структура приложения
Уроки
Описание библиотеки
Приложения

Структура приложения

Структура приложения с библиотекой декларативного программирования крайне проста. Она должна содержать следующие несложные и небольшие классы (файлы):

- MainActivity - задает стартовый экран (в манифесте ссылка на него);

- MyDeclareScreens - описываются все экраны (фрагменты и активити);

- MyParams - задаются параметры приложения;

- MyApp - инициируются MyDeclareScreens и MyParams (наследуется от класса Application).

Естественно, названия этих классов могут быть произвольными. Ниже приведены примеры этих классов.

Стартовая активность

Активности в библиотеке только описываются для них никаких файлов не нужно и в манифесте они не объявляются. Исключением является стартовая активность, т.е. активность которая запускается первой в приложении. Ее код достаточно простой:

    public class MainActivity extends BaseActivity {
        @Override
        public String getNameScreen() {
            return NAME_SCREEN;
        }
    }

Здесь NAME_SCREEN - строковая переменная (константа) - имя активити в описании MyDeclareScreens.

В манифесте она описывается стандартным образом.

Описание экранов

Описание экранов выполняется в классе наследнике DeclareScreens в переопределяемом методе public void declare(). При этом строки с названиями экранов можно задать здесь же.

Пример:

    public class MyDeclareScreens extends DeclareScreens{
        public final static String MAIN = "main", HOME = "home", SERVICE = "service", NEWS = "news", .......;

        public void declare() {
            activity(MAIN, R.layout.activity_main)
                .fragmentsContainer(R.id.content_frame)
                .navigator(handler(R.id.apply, VH.SET_LOCALE, "id_language"))
                .menuBottom(R.id.nav, HOME, REPAIRS_MAIN, ABOUT, NEWS)
                .list(            // меню вибора языка
                    model(new GetData()),
                    view(R.id.recycler, new int[] {R.layout.item_lang, R.layout.item_lang_sel}).selected());

            fragment(HOME, R.layout.fragment_home)
                .setValue(item(R.id.lang_txt, TS.LOCALE))
                .navigator(show(R.id.sel_lang, R.id.lang, true))
                .list(model(API.CATEGORIES, 1).sort("order"),
                    view(R.id.recycler, R.layout.item_home),
                    navigator(handler(0, CATEGORY, PS.RECORD)));
    .......
        }
    }

Более подробно можно посмотреть в разделе Экраны.

Параметры настройки приложения

Для настройки библиотеки на особенности конкретного приложения используются параметры. Они заданы классе AppParams. Назначения параметров в целом понятно из их названия. Общий перечень параметров приведен в приложении. Все параметры имеют значения по умолчанию, которые можно изменить в классе наследнике от AppParams в переопределенном методе setParams().

Пример:

public class MyParams extends AppParams {
    @Override
    public void setParams() {
        baseUrl =  "http://examples.delta.branderstudio.com/";
        nameTokenInHeader = "X-Auth-Token";
        NETWORK_TIMEOUT_LIMIT = 40000;
        .....
    }
}

Класс Application приложения

Класс наследник Application служит для инициализации библиотеки и передачи ей классов с описанием экранов и значениями параметров приложения.

Пример:

public class MyApp extends Application {
    private static MyApp instance;
    private Context context;

    public static MyApp getInstance() {
        if (instance == null) {
            instance = new MyApp();
        }
        return instance;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;
        context = getApplicationContext();
        DeclareParam.build(context)
            .setAppParams(new MyParams())
            .setDeclareScreens(new MyDeclareScreens());
    }
}

Статический метод DeclareParam.build(context) инициирует библиотеку. Метод setAppParams() устанавливает параметры приложения в библиотеке. Метод setDeclareScreens() подключает к библиотеки описание экранов.

В классе DeclareParam доступны и другие методы:

       addParam(String name, String value)

Задает начальное значение value параметра с именем name.

       setDB(BaseDB baseDB)

Подключает к библиотеке описание базы данных (детальное описание будет приведено далее).

Метод ComponTools getComponTools() возвращает ссылку на класс типа ComponTools через который разработчик может получить доступ к многим внутренним методам и переменным библиотеки, если в них будет необходимость при написании кастомных экранов. По факту, необходимость в нем не возникала и ни разу не использовался. Какие методы и переменные доступны будет описано ниже.

Манифест

В манифесте нужно задать MyApp и описать стартовую активити. В нем также нужно не забыть описать кастомные активности) (если они будут).

Если необходимо указываются элементы meta-data, provider, uses-permission и пр. При описании компонентов при необходимости будет указано, что нужно описать в манифесте для работы компонента.

Лучше пакета DePro может быть только искусственный интеллект
Задать вопрос
Отправить вопрос