motofan logo
       
> 

Создание тем для прошивок MIUI, Обсуждаем, делимся информацией

Claus398
сообщение 16.6.2012, 11:26 Закрепленное сообщение!


Авторитет
********

Группа: Контент-менеджеры
Сообщений: 12 345
Регистрация: 6.7.2007
Из: Украина. Кривой Рог
Пользователь №: 140 536

Рейтинг: 3125.5



В этой теме предлагаю собирать информацию о том как делать темы для прошивок MIUI, а также решения различных, возникающих проблем связанных с установкой\редактированием.
Быстрая навигация:
Скачать: Темы для прошивок MIUI
Скачать: Темы для прошивок MIUI v.4 ICS

Основное:
Состав тем и отдельных ее элементов

Программы для создания\редактирования тем и отдельных её элементов.
Idiot - Программа для создания и редактирования тем для MIUI
MIUI Theme Editor - Программа для редактирования тем MIUI
Lockscreen-Debugger - Отладчик локскринов на ПК.

Инструкции по редактированию локскрина.
Оформление экрана ввода ключа блокировки.
Отображение рабочего стола (обоев, живых обоев) на экране блокировки.
Отображение иконок уведомлений в статусбаре локскрина.
Небольшая выжимка по типам анимаций с оригинального! треда документации MIUI Lockscreen
Вывод заряда батареи на экран блокировки
Вывод погоды на LockScreen. Источники данных
Быстрая и простая русификация, украинизация, ... локскринов.

Работа с иконками:
Как заменить иконки, правильное имя для иконки приложения
Как создать иконпак для MIUI из кучи PNG-файлов. А так же добавить иконку в уже существующий.

Проблемы связные с статусной строкой:
Замена иконок в статус баре, замена логотипа оператора в статус баре, отображение иконок батареи в статусбаре и их расположение в теме.

Сообщение отредактировал Claus398 - 22.6.2012, 14:04
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Claus398
сообщение 23.11.2011, 17:08


Авторитет
********

Группа: Контент-менеджеры
Сообщений: 12 345
Регистрация: 6.7.2007
Из: Украина. Кривой Рог
Пользователь №: 140 536

Рейтинг: 3125.5



Программа для создания и редактирования тем для MIUI
Idiot версия: v1.2.0.1 Beta
Прикрепленное изображение
Пока что русского языка в программе нет.
Описание:
Программа для создания и редактирования тем для MIUI от xda-developers.
Разработчик: xda-developers
Домашняя страница: http://forum.xda-developers.com/showthread.php?t=1007441
Скачать:
(v1.2.0.1) источник 1
(v1.2.0.1) источник 2
(v1.2.0.20)
-------------------------------------
Небольшое описание

1. Из главного окна вы можете добавить PNG (Download png's to DB) в свою базу из меню Theme. Это позволит вам импортировать изображения в вашу базу данных из существующих тем, чтобы добавить их в новые .apk (например, чтобы обновить вашу тему или слегка подправить другую)

2. Здесь выберите .zip архив, содержащий .apk с темами, которые вы хотите добавить. Программа сама распределит содержимое .apk на /system/ и /app/ директории.

3. Следующее, что вы видите - это извлечение PNG из темы. Здесь вы можете видеть все .apk из выбранного архива. Выберите те, что вам нужны двойным щелчком и они будут готовы к добавлению в вашу базу. Справа есть предварительный просмотр. Нажмите кнопку extract чтобы извлечь их. Если вы хотите отсортировать извлеченное, вы можете добавить тэги к каждому файлу.

4. После импорта вы можете закрыть это окно. Чтобы открыть вашу базу изображений, откройте меню Theme и выберите view png database. Это может занять много времени, если у вас объемная база.

Здесь вы можете видеть все .apk с .png, которые есть в вашей базе. Вы можете сравнить то, что есть в вашей базе с тем, что есть в той теме, с которой вы работаете.

5. После того, как вы наиграетесь с базой и добавлением .png, вы можете попробовать подготовить свою базовую тему, чтобы начать создавать свою собственную.

Сделайте это, открыв меню Theme] и выберите set base theme. Сюда вы можете перетянуть .apk, которые вы будете редактировать. Нужно, чтобы они были доступны с вашего компьютера, так что извлеките их из .zip архива в папку на рабочем столе, чтобы начать. Вам понадобится отредактировать все app .apk, а так же framework-res.apk и twframework-res.apk для полноценной темы. Закройте, когда закончите.

6. Теперь наша базовая тема и изображения готовы. Нажмите New Theme из главного окна (если у вас есть незаконченная тема, используйте open theme) Выберите имя для темы и нажмите ok. Это загрузит выбранные вами для основы .apk и сделает их готовыми к редактированию.
[close]

-------------------------------------------------
Не большой FAQ по програме IDIOT

спасибо NuttShell
Открываем програму,
Themes - Open theme
В диалоге жмем Import - выбираем тему с диска, жмем ОК - ваша тема появится в списке,
после этого жмем дважды по ней - тема откроется.
Прикрепленное изображение
В поле Theme Pack выбираем необходимый компонент, даблклик.
Я выбрал framework-res (для примера)
Прикрепленное изображение
В правом поле отобразится соответствующий xml.
Даблклик по нему - произойдет переключение в режим просмотра/правки xml c просмотром/редактированием значений.
Прикрепленное изображение
Даблклик по значению - отобразится окно выбора цвета, при выборе цвета его числовое значение подставится в соответствующее поле,
прога спросит - сохранить предыдущее значение прозрачности?
Прикрепленное изображение
Сохраненный xml будет лежать по пути:
Путь куда установлен IDIOT\Themes\Название редактируемой темы.mtz\framework-res.files\
[close]


Сообщение отредактировал Claus398 - 14.1.2012, 16:15
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Claus398
сообщение 16.6.2012, 11:59


Авторитет
********

Группа: Контент-менеджеры
Сообщений: 12 345
Регистрация: 6.7.2007
Из: Украина. Кривой Рог
Пользователь №: 140 536

Рейтинг: 3125.5



