Proteus задуман как замена Android LayoutInflater
; но в отличие от скомпилированных макетов XML, включенных в APK, Proteus раздувает макеты во время выполнения. С помощью Proteus вы можете управлять макетом своих приложений из серверной части (без WebViews). Забудьте шаблонный код findViewById
, приведите его к TextView
, а затем setText()
. Proteus имеет привязки данных и средства форматирования во время выполнения. Подключайте свои собственные представления, атрибуты и функции, чтобы адаптировать Proteus под свои требования.
// Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
google ( )
jcenter ( )
maven { url 'https://jitpack.io' }
}
}
// Add in your app level dependency
dependencies {
implementation 'com.github.flipkart-incubator.proteus:proteus-core:5.0.1'
implementation 'com.github.flipkart-incubator.proteus:gson-adapter:5.0.1'
implementation 'com.github.flipkart-incubator.proteus:cardview-v7:5.0.1'
implementation 'com.github.flipkart-incubator.proteus:design:5.0.1'
implementation 'com.github.flipkart-incubator.proteus:recyclerview-v7:5.0.1'
implementation 'com.github.flipkart-incubator.proteus:support-v4:5.0.1'
}
Вместо написания макетов в XML
, в Proteus макеты описываются в JSON
, который можно использовать для раздувания собственного пользовательского интерфейса Android во время выполнения. Макеты JSON
можно размещать где угодно (на устройстве, на серверах и т. д.).
Макет определяет иерархию представлений, как и XML.
Данные (необязательно) определяют привязки данных. Эти привязки данных аналогичны библиотеке привязки данных Android.
Передайте layout
и data
ProteusLayoutInflater
и верните собственную иерархию представлений.
Посмотрите это видео, чтобы увидеть это в действии.
{
"type" : "LinearLayout" ,
"orientation" : "vertical" ,
"padding" : "16dp" ,
"children" : [ {
"layout_width" : "200dp" ,
"gravity" : "center" ,
"type" : "TextView" ,
"text" : "@{user.profile.name}"
} , {
"type" : "HorizontalProgressBar" ,
"layout_width" : "200dp" ,
"layout_marginTop" : "8dp" ,
"max" : 6000 ,
"progress" : "@{user.profile.experience}"
} ]
}
{
"user" : {
"profile" : {
"name" : "John Doe" ,
"experience" : 4192
}
}
}
ProteusView view = proteusLayoutInflater . inflate (< layout >, < data >);
container . addView ( view . getAsView ());
Демо-приложение позволит вам поэкспериментировать с Proteus, а также поможет лучше понять его внутреннюю структуру.
npm start
Готов повозиться
Самый простой способ внести свой вклад — создать форк репо, внести изменения и создать запрос на включение.
Апач v2.0
Если вы используете Proteus, проверьте, можно, нельзя и нужно.
Вы можете проверить авторов здесь, но если вы хотите связаться с нами; просто напишите письмо.
Найдите нас на StackOverflow в Proteus.
Загрузите этот плагин (в бета-версии) для Android Studio. После включения вы можете выбрать любой XML-файл ресурсов Android и перейти в «Инструменты» > «Proteus» > «Преобразовать XML в JSON».