Создание скинов для Astro Player 2010-08-12 1. Введение 1.1. При помощи файлов-описателей формируется внешний вид (GUI) программы Astro Player. В файле перечисляются элементы интерфейса (кнопки управления, текстовые поля, списки воспроизводимых треков, обложки, закладки), их размеры, координаты на дисплее, особенности внешнего вида (например, указатели на графические ресурсы – картинки). 1.2. По своей структуре, файл-описатель является XML-файлом и должен соответствовать стандарту XML. Таким образом, он состоит из тегов, вложенных друг в друга. Теги имеют атрибуты. 1.3. Теги и атрибуты имеют синтаксис, сходный с тегами и атрибутами layout-файлов Android'а. 1.4. Файлы-описатели должны размещаться в директории //sdcard//astroplayer/views/ (для бета-версии //sdcard//astroplayerbeta/views/). Для инициализации пользовательского интерфейса в Astro Player нужно выбрать Menu > Select skin > Load skin > FileName.xml. 2. Теги и атрибуты, применяемые в файле-описателе 2.1. Все теги могут иметь атрибуты: id android:layout_width android:layout_height android:layout_gravity android:weight 2.2. Тег LinearLayout Может включать в себя все теги, например ... Атрибуты: background android:orientation author_name author_url version а так же аттрибуты из п. 2.1. Назначение тега: Аналогично стандартному андроидному тегу LinearLayout, определяет порядок и место размещения на экране элементов пользовательского интерфейса, теги которых входят в состав данного тега LinearLayout. 2.3. Тег ImageButton Не может включать в себя другие теги. Атрибуты: android:background image image_press image_background image_background_press image_repeat_one image_repeat_all image_shuffle_on а так же атрибуты из п. 2.1. Назначение тега: Аналогично стандартному андроидному тегу ImageButton, определяет размеры и внешний вид кнопки управления. 2.4. Тег TextView Не может включать в себя другие теги. Атрибуты: android:marqueeRepeatLimit android:SingleLine android:scrollHorizontally android:layout_marginLeft android:ellipsize а так же атрибуты из п. 2.1. Назначение тега: Аналогично стандартному андроидному тегу TextView, определяет размеры и другие параметры текстового поля. 2.5. Тег PlaylistView Не может включать в себя другие теги. Атрибуты: color_text color_text_play_text select_background image_small_progress select_image_small_progress select_background_small_progress text_left_padding а так же атрибуты из п. 2.1. Назначение тега: Тег PlaylistView определяет размеры, цвет и другие параметры списка воспроизведения Astro Player. 2.6. Тег ScrollView Не может включать в себя другие теги. Атрибуты: атрибуты из п. 2.1. Назначение тега: Определяет размеры, цвет и другие параметры текстового поля лирики. 2.7. Тег CustomSeekBar Не может включать в себя другие теги. Атрибуты: image_left image_right image_center а так же атрибуты из п. 2.1. Назначение тега: Тег CustomSeekBar определяет размеры, цвет и другие параметры горизонтального прогресс-бара, демонстрирующего текущую позицию в музыкальном треке. 3. Атрибуты 3.1. Таблица атрибутов Ниже представлена таблица в виде: ****** Название (Описание) ------ Значения ****** android:layout_width (Ширина) ------ "fill_parent", "wrap_content", или строка формата "Npx", где N - величина в пикселях, например "65px" ****** android:layout_height (Высота) ------ "fill_parent", "wrap_content", или строка формата "Npx", где N - величина в пикселях, например "65px" ****** android:layout_gravity (Указывает правило размещения элемента в пределах более крупного контейнера) ------ "top", "bottom", "left", "right", "fill", "center", "center_vertical", "center_horizontal", "fill_vertical", "fill_horizontal", "clip_vertical", "clip_horizontal" ****** android:weight (Указывает, сколько из дополнительного места в LinearLayout будет выделено элементу) ------ "0", "1", "1.1", "2" ****** android:orientation (Расположение должно быть колонкой или рядом? Используйте "horizontal" для ряда, "vertical" для колонки.) ------ "horizontal", "vertical" ****** background (Фоновая картинка для данного элемента) ------ Имя файла-картинки. Файл должен находиться в директории //sdcard//astroplayer/views/, например //sdcard//astroplayer/views/NewDesign/file.png ****** android:background (Цвет фона для данного элемента) ------ Строка формата "#nnnnnn", например "#FF0000" ****** image (Картинка для ImageButton) ------ Имя файла-картинки. Файл должен находиться в директории //sdcard//astroplayer/views/, например //sdcard//astroplayer/views/NewDesign/file.png ****** image_press (Картинка для ImageButton, которая показывается при нажатии на кнопку) ------ Имя файла-картинки. Файл должен находиться в директории //sdcard//astroplayer/views/, например //sdcard//astroplayer/views/NewDesign/file.png ****** image_background (Фоновая картинка для ImageButton) ------ Имя файла-картинки. Файл должен находиться в директории //sdcard//astroplayer/views/, например //sdcard//astroplayer/views/NewDesign/file.png ****** image_background_press (Фоновая картинка для ImageButton, которая показывается при нажатии на кнопку) ------ Имя файла-картинки. Файл должен находиться в директории //sdcard//astroplayer/views/, например //sdcard//astroplayer/views/NewDesign/file.png ****** image_repeat_one (Картинка для ImageButton с id="id_button_repeat") ------ Имя файла-картинки. Файл должен находиться в директории //sdcard//astroplayer/views/, например //sdcard//astroplayer/views/NewDesign/file.png ****** image_repeat_all (Картинка для ImageButton с id="id_button_repeat") ------ Имя файла-картинки. Файл должен находиться в директории //sdcard//astroplayer/views/, например //sdcard//astroplayer/views/NewDesign/file.png ****** image_shuffle_on (Картинка для ImageButton с id="id_button_shuffle") ------ Имя файла-картинки. Файл должен находиться в директории //sdcard//astroplayer/views/, например //sdcard//astroplayer/views/NewDesign/file.png ****** android:marqueeRepeatLimit (Количество повторов анимации надписи) ------ Строка в формате целого числа, например "100" ****** android:SingleLine (Текст будет размещаться в одну строчку) ------ "true" или "false" ****** android:scrollHorizontally (Устанавливается, может ли текст быть более широким, чем текстовое поле, и включить горизонтальный скроллинг) ------ Строка, означающая логическое значение, т.е. "true" или "false" ****** android:layout_marginLeft(Определяет ширину левого отступа) ------ Строка формата "Npx", например "65px", N - величина в пикселях ****** android:ellipsize (Позволяет установить режим отображения текста , когда ширина текста больше текстового поля. Текст может прокручиваться, выходить за пределы поля, рерываться.) ------ Строка, одна из следующих: "none" "start" "middle" "end" "marquee" ****** color_text (Цвет текста названия трека в плэйлисте) ------ Строка формата "#nnnnnn", например "#FF0000" ****** color_text_play_text (Цвет текста названия активного трека в плэйлисте) ------ Строка формата "#nnnnnn", например "#FF0000" ****** select_background (Фоновая картинка для трека в плэйлисте) ------ Имя файла-картинки. Файл должен находиться в директории //sdcard//astroplayer/views/, например //sdcard//astroplayer/views/NewDesign/file.png ****** image_small_progress (Картинка для маленького прогресс-бара в плэйлисте) ------ Имя файла-картинки. Файл должен находиться в директории //sdcard//astroplayer/views/, например //sdcard//astroplayer/views/NewDesign/file.png ****** select_image_small_progress (Картинка для маленького прогресс-бара в плэйлисте для выбранного трека) ------ Имя файла-картинки. Файл должен находиться в директории //sdcard//astroplayer/views/, например //sdcard//astroplayer/views/NewDesign/file.png ****** select_background_small_progress (Фоновая картинка для выбранного трека в плэйлисте) ------ Имя файла-картинки. Файл должен находиться в директории //sdcard//astroplayer/views/, например //sdcard//astroplayer/views/NewDesign/file.png ****** image_left (Левая часть прогресс-бара) ------ Имя файла-картинки. Файл должен находиться в директории //sdcard//astroplayer/views/, например //sdcard//astroplayer/views/NewDesign/file.png ****** image_right (Правая часть прогресс-бара) ------ Имя файла-картинки. Файл должен находиться в директории //sdcard//astroplayer/views/, например //sdcard//astroplayer/views/NewDesign/file.png ****** image_center (Картинка — основная часть прогресс-бара) ------ Имя файла-картинки. Файл должен находиться в директории //sdcard//astroplayer/views/, например //sdcard//astroplayer/views/NewDesign/file.png ****** text_left_padding (Левый отступ для названий треков в плэйлисте) ------ Строка формата "Npx", например "65px", N - величина в пикселях ****** author_name (имя автора скина) ------ Строка "Name" ****** author_url (url автора скина) ------ Строка "URL" ****** version (номер версии скина) ------ Строка вида "0.0" ****** 3.2. Атрибут id. Атрибуту id назначается уникальное значение для каждого тега. Некоторые значения id зарезервированы за специальными элементами пользовательского интерфейса: Значение id : Элемент "@+id/id_button_lyrics" : Кнопка Lirics "@+id/id_button_up" : Кнопка Previous track "@+id/id_button_open" : Кнопка Open "@+id/id_button_rewind" : Кнопка Rewind "@+id/id_button_playpause" : Кнопка Play / Pause "@+id/id_button_fastforward" : Кнопка Fast Forward "@+id/id_button_bookmark" : Кнопка Bookmark "@+id/id_button_down" : Кнопка Next track "@+id/id_button_library" : Кнопка Library "@+id/id_button_repeat" : Кнопка Repeat "@+id/id_button_shuffle" : Кнопка Shuffle "@+id/id_button_forward1min" : Кнопка Fast Forward 1 minute "@+id/id_button_forward2min" : Кнопка Fast Forward 2 minute "@+id/id_button_forward3min" : Кнопка Fast Forward 3 minute "@+id/id_button_forward15sec" : Кнопка Fast Forward 15 sec "@+id/id_button_rewind1min" : Кнопка Rewind 1 minute "@+id/id_button_rewind2min" : Кнопка Rewind 2 minute "@+id/id_button_rewind3min" : Кнопка Rewind 3 minute "@+id/id_button_rewind15sec" : Кнопка Rewind 15 sec "@+id/id_button_goto" : Кнопка «Call dialog go to» "@+id/id_button_select_skin" : Кнопка «Select Skin dialog» "@+id/id_button_list_bookmarks" : Кнопка List bookmarks "@+id/id_button_stop" : Кнопка Stop "@+id/id_button_goto_playlist_start" : Кнопка Go to playlist start "@+id/id_button_eq" : Кнопка Equaliser "@+id/id_button_cover" : Кнопка Cover of track "@+id/id_top_panel" : Верхний Layout с данными текущего трека ( Top Panel ) "@+id/id_tracks" : PlaylistView ( см. п. 2.5 ) "@+id/id_mid" : Центральный Layout для графического интерфейса "@+id/id_bottom" : Нижний Layout для графического интерфейса "@+id/id_bar" : CustomSeekBar ( см. п. 2.7 ) "@+id/id_header" : Текстовое поле с названием трека, которое должно находиться в верхнем Layout'е ( Top Panel ) "@+id/id_details" : Текстовое поле с названием альбома / исполнителя, которое должно находиться в верхнем Layout'е ( Top Panel ) "@+id/id_timetextview" : Текстовое поле с временем трека, которое должно находиться в верхнем Layout'е ( Top Panel ) "@+id/id_lyrics" : ScrollView ( см. п. 2.6 )