MIUI Theme Editor
Автор: Clever_Name_Here
Источник: XDA
Описание: Программа для редактирования тем MIUI от пользователя XDA Dev.
Баги и предложения
Списки изменений
Новые версии программы

Сообщение отредактировал Claus398 - 16.6.2012, 12:07
Прикрепленное изображение Прикрепленное изображение Прикрепленное изображение
Прикрепленный файл setupMIUIThemeEditor1.0.2.rar   ( 3 мегабайт ) Кол-во скачиваний: 2433
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Claus398
сообщение 16.6.2012, 12:24


Авторитет
********

Группа: Контент-менеджеры
Сообщений: 12 345
Регистрация: 6.7.2007
Из: Украина. Кривой Рог
Пользователь №: 140 536

Рейтинг: 3125.5



[MIUI] Lockscreen-Debugger
Автор: v1r0x

Прикрепленное изображение

Описание:
Отладчик локскринов на ПК.
Известная проблема - при отладке локскрина много времени тратится на сопутствующие процессу операции:
-распаковка локскрина,
-запаковка локскрина,
-перенос измененного mtz на карту памяти,
-применение локскрина.
Грубо говоря, при изменении, допустим только одного значения координаты, весь процесс необходимо производить вновь.
Данная утилитка создана для того, чтобы разработчик мог сосредоточиться только на процессе отладки,
минуя промежуточные шаги.
Программа находится в стадии бета тестирования.
Инструкция
Что необходимо для работы:
- Java Runtime, программа написана на java.
Что в архиве:
В архиве находятся 5 файлов/папок:
- advanced (папка)
- wallpaper (папка)
- MIUI-LS-Tester.jar (исполняемый файл программы)
- bgtWeather.db (файл базы данных погодного виджеты 9sweather)
- systemCPs.db (база вызовов, смс, контактов для ContentProviders [еще не закончено])
Можно заменить содержимое папок wallpaper и advanced на свое,
но автор не гарантирует что это будет корректно работать (шютка такая).
Некоторые функции еще не реализованы (unlocker и variables элементы, например: #unlocker.move_x)
Все, что поддерживается программой, можно найти в \advanced\manifest.xml

Как пользоваться:
Распаковать содержимое архива в отдельную папку и дважды кликнуть по MIUI-LS-Tester.jar
Либо запустить cmd, в окне вставить команду
java -jar MIUI-LS-Tester.jar

Краткий обзор:
После запуска программа отобразит диалог, в котором надо подтвердить, либо ввести свои размеры локскрина.
После запуска необходимо выбрать manifest.xml для редактирования через команду
File-Open XML
и нажать кнопку 'Preview' в правой части окна программы.
После первого нажатия кнопки 'Preview' отобразятся еще три кнопки:
Screenshot:
Будет сделан скриншот текущего локскрина и помещен
в папку <MIUI-LS-Tester.jar-Location>/preview/lockscreen_preview_x.jpg
create mtz:
Будет создан файл темы, содержащей локскрин. Файл создается в корне папки с программой.
toggle buttons:
Переключает Trigger-кнопки.
Так как они невидимы, их переключение производится посредством нажатия на эту кнопку.

Назначение остальных элементов управления в верхней правой части понятно без лишних описаний.
При изменении manifest.xml при открытой программе достаточно нажать кнопку 'Preview' для того,
чтобы изменения были восприняты программой.

Сообщение отредактировал Claus398 - 16.6.2012, 12:26
Прикрепленный файл ls_tester_alpha.zip   ( 6.24 мегабайт ) Кол-во скачиваний: 1216
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Claus398
сообщение 22.6.2012, 7:58


Авторитет
********

Группа: Контент-менеджеры
Сообщений: 12 345
Регистрация: 6.7.2007
Из: Украина. Кривой Рог
Пользователь №: 140 536

Рейтинг: 3125.5



Состав тем и отдельных ее элементов
Основной состав темы
Spoiler:
description.xml [color=#000000](Файл конфигурации)
com.android.appshare (Сетевой диск)
com.android.contacts (Контакты)
com.android.deskclock (Часы будильник)
com.android.fileexplorer (Файл менеджер)
com.android.gallery (Галерея)
com.android.launcher (Рабочий стол)
com.android.mms (Сообщения)
com.android.monitor (Монитор)
com.android.phone (Звонилка)
com.android.settings (Настройки)
com.android.systemui (УведомленияПереключатели)
com.android.thememanager (Менеджер тем)
com.android.updater (Обновление системы)
com.miui.backup (Резервное копирование)
com.miui.camera (Камера)
com.miui.player (Музыкальный плеер)
framework-res (Системные ресурсы)
theme_values.xml (Профиль цвет текста) Примечание: файл в рамках разрешением
icons (Иконки)
lockscreen (Экран блокировки)
preview (Предварительный просмотр)
fonts (Шрифт)
ringtones (мелодии)
boots (Анимация загрузки)
[close]

Информация о теме. Файл dexcription.xml
Spoiler:
Должен иметь такие строки
<?xml version="1.0" encoding="utf-8" standalone="no" ?> (версия; кодировка)
- <MIUI-Theme>
<title>BlueDroid</title> (Название)
<author>SeF</author> (Автор)
<version>v1</version> (Версия)
<uiVersion>1</uiVersion> (Версия уведомлений)
</MIUI-Theme>
[close]

Спецификация иконок (файл icons)
Spoiler:
icon_background.png -подложка иконки
icon_border.png -граница иконки
иконка приложения -устанавливаема из apk
icon_pattern.png -наложение поверх иконки
[close]

Спецификация шрифтов (файл fonts)
Spoiler:
Clockopia.ttf - шрифт часов в стандартном будильнике и на экране набора графического ключа.
Arial.ttf - обычный шрифт
Arial-Bold.ttf - жирный шрифт, лучше чтобы он был, тот же к9 mail жирным выделяет непрочитанные письма
Arial-italic.ttf - наклонененный.
Arial-BoldItalic.ttf - жирный наклоненный.
Система использует Arial.ttf и Arial-Bold.ttf (в частности Bold в часах статус бара, заголовки некоторых окон, показания CurrentWidget),
Arial-Italic.ttf и Arial-BoldItalic.ttf активно используются в браузере.
[close]

Спецификация анимации загрузки (файл boots)
Spoiler:
Bootaudio (Мелодия)
Bootanimation (анимация загрузки)
[close]

Специ фикация рингтонов (файл ringtones)
Spoiler:
Alarm (Будильник)
Notification (Уведомленик)
Ringtone (Звонок)
[close]

Цвета в xml файле
Spoiler:
#ff000000 (чёрный цвет) на белый #ffffffff или на какой вам нравится.
Так же можете поиграться с прозрачностью. В значении #ff000000 первые ff это прозрачность. Т.е FF это полность непрозрачный, 00 соответственно полностью прозрачный.
[close]

Известные активити имена для запуска других приложений в lockscreens
Spoiler:
FBreader

<Intent action="android.intent.action.MAIN" package="org.geometerplus.zlibrary.ui.android" class="org.geometerplus.android.fbreader.FBReader" />

CoolReader

<Intent action="android.intent.action.MAIN" package="org.coolreader" class="org.coolreader.CoolReader" />

PowerAMP

<Intent action="android.intent.action.MAIN" package="com.maxmpz.audioplayer" class="com.maxmpz.audioplayer.PlayerUIActivity"/>

Gmail

<Intent action="android.intent.action.MAIN" package="com.google.android.gm" class="com.google.android.gm.ConversationListActivity"/>

Calendar

<Intent action="android.intent.action.VIEW" package="com.android.calendar" class="com.android.calendar.LaunchActivity"/>

Gallery

<Intent action="android.intent.action.MAIN" package="com.android.gallery" class="com.android.gallery.ui.MainActivity"/>

SoundRecorder

<Intent action="android.intent.action.MAIN" package="com.android.soundrecorder" class="com.android.soundrecorder.SoundRecorder"/>

Browser

<Intent action="android.intent.action.VIEW" package="com.android.browser" class="com.android.browser.BrowserActivity"/>

Phone(звонилка)

<Intent action="android.intent.action.VIEW" type="vnd.android.cursor.dir/calls"/>

SMS

<Intent action="android.intent.action.MAIN" type="vnd.android-dir/mms-sms" category="android.intent.category.DEFAULT"/>

MIUI Player

<Intent action="android.intent.action.MAIN" package="com.miui.player" class="com.miui.player.ui.MusicBrowserActivity"/>

FileExplorer

<Intent action="android.intent.action.MAIN" package="com.android.fileexplorer" class="com.android.fileexplorer.FileExplorerTabActivity"/>

Агент Mail.Ru

<Intent action="android.intent.action.MAIN" package="ru.mail" class="ru.mail.instantmessanger.activities.contactlist.ContactsActivity"/>

Navitel

<Intent action="android.intent.action.MAIN" package="com.navitel" class="com.navitel.Navitel"/>

Yandex_map

<Intent action="android.intent.action.MAIN" package="ru.yandex.yandexmaps" class="ru.yandex.yandexmaps.MapActivity"/>

Mail_Android (встроенная почта)

<Intent action="android.intent.action.MAIN" package="com.android.email" class="com.android.email.activity.Welcome"/>

Aqua_Mail (бесплатная версия, но и на платной должно работать)

<Intent action="android.intent.action.MAIN" package="org.kman.AquaMail" class="org.kman.AquaMail.ui.AccountListActivity"/>

MIUI_Camera

<Intent action="android.intent.action.MAIN" package="com.miui.camera" class="com.miui.camera.Camera"/>
[close]



Сообщение отредактировал Claus398 - 22.6.2012, 8:01
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Claus398
сообщение 22.6.2012, 8:20


Авторитет
********

Группа: Контент-менеджеры
Сообщений: 12 345
Регистрация: 6.7.2007
Из: Украина. Кривой Рог
Пользователь №: 140 536

Рейтинг: 3125.5



Оформление экрана ввода ключа блокировки
По умолчанию экран ввода ключа блокировки выглядит так:
Прикрепленное изображениеПрикрепленное изображениеПрикрепленное изображение

Файлы графических изображений находятся в
framework-res.apk\res\drawable-hdpi\ вашей прошивки и их можно переопределить темой,
если добавить свои файлы в
framework-res\res\drawable-hdpi\ вашей темы.

Описание графических файлов:
btn_code_lock_default.png
– центральный круг в не нажатом положении (на скриншоте 1 - меньший серый)
btn_code_lock_touched.png
– центральный круг в нажатом положении (на скриншоте 2 - меньший черный)
code_lock_bottom.9.png
– линия, появляющаяся при соединении больших кругов
code_lock_left.9.png
– линия, появляющаяся при соединении больших кругов
code_lock_top.9.png
– линия, появляющаяся при соединении больших кругов
indicator_code_lock_drag_direction_green_up.png
– маленькая стрелка-указатель при соединении (правильном) больших кругов
indicator_code_lock_drag_direction_red_up.png
– маленькая стрелка-указатель при неправильном соединении больших кругов
indicator_code_lock_point_area_default.png
– изображение большого круга при отсутствии нажатия (соединения) (на скриншоте 1 - большой черный)
indicator_code_lock_point_area_green.png
– изображение большого круга при соединении (правильном) больших кругов (на скриншоте 2 - большой зеленый)
indicator_code_lock_point_area_red.png
– изображение большого круга при неправильном соединении больших кругов (на скриншоте 3 - большой красный)
Пример, как можно сделать:
Прикрепленное изображениеПрикрепленное изображениеПрикрепленное изображение
Скачать шаблон и пример:
Прикрепленный файл framework_res_modified_orange_indicator.zip   ( 25.72 килобайт ) Кол-во скачиваний: 479
Прикрепленный файл framework_res_original_indicator_template.zip   ( 25.28 килобайт ) Кол-во скачиваний: 467
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Claus398
сообщение 22.6.2012, 8:24


Авторитет
********

Группа: Контент-менеджеры
Сообщений: 12 345
Регистрация: 6.7.2007
Из: Украина. Кривой Рог
Пользователь №: 140 536

Рейтинг: 3125.5



Отображение рабочего стола (обоев, живых обоев) на экране блокировки.
В заголовке файла Ваша_тема.mtz\lockscreen\advance\manifest.xml
добавить строку displayDesktop="false", например:
Код

<?xml version="1.0" encoding="utf-8"?>
<Lockscreen version="1" frameRate="30" displayDesktop="false">

и установить прозрачную обоину локскрина. Или полупрозрачную.
Часто спрашивают, как сделать, чтобы при сдвигании разблокировщика было видно рабочий стол с иконками.
Тоже очень просто.
В заголовке файла Ваша_тема.mtz\lockscreen\advance\manifest.xml
добавить строку displayDesktop="true", например:

Код

<?xml version="1.0" encoding="utf-8"?>
<Lockscreen version="1" frameRate="30" displayDesktop="true">

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

Сообщение отредактировал Claus398 - 22.6.2012, 8:29
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Claus398
сообщение 22.6.2012, 8:34


Авторитет
********

Группа: Контент-менеджеры
Сообщений: 12 345
Регистрация: 6.7.2007
Из: Украина. Кривой Рог
Пользователь №: 140 536

Рейтинг: 3125.5



Отображение иконок уведомлений в статусбаре локскрина.
Это не приложения, а значки нотификаций (notification icons)
Правится очень просто. Создаем текстовый файл theme_values.xml
такого содержания:
Код

<MIUI_Theme_Values>
    <bool name="config_show_status_bar_battery_for_keyguard">false</bool>
    <bool name="config_show_status_bar_carrier_for_keyguard">false</bool>
    <bool name="config_show_status_bar_date_for_keyguard">false</bool>
    <bool name="config_show_status_bar_notification_for_keyguard">false</bool>
    <bool name="config_show_status_bar_status_for_keyguard">false</bool>
    <bool name="config_show_status_bar_time_for_keyguard">false</bool>
    <bool name="config_lock_screen_battery_animation_horizontal">false</bool>
</MIUI_Theme_Values>


config_show_status_bar_battery_for_keyguard - отображение значка батареи,
config_show_status_bar_carrier_for_keyguard - логотип оператора,
config_show_status_bar_date_for_keyguard - дата,
config_show_status_bar_notification_for_keyguard - уведомления (почта, пропущенные смс и звонки и др.),
config_show_status_bar_status_for_keyguard - статус.
config_show_status_bar_time_for_keyguard - время,
config_lock_screen_battery_animation_horizontal - горизонтальная анимация батареи на экране блокировки.

Каждая переменная - логическая,
может принимать значения либо true (отображать), либо false (не отображать) иконку в статус баре.
Значения можно выставлять произвольно, не обязательно все в true или в false, а выбрать только те, которые вам нужны.
Пробуйте и будет понятно, что именно вам нужно, чтобы отображалось.
Полученный файл theme_values.xml
копируем по пути:
Ваша_тема.mtz\lockscreen\theme_values.xml
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Claus398
сообщение 22.6.2012, 9:28


Авторитет
********

Группа: Контент-менеджеры
Сообщений: 12 345
Регистрация: 6.7.2007
Из: Украина. Кривой Рог
Пользователь №: 140 536

Рейтинг: 3125.5



Небольшая выжимка по типам анимаций с оригинального! треда документации MIUI Lockscreen

Элемент Image поддерживает анимацию.
Типы анимации:
– позиция (position),
– размер (size),
– вращение (rotation),
– прозрачность (alpha),
– набор изображений (picture source).
Анимации независимы от всего остального, они проигрываются по времени и циклу.
Анимация содержит некоторые ключевые кадры (фреймы). Ключевой кадр имеет свойства и время.
Кроме анимации изображений, остальные типы анимаций интерполируют текущие свойства на основании текущего времени и свойств соседних ключевых кадров.
Если время первого ключевого кадра не равно 0, тогда свойства изображения в момент времени 0 равны свойствам оригинального изображения.
Время измерения - ms (миллисекунды).

Пример анимации положения (позиции)

Код

<Image>
   <PositionAnimation>
     <Position x="10" y="20" time="100"/>
     <Position x="100" y="200" time="1000"/>
   </PositionAnimation>
</Image>


В примере два ключевых фрейма

первый
<Position x="10" y="20" time="100"/>

второй
<Position x="100" y="200" time="1000"/>

если текущее время равно 1600:
(полный цикл равен 1000, соответственно положение во времени равно 1600 - 1000 = 600)
Код

time   0   100   [600]  1000
       |    |     |     |
x     10   10    60    100
y     20   20   120    200


Позиция по отношению к позиции исходного изображения

Другие виды анимации:
Анимация вращения
Код

<RotationAnimation>
   <Rotation angle="" time=""/>
   <Rotation angle="" time=""/>
</RotationAnimation>


Анимация размера
Код
<SizeAnimation>
<! --w - ширина, h - высота -->
   <Size w="" h="" time=""/>
   <Size w="" h="" time=""/>
</SizeAnimation>


Анимация прозрачности
Код

<AlphaAnimation>
<!-- 0-255 -->
   <Alpha a="" time=""/>
   <Alpha a="" time=""/>
</AlphaAnimation>


Анимация набора изображений
Этот вид анимации мало чем отличается от других, активным является кадр с большим, чем текущее время, значением свойства time.
x, y - необязательные параметры, означающие относительное положение изображения внутри контейнера Image.
Код

<SourcesAnimation>
<!-- optional: x y -->
   <Source x="" y="" src="pic1.png" time="100"/>
   <Source x="" y="" src="pic2.png" time="1000"/>
</SourcesAnimation>


Если текущее время равно 1600, активное изображение - pic2.png

Пример:
В приведенном примере изображение плавно перемещается от левого края экрана к правому в течение 1 секунды, после 1 секунды останавливается.
Начальная прозрачность изображения равна 175 и она сохраняется во время движения изображения от левого края экрана к правому,
при достижении правого края становится равной 255 на 0.5 секунды, затем постепенно исчезает за 0,5 секунды.
Потом идет повтор в цикле.
Код

<Image x="0" y="#screen_height-177" src="charging_light.png" category="Charging">
   <PositionAnimation>
     <Position x="480" y="0" time="1000"/>
     <Position x="480" y="0" time="2000"/>
   </PositionAnimation>
   <AlphaAnimation>
     <Alpha a="175" time="0"/>
     <Alpha a="175" time="1000"/>
     <Alpha a="255" time="1500"/>
     <Alpha a="0" time="2000"/>
   </AlphaAnimation>
</Image>


Свойство Category
Все элементы, за исключением unlocker имеют свойство Category.
Возможны три значения этого свойства:
– Charging,
– BatteryLow,
– BatteryFull,
– Normal.
Элемент с назначенным свойством Category отображается только в назначенном положении.
Свойство используется для отбражения элементов при зарядке (текст, анимация).
например:
<Image x="100" y="100" src="pic.png" category="Charging"/>
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Claus398
сообщение 22.6.2012, 10:12


Авторитет
********

Группа: Контент-менеджеры
Сообщений: 12 345
Регистрация: 6.7.2007
Из: Украина. Кривой Рог
Пользователь №: 140 536

Рейтинг: 3125.5



Вывод заряда батареи на экран блокировки:

Параметр category="" предназначен для того, что бы информировать пользователя о состоянии батареи и выводить инфу, свойственную только!!! для данного состояния..
Пример:
Код

<Text x="70" y="501" color="#aaffffff" align="left" size="22" category="Charging" format="%d%% зарядка.." paras="#battery_level" alpha="150 - #ring.state*255" />


Если мы уберем из данного выражения category="Charging", то на экране будет постоянно висеть надпись 50% зарядка.., не зависимо от состояния батареи, как то Зарядка, Заряжено, Разрядка..

у параметра category есть 4 состояния которые можно использовать:
the state of plug and battery
Normal:0
Charging:1
BatteryLow:2
BatteryFull:3

Например:
Код
<Text x="70" y="501" color="#aaffffff" align="left" size="22" category="BatteryLow" format="Осталось %d%% заряда..Подключите ЗУ" paras="#battery_level" alpha="150 - #ring.state*255" />


Здесь при использовании category="BatteryLow" у нас появится надпись на экране "Осталось 15% заряда..Подключите ЗУ" только!!! при достижении min уровня заряда..В любом другом случае ее не будет видно..

Еще:
Код

<Text x="70" y="501" color="#aaffffff" align="left" size="22" category="Normal" format="Батарея разряжается.Осталось %d%% " paras="#battery_level" alpha="150 - #ring.state*255" />


Здесь при использовании category="Normal" у нас появится надпись на экране "Батарея разряжается.Осталось 75%" только!!! при отключенном ЗУ(будь то сеть или ЮСБ)

Еще эти параметры можно использовать для вывода изображения.
Например:
Код

<Image x="0" y="0" src="low.png" category="BatteryLow"  alpha="150 - #ring.state*255" />
<Text x="70" y="501" color="#aaffffff" align="left" size="22" category="BatteryLow" format="Осталось %d%% заряда..Подключите ЗУ" paras="#battery_level" alpha="150 - #ring.state*255" />

При min уровне заряда (category="BatteryLow") на экран выведется картинка (src="low.png"), а на ней надпись Осталось %d%% заряда..Подключите ЗУ

Еще пример анимация при Зарядке:
Код

<Image x="0" y="0" category="Charging"  alpha="150 - #ring.state*255" >
               <SourcesAnimation>
                 <Source src="battery_0.png" time="500"/>
                 <Source src="battery_1.png" time="1000"/>
                 <Source src="battery_2.png" time="1500"/>
                 <Source src="battery_3.png" time="2000"/>
                 <Source src="battery_4.png" time="2500"/>
                 <Source src="battery_5.png" time="3000"/>
                 <Source src="battery_6.png" time="3500"/>
                 <Source src="battery_7.png" time="4000"/>
                 <Source src="battery_8.png" time="4500"/>
                 <Source src="battery_9.png" time="5500"/>
               </SourcesAnimation>
            </Image>


Здесь изображения будут выводиться только!! при подкл.ЗУ, а в остальных случаях будут игнорироваться..

Вообщем параметр category="" можно ипользовать в разных случаях и состояниях..

И по-этому, для более корректного и правильного вывода информации следует писать так
Код

<Text x="#screen_width/2" y="#screen_height-280" category="Normal" color="#FFFFFFFF" size="36" format="Батарея %d%%" paras="#battery_level" align="center" />


Если же Вам не надо никакой доп. информации о состоянии батареи, т.е. тупо на экран 50%-60% и т.д., то тогда без!!! параметра category=""

Код

<Text x="#screen_width/2" y="#screen_height-280"  color="#FFFFFFFF" size="36" format="Батарея %d%%" paras="#battery_level" align="center" />


и это тож будет считаться правильно.. Причем в таком виде информация будет висеть всегда, независимо от состояния батареи(Заряжается, разряжается или заряжена)

Тот же параметр но отображение, только при зарядке и взято из стокового манифеста выглядит так(та строчка, что выше анимации заряда)
Код

<Text x="#screen_width/2" y="#screen_height-260-45" align="center" visibility="eq(0,#unlocker.state)*eq(1,#battery_state)" color="#AAEEEEEE" size="24" format="Заряжается %d%%" paras="#battery_level">

здесь все равно используется category="Charging", но в другом виде..(1,#battery_state) -- это и есть оно..Состояние батареи 1, т.е. зарядка..
См.выше..

Еще один момент...Если Вы хотите, что бы инфа о батарее была всегда поверх всех изображений, то ее нужно прописывать в самом конце файла разметки, либо использовать параметр "#battery_state" для скрытия тех элементов, которые мешают выводу инфы о состоянии батареи..
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Claus398
сообщение 22.6.2012, 10:47


Авторитет
********

Группа: Контент-менеджеры
Сообщений: 12 345
Регистрация: 6.7.2007
Из: Украина. Кривой Рог
Пользователь №: 140 536

Рейтинг: 3125.5



Вывод погоды на LockScreen. Источники данных

Структурированные данные в Android хранятся с использованием двух механизмов.
• Базы данных SQLite. Если нужно хранить управляемую, структурированную информацию,
можете использовать библиотеку SQLite для работы с реляционными базами данных. Любое приложение может
создавать свои собственные базы данных, над которыми оно будет иметь полный контроль.
• Источники данных. Источники данных предоставляют общий, строго определенный интерфейс для обмена данными.
В данном случае нас интересует второй механизм, а именно - работа с источниками данных.

Spoiler:

Источники данных предоставляют интерфейс для публикации и потребления данных, основанный
на простой адресной модели URI, используя схему content://.
Этот механизм позволяет отделить логику приложения от данных, делая ваши программы нечувствительными к источникам,
из которых поступает информация, путем скрытия базового источника с данными.
Общие Источники данных могут использоваться для получения результатов запросов,
обновления или удаления существующих записей, а также для добавления новых.
Любое приложение с соответствующими полномочиями может добавлять, удалять или изменять данные,
принадлежащие другому приложению, включая стандартные базы данных Android.
Многие стандартные базы данных доступны в качестве Источников данных и могут использоваться
сторонними приложениями. Сюда входят телефонные контакты, хранилище информации и другие стандартные базы данных,
Публикуя собственные данные в виде Источников данных, вы получаете шанс (и даете его другим разработчикам)
объединять и расширять их с помощью новых приложений.
[close]



После того как разработчик создает свой Источник данных, он добавляет его в манифест приложения.
Базовый путь URI указывается в теге authorities файла AndroidManifest.xml, который находится в apk приложения:
Код

<provider android:name="MyProvider"
android:authorities="com.paad.provider.myapp"/>


В примере для GenieWidget базовый путь URI, указанный в AndroidManifest.xml будет следующий:
com.google.android.apps.genie.geniewidget.weather

Код

<provider
    android:name=".providers.WeatherProvider"
    android:exported="true"
    android:authorities="com.google.android.apps.genie.geniewidget.weather"
    >
</provider>


Формат файла AndroidManifest.xml

Хотя файл и имеет расширение xml, он не совсем текстовый.
Подробно формат рассмотрен здесь
Там же есть небольшая, но очень полезная утилита для декомпиляции AndroidManifest.xml.
Можно сделать то-же самое и APKTools, но для его работы нужно будет скачать и JDK...
Для данной утилиты ничего этого не надо. Работает из командной строки, по умолчанию выводит декомпилированное содержимое в окно консоли.
Для упрощения работы сделал bat файл.
Содержимое архива распаковать в любую папку на компьютере, скопировать туда же исходные xml (можно несколько сразу).
Запустить decodexml.bat
Декомпилированные файлы будут иметь расширение *.txt и отлично редактируются в любом текстовом редакторе.
Прикрепленный файл androidxml_1.0.0.1.zip   ( 143.27 килобайт ) Кол-во скачиваний: 246


Применение в lockscreen\advance\manifest.xml

URI доступа указывается в параметре uriFormat локскрина:
Код

<!-- content provider binder for google weather -->
<VariableBinders>
   <ContentProviderBinder
           uriFormat="content://com.google.android.apps.genie.geniewidget.weather/weather/current/%d"
           uriParas="#time_sys"
           columns="iconResId,location,temperature,lowTemperature,highTemperature,description"
           countName="hasweather">
       <Variable name="weather_id" type="int" column="iconResId"/>
       <Variable name="weather_location" type="string" column="location"/>
       <Variable name="weather_temperature" type="int" column="temperature"/>
       <Variable name="weather_lowTemperature" type="int" column="lowTemperature"/>
       <Variable name="weather_highTemperature" type="int" column="highTemperature"/>
       <Variable name="weather_description" type="string" column="description"/>
   </ContentProviderBinder>
</VariableBinders>


Пояснения:
Путь после content://com.google.android.apps.genie.geniewidget.weather - запрос к базе данных.
Параметр columns определяет возвращаемые по запросу поля базы данных, в которых хранится полученная приложением информация.
Параметры, определяемые в <Variable name= - переменные, синонимы существующих в базе данных приложения имен полей данных.

Хранящиеся в базе приложения данные (имена полей, тип данных) можно посмотреть, если открыть базу данных приложения в SQLite Editor.
SQLite Editor и AndSQLite - редактирование БД SQLite

Сообщение отредактировал Claus398 - 22.6.2012, 10:47
Прикрепленный файл androidxml_1.0.0.1.zip   ( 143.27 килобайт ) Кол-во скачиваний: 246
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Claus398
сообщение 22.6.2012, 10:53


Авторитет
********

Группа: Контент-менеджеры
Сообщений: 12 345
Регистрация: 6.7.2007
Из: Украина. Кривой Рог
Пользователь №: 140 536

Рейтинг: 3125.5



Быстрая и простая русификация, украинизация, ... локскринов. Quadratish.Praktish.Gut.
Автор: justndo and co.

Инструкция:
Шаг 1: Распаковываем наш файл *.mtz в любую удобную для Вас папку.
Шаг 2: В распакованной папке находим файл lockscreen. И дописываем ему расширение .zip после чего разархивируем опять таки в удобную для Вас папку
(лучше не в ту же, куда и mtz файл)
Шаг 3: В распакованном файле lockscreen ищем папку advance а в ней файл manifest.xml.
Шаг 4: Открываем файл manifest.xml любым блокнотоподобным редактором (я советую Notepad+). В нем сразу вверзу в меню выбираем "Кодировка" - "UTF-8 без BOM".
Шаг 5: В следующем файле ищем такие строки:
Для русификации текста "Идет зарядка xx%"
Код

<Text x="#screen_width-70" y="175" category="Charging" color="#ffffffff" size="24" format="Charging ,%d%%" paras="#battery_level" align="right"/>

Для русификации текса "Батарея разряжена"
Код

<Text x="#screen_width-70" y="175" category="BatteryLow" color="#ffffffff" size="24" format="Battery Low,%d%%" paras="#battery_level" align="right"/>

Для русификации текса "Батарея заряжена"
Код

<Text x="#screen_width-70" y="175" category="BatteryFull" color="#ffffffff" size="24" text="Battery Full; (100%)" align="right"/>

Шаг 6: Соответственно заменяем на:
Для русификации текста "Идет зарядка xx%"
Код

$this_var = "Hello World!";

Для русификации текса "Батарея разряжена"
Код

<Text x="#screen_width-70" y="175" category="BatteryLow" color="#ffffffff" size="24" format="Батарея разряжена,%d%%" paras="#battery_level" align="right"/>

Для русификации текса "Батарея заряжена"
Код

<Text x="#screen_width-70" y="175" category="BatteryFull" color="#ffffffff" size="24" text="Батарея заряжена. (100%)" align="right"/>


Шаг 7: Когда все сделано, упаковываем распакованный файл lockscreen обратно (метод сжатия "Без сжатия", формат zip). И убираем у него расширение zip.
(ВАЖНО: Не забудте сохранить ту же структуру папок в архиве, что и в оригинале!)
Шаг 8: Закидываем наш переведенный файл lockscreen в папку созданную в шаге 1.
Шаг 9: Запаковываем ровно так же как в шаге 7. Меняем .zip на .mtz
Шаг 10: Готово.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Claus398
сообщение 22.6.2012, 12:44


Авторитет
********

Группа: Контент-менеджеры
Сообщений: 12 345
Регистрация: 6.7.2007
Из: Украина. Кривой Рог
Пользователь №: 140 536

Рейтинг: 3125.5



Файл отвечающий за вид значков на раб столе:
Ваша тема.mtz\icons\
icon_background.png - фон иконки
icon_border.png - граница (обводка) иконки
icon_mask.png - маска
icon_pattern.png - ?
---------
icon_folder.png - иконка папки на рабочих столах
icon_shortcut.png - иконка ярлыка
icon_shortcut_arrow.png - иконка указателя ярлыка.

Файл отвечающий за фон при нажатии на значок:
Ваша тема.mtz\framework-res\res\drawable-hdpi\
icon_highlight_rectangle.9.png - прямоугольное выделение иконки
icon_highlight_square.9.png - квадратное выделение иконки

Как узнать правильное имя для иконки приложения?
Для всех установленных на вашем кпк программ, к которым нет замены в установленной теме,
имена иконок (и сами иконки установленных приложений) можно найти в папке
Data/system/customized_icon_1

Как заменить иконки?
Установите на кпк эту программу. https://market.android.com/details?id=teq.Q...e=search_result
- в основном меню тап по кнопке Package
Прикрепленное изображение
- откроется список приложений, которые установлены на Вашем девайсе, ищем нужное, смотрим его имя, и переименовываем иконку аналогично этому названию
- добавляем иконку в пак mtz
Прикрепленное изображение
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Claus398
сообщение 22.6.2012, 13:39


Авторитет
********

Группа: Контент-менеджеры
Сообщений: 12 345
Регистрация: 6.7.2007
Из: Украина. Кривой Рог
Пользователь №: 140 536

Рейтинг: 3125.5



Как создать иконпак для MIUI из кучи PNG-файлов. А так же добавить иконку в уже существующий.
Допустим у нас есть куча PNG файлов иконок, которые Вы хотите установить себе в качестве иконпака для темы. В таком случае нам нужно проделать жуть какую простую и жуть какую нудную работу,а именно:
Шаг 1: Удостоверьтесь, что у Вас не скрыто отображение расширения файлов. Если все таки отключено, то надо включить:
1. Заходим в "Панель управления"
2. Находим значок "Свойства папки"
3. Переключаем вкладку на "Вид"
4. Ищем в списке галочку "Скрывать расширения для зарегестрированых типов файлов" ну или что то такое.

Шаг 2: Открываем папку с нашими иконкапи в формате PNG.
Лирическое отступление. Вся суть иконпака, в том, что файлы иконок имеют названия одинаковые с процессом приложения, для которого предназначена эта иконка. Например: процесс приложения номеронабирателя называется com.android.phone, следовательно и иконка для телефона должна нызваться com.android.phone.
Шаг 3: Нужно узнать имя процесса, для которого предназначается та или иная иконка. Сделать это можно двумя способами:
(Способ 1:)
Для большиства стандартных и наиболее популярных приложений в любом большом иконпаке уже есть иконки и называются они правильно. Вы можете просто делать по аналогии называть свои иконки так, как названо там. Я например делал так: устанавливал какой то большой иконпак; смотрел на иконку приложения которую я хочу заменить; находил ее в куче png файлов установленного у меня иконпака; переименовывал мою новую иконку так же как названа иконка из правильного иконпака.
(Способ 2:)
Установите программку QtADB (как правильно ее установить смотри ниже).
1. Запускаем программу.
2. Слева во вкладках выбираем "Приложения" и ждем пока программа получит весь список приложений.
3. В полученной таблице видим следующее: иконку вашей программы, название, версию, размер и пакет. Нас с Вами интересует Иконка (если хотите видеть, что меняете) и колонка "Пакет".
Прикрепленное изображение
4. Переименовываете нужную иконку в соответствии с колонкой "Пакет".
Например для Gmail колонка "пакет" содержит "com.google.android.gm". Следовательно и иконку вы должны назвать "com.google.android.gm".

(Как правильно установить QtADB)
1. Качаем архив с программой с сайта программы. http://qtadb.wordpress.com/download/
2. Качаем binaries for windows (у кого другая ОС качаем для своей)
3. Из архива с программой распаковываем папку программы.
4. Архив binaries распаковываем сразу в папку программы. Там файлы adb. Их надо поожить в папку, где лежит файл QtADB.exe.

Шаг 4: Переименовываем наши иконки в правильные названия и удаляем все ненужное из папки с иконками. Теперь все наши файлы PNG нужно упаковать в файл icons.
Шаг 5: Заархивируем все наши файлы в .zip архив.
Режим сжатия "Без сжатия".
Шаг 6: Переименуйте полученный файл в icons без какого либо расширения.
Шаг 7: Создадим файл описания, для того что б в темах иконпак имел какое-то название.
Создаем обычный .txt файл. Открываем и вставляем в него это:
Код

<?xml version="1.0" encoding="UTF-8"?>
<MIUI-Theme>
    <title>НАЗВАНИЕ</title>
    <author>ВТОРА</author>
    <version>1.0</version>
    <uiVersion>1</uiVersion>
</MIUI-Theme>

после чего меняем БОЛЬШИЕ буквы на свой текст.
Шаг 8: Теперь упакуем наш иконпак в .mtz файл. Точно так же заархивируйте файл icons и description.xml в zip архив без сжатия.
Шаг 9: Готово.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Claus398
сообщение 22.6.2012, 13:56


Авторитет
********

Группа: Контент-менеджеры
Сообщений: 12 345
Регистрация: 6.7.2007
Из: Украина. Кривой Рог
Пользователь №: 140 536

Рейтинг: 3125.5



Иконки в статус баре не применяются. Решение проблемы.
Так я понял в чем проблема со стасу баром, иконки блютуз, вафли, инета и прочего были перенесены (разобрался вот сегодня на паре ).
Раньше они лежали в Тема\com.android.systemui\res\drawable-hdpi а теперь лежат в Тема\framework-res\res\drawable-hdpi. Так мало того что их просто перенесли так их еще и переименовали! Жуть короче.
Прошивка 1.10.7, всего скорее во все последующих прошивках будет точно также, раз уж перенесли значит перенесли.
Вот архив, там лежат иконки. Путь правильный, названия тоже правильное.
Прикрепленный файл framework_res.rar   ( 52 килобайт ) Кол-во скачиваний: 280


Замена логотипа оператора в статус баре.
кто мучается со статусбар модами с лого операторов:
выбираем нужный нам статусбар, применяем, в темах жмем Изменить(внизу), там Бэкап(тоже внизу)
далее подключаем к компу телефон, идем на флешку в MIUI/theme/backup, выдераем оттуда файл backup.mtz куда угодно на комп
открываем его архиватором, извлекаем из него файлы com.android.systemui и description.xml, опять же куда удобно
файл com.android.systemui опять таки открываем архиватором, в нем заходим по пути /res/drawable-hdpi/ и добавляем туда ваш логотип с названием carrier_logo.png (если попросит заменить - соглашаемся)
если не будет открываться или глюки с сохранением - переименовываем backup.mtz и com.android.systemui в backup.zip и com.android.systemui.zip и шаманим(либо извлекаем и потом проводим обратные запаковывания и переименовывания)
открываем файл description.xml любым текстовым редактором и правим там строчку "Сохраненная" на любое свое название(чтобы было проще найти потом)
запаковываем эти 2 файла обратно в архив .zip без сжатия, меняем расширение на .mtz, кидаем в sd/MIUI/theme
заходим в Темы-Изменить-Статусбар(или Оповещения) и применяем нужный нам файл.
итого мы получили собственный и красивый статусбар. вероятность криво прошить и заменить системные файлы - 0. это плюс
минус - при смене на статусбар из другой темы с ним придется проделывать те же операции заново.

Отображение иконок батареи в статусбаре и их расположение в теме.
В MIUI все это добро хранится в файле темы по пути:
Ваша_тема.mtz\com.android.systemui\res\raw\
stat_sys_battery.png
stat_sys_battery_charge.png
stat_sys_battery_number.png
Кухня (kitchen) делает файлы для прошивания в рекавери (поправьте, если не прав).
Поэтому, если тема переопределяет эти иконки, будут те, которые в применяемой теме.
Соответственно,
если при дефолтной работает, тогда надо в темах которые ставите, убрать аналогичные файлы батареи.
то есть в каждой из тем, которые собираетесь применять, удаляйте
Ваша_тема.mtz\com.android.systemui\res\raw\
stat_sys_battery.png
stat_sys_battery_charge.png
stat_sys_battery_number.png
-----------------------------------
MIUI отличается от остальных прошивок тем, что шить ничего не надо. Достаточно добавить соответствующие файлы в тему.
Как пример - три темы только с иконками батареи. Темы в "старом формате", но отлично работают.
Для добавления в свою тему скопируйте
stat_sys_battery.png
stat_sys_battery_charge.png
stat_sys_battery_number.png
любого из трех приложенных файлов тем
в \com.android.systemui\res\raw\ вашей темы.
Прикрепленное изображение
Прикрепленный файл GBlandScapeBattery_theme.mtz.zip   ( 60.26 килобайт ) Кол-во скачиваний: 222

Прикрепленное изображение
Прикрепленный файл Stock_GingerBread_battery_theme.mtz.zip   ( 35.21 килобайт ) Кол-во скачиваний: 214

Прикрепленное изображение
Прикрепленный файл Vertical_GBgreen_battery_theme.mtz.zip   ( 30.18 килобайт ) Кол-во скачиваний: 195
Прикрепленное изображение Прикрепленное изображение Прикрепленное изображение
Прикрепленный файл framework_res.rar   ( 52 килобайт ) Кол-во скачиваний: 280
Прикрепленный файл GBlandScapeBattery_theme.mtz.zip   ( 60.26 килобайт ) Кол-во скачиваний: 222
Прикрепленный файл Stock_GingerBread_battery_theme.mtz.zip   ( 35.21 килобайт ) Кол-во скачиваний: 214
Прикрепленный файл Vertical_GBgreen_battery_theme.mtz.zip   ( 30.18 килобайт ) Кол-во скачиваний: 195
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Создание тем для прошивок MIUI, Обсуждаем, делимся информацией · Программы Android Market и Google Play · Forum
 

Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 28.7.2025, 1:30

Форум живёт: