O Proteus pretende ser um substituto imediato para LayoutInflater
do Android; mas, diferentemente dos layouts XML compilados incluídos no APK, o Proteus aumenta os layouts em tempo de execução. Com o Proteus, você pode controlar o layout do seu aplicativo a partir do backend (sem WebViews). Esqueça o código padrão para findViewById
, converta-o em TextView
e, em seguida, setText()
. Proteus possui vinculações e formatadores de dados em tempo de execução. Conecte suas próprias visualizações, atributos e funções personalizados para personalizar o Proteus de acordo com suas necessidades.
// 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'
}
Em vez de escrever layouts em XML
, no Proteus os layouts são descritos em JSON
, que pode ser usado para inflar a UI nativa do Android em tempo de execução. Os layouts JSON
podem ser hospedados em qualquer lugar (no dispositivo, em servidores, etc.).
O Layout define a hierarquia de visualização, assim como o XML.
Os Dados (opcional) definem vinculações de dados. Essas vinculações de dados são semelhantes à biblioteca Data Binding do Android.
Forneça o layout
e data
ao ProteusLayoutInflater
e recupere uma hierarquia de visualização nativa.
Assista a este vídeo para vê-lo em ação.
{
"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 ());
O aplicativo de demonstração permitirá que você experimente o Proteus, além de ajudá-lo a entender melhor os detalhes internos.
npm start
Pronto para mexer
A maneira mais fácil de contribuir é bifurcando o repositório, fazendo suas alterações e criando uma solicitação pull.
Apache v2.0
Se você estiver usando proteus confira a lata, não pode e deve
Você pode conferir os colaboradores aqui, mas se desejar entre em contato conosco; basta enviar um e-mail.
Encontre-nos no StackOverflow em proteus.
Baixe este plugin (em beta) para Android Studio. Uma vez ativado, você pode selecionar qualquer arquivo de recurso XML do Android e ir em Ferramentas > Proteus > Converter XML em JSON