Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
137 commits
Select commit Hold shift + click to select a range
749e756
app android banco 0.0.1
busqe May 23, 2019
cf93afd
visualizacao das telas na sequencia
busqe May 23, 2019
e9f841d
breve descrição das funçoes do aplicativo
busqe May 23, 2019
4f6582f
instrucoes de como contribuir com o aplicativo
busqe May 23, 2019
a184f86
recebe, analisa, converte e envia dados
busqe May 23, 2019
854a594
contem imagens do headme
busqe May 23, 2019
b7e8600
icone da versao do app
busqe May 23, 2019
0523b80
icone da versao do app
busqe May 23, 2019
d192c7c
icone da versao do app
busqe May 23, 2019
011e82f
icone da versao do app
busqe May 23, 2019
07063cb
icone da versao do app
busqe May 23, 2019
9e6286c
icone da versao do app
busqe May 23, 2019
ea2e0d1
icone da versao do app
busqe May 23, 2019
bae0cf1
como entender o projeto
busqe May 23, 2019
bf1fcd4
como entender o projeto
busqe May 23, 2019
3892d50
imagens do projeto
busqe May 23, 2019
6ca59f1
descricao do proejto
busqe May 23, 2019
0b90a20
descricao do proejto
busqe May 23, 2019
fe71579
descricao do proejto
busqe May 23, 2019
eb2d657
icones
busqe May 23, 2019
ca2f784
descricao do app
busqe May 23, 2019
6627a9a
descricao do app
busqe May 23, 2019
195f8d6
descricao do app
busqe May 23, 2019
a4bb3d7
icones
busqe May 23, 2019
627add1
readme
busqe May 23, 2019
197d8c1
icones
busqe May 23, 2019
598e6f6
icones
busqe May 23, 2019
1f49b49
icone
busqe May 23, 2019
d315196
descricao do projeto
busqe May 23, 2019
396ad26
descricao do proejeto
busqe May 23, 2019
4a00e49
descricao do projeto
busqe May 23, 2019
8dee9c4
grafico fluxo fundos de investimento
busqe May 23, 2019
b3c8d73
informacoes sobre o app
busqe May 23, 2019
e1c038b
grafico fluxo fundos de investimento
busqe May 23, 2019
5a15faa
tela de fluxo desenhar contato
busqe May 23, 2019
db662ec
descricao do projeto
busqe May 23, 2019
59e7643
descricao do proejeto
busqe May 23, 2019
1e954cd
descricao do proejeto
busqe May 23, 2019
50b5780
descricao do proejeto
busqe May 23, 2019
e1cce7d
descricao do projeto
busqe May 23, 2019
db61bec
readme
busqe May 23, 2019
8fae80e
tela alert generica
busqe May 23, 2019
1593414
readme
busqe May 23, 2019
39c5200
tela de fluxo alertas
busqe May 23, 2019
a779179
tela de fluxo alertas
busqe May 23, 2019
02bcd56
tela alert generica
busqe May 23, 2019
b337ec8
tela de fluxo alertas
busqe May 23, 2019
df4bb9b
alerta
busqe May 23, 2019
7addff5
readme
busqe May 23, 2019
40d2f34
readme
busqe May 23, 2019
2e8f761
readme
busqe May 23, 2019
c8772ad
readme
busqe May 23, 2019
7e2b4ab
readme
busqe May 23, 2019
7eff29c
alertas para todcls
busqe May 23, 2019
2b4329e
readme
busqe May 23, 2019
c75bd57
readme
busqe May 23, 2019
cea7732
alertas usadas por toda a aplicacao
busqe May 23, 2019
0de50d6
detalha os fundos de investimento
busqe May 23, 2019
4e23dfd
alertas usadas pela aplicacao
busqe May 23, 2019
4293d92
readme
busqe May 23, 2019
fa99d46
README.md
busqe May 23, 2019
d1e93ce
animacao desaparecer
busqe May 24, 2019
cd851cf
regras
busqe May 24, 2019
b3751e0
configura
busqe May 24, 2019
9c55eca
Regras
busqe May 24, 2019
8da484b
Design
busqe May 24, 2019
30323ff
regras
busqe May 24, 2019
cbab805
Preferencias
busqe May 24, 2019
571fb1a
Sessao
busqe May 24, 2019
9bd0301
prefs
busqe May 24, 2019
8731d27
Mensagens
busqe May 24, 2019
e240e26
Delete PreferencesContact.java
busqe May 24, 2019
078f6cf
Contato
busqe May 24, 2019
6ade4ff
Excluido
busqe May 24, 2019
500d9bb
Excluido
busqe May 24, 2019
fbbbd38
icones
busqe May 25, 2019
d83aef0
apagados
busqe May 25, 2019
bfa44b3
excluido
busqe May 25, 2019
a09b413
Icone
busqe May 25, 2019
94971a5
Debugando
busqe May 25, 2019
9b576df
Excluindo
busqe May 25, 2019
095ef53
nada
busqe May 25, 2019
ddc117d
debugando
busqe May 25, 2019
bf8230c
Config
busqe May 25, 2019
bf68b66
Contrato
busqe May 25, 2019
c187616
sem alteracoes
busqe May 25, 2019
7aba7bf
tipo de dados
busqe May 25, 2019
01d6d6c
Preferencias
busqe May 25, 2019
9a607bc
Json Local
busqe May 25, 2019
18c3e27
Json Externo
busqe May 25, 2019
53684dd
Cache
busqe May 25, 2019
e321559
exclusao
busqe May 25, 2019
5ffa897
deletado
busqe May 25, 2019
caae221
deletado
busqe May 25, 2019
b2e5a67
Datasource
busqe May 25, 2019
4b50c6b
design
busqe May 25, 2019
86accd3
Refatorando
busqe May 25, 2019
97698cf
refatoracao
busqe May 26, 2019
cd3fead
refatorando
busqe May 26, 2019
6909f1e
Carregamento
busqe May 27, 2019
0d98eba
Carregamento
busqe May 27, 2019
610a350
Servidores de arquivo
busqe May 27, 2019
efe83b2
Mensagens de Log personalizadas
busqe May 27, 2019
4f0a12d
apagar arquivo de teste
busqe May 27, 2019
b5f317a
carrega arquivo rest
busqe May 27, 2019
d23bf95
Gerencia dados locais e remotos
busqe May 27, 2019
964b64d
arquivo de teste
busqe May 27, 2019
d81f27f
contrato para gerencia dados locais e remotos
busqe May 27, 2019
2895059
gerencia o layout do form de contato
busqe May 27, 2019
79a6570
Adicionado a classe que carrega dados locais e remotos
busqe May 27, 2019
aa11c23
carrega informacoes do dispositivo
busqe May 27, 2019
2dd6ef5
Usando Executor pra gerenciar Runnables
busqe May 27, 2019
2948b98
Passando contexto pra o Model
busqe May 27, 2019
685a994
Exclusao de campos nao usados
busqe May 27, 2019
5c7dc6f
Carregamento de 10 segundos dos dados do form
busqe May 27, 2019
9218475
Crie o campo CHECK para verificar se o arquivo existe
busqe May 27, 2019
447080e
Insercao de arquivo LoadModel
busqe May 27, 2019
09d79c4
Criacao de Funcao para formatar o form
busqe May 27, 2019
1848873
Carregamento de dados em background
busqe May 27, 2019
a455969
Excluido
busqe May 27, 2019
70faab2
Converter json em Map
busqe May 28, 2019
8d723d6
Inserido classe que converte JSON em MAP
busqe May 28, 2019
2e4dacb
Excluir
busqe May 28, 2019
4ba3fc4
Estilo para campos de texto form contato
busqe May 28, 2019
01929af
teste
busqe May 28, 2019
ad07370
adicionado cor para estilo do form
busqe May 28, 2019
f6fafd2
Template para estilo dos forms
busqe May 28, 2019
8abaa38
Testes
busqe May 28, 2019
eac7a01
Copiados para v24 com estilos
busqe May 28, 2019
86b2b74
alteracao de themas
busqe May 28, 2019
42e79a5
Estilo do checkbox
busqe May 28, 2019
fc10175
Alteracao de estilos do form
busqe May 30, 2019
dae32cb
Fundo dos campos EditText
busqe May 30, 2019
58dbc0f
Aplicacao de estilos campos EditText
busqe May 30, 2019
db88d9e
Testando setError em campos Obrigatorios
busqe May 30, 2019
0aa3ba5
Testes de Dependencias
busqe May 31, 2019
2da41fa
alteracao de layout
busqe May 31, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
13 changes: 13 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
4 changes: 4 additions & 0 deletions .idea/encodings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 16 additions & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions .idea/runConfigurations.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

190 changes: 139 additions & 51 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,81 +1,169 @@
# Show me the code
# Android App Teste
> Esta versao possui tela que lista fundos, detalha e tela de contato
> Telas de alertas personalizadas para todo o aplicativo.

### # DESAFIO:
[![ Versao][version-image]][version-image]
[![ Linguagem][lang-image]][lang-image]
[![ Grandle][grandle-image]][grandle-image]

Em uma tela terá um formulário dinâmico com alguns campos predefinidos, conforme o arquivo JSON disponível no link ([https://floating-mountain-50292.herokuapp.com/cells.json](https://floating-mountain-50292.herokuapp.com/cells.json)) que deverá
ser consumido. Este formulário terá de ser desenhado e exibir uma tela de sucesso quando as informações preenchidas estiverem corretas.
- Usa uma LIB GmailSender para enviar e-mails.
- Possui fontes personalizadas de acordo com o Design da empresa.
- Arquivos XML string com os textos usados por padrao no applicativo.
- carrega dados externos em json ou das preferencias.

Na segunda tela terá o detalhe de um ativo financeiro. As informações devem ser consumidas através do link ([https://floating-mountain-50292.herokuapp.com/fund.json](https://floating-mountain-50292.herokuapp.com/fund.json)).
## Configuracoes

O visual do aplicativo está em anexo no arquivo telas.png e em um arquivo do [Sketch](https://www.sketchapp.com) (30 dias grátis, caso não tenha a licença).
- O Aplicativo foi desenovolvido na liguagem Java Nativo.
- O Padrao de arquitetura MVP Clean Arquitecture.
- Possui os gerenciadores de layout Constraint Layout e Recyclerview
- o Nome do package do Aplicativo deve ser:

![Image](https://floating-mountain-50292.herokuapp.com/telas.png)
```sh

package 'br.banco.servces'

### # Avaliação
```


## Grandle

```sh

grandle 'com.android.support:appcompat-v7:28.0.0'
grandle 'com.android.support:recyclerview-v7:28.0.0'
grandle 'com.android.support.constraint:constraint-layout:1.1.3'
grandle 'com.android.support.constraint:constraint-layout:1.0.3'
grandle 'com.google.code.gson:gson:2.7'

Você será avaliado pela usabilidade, por respeitar o design e pela arquitetura do app. É esperado que você consiga explicar as decisões que tomou durante o desenvolvimento através de commits.
```

## Testes
- Apenas os testes no formulario de email foram aplicados

* Java ou Kotlin
* ConstraintLayout
* O app deve funcionar no Android 4.4
* Testes unitários (De preferência JUnit + Mockito). Mas pode usar o que você tem mais experiência, só nos explique o que ele tem de bom.
* Arquitetura a ser utilizada: MVP Clean ([https://github.com/googlesamples/android-architecture/tree/todo-mvp-clean/](https://github.com/googlesamples/android-architecture/tree/todo-mvp-clean/)) && ([https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html](https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html)).
* Uso do git.
```sh

### # Dicas para o layout
grandle 'com.android.support.test:runner:1.0.2'
grandle 'com.android.support.test.espresso:espresso-core:3.0.2'
grandle 'junit:junit:4.12'
grandle 'org.mockito:mockito-core:2.27.0'

* O formulário deve respeitar o conteúdo do cells.json ([https://floating-mountain-50292.herokuapp.com/cells.json](https://floating-mountain-50292.herokuapp.com/cells.json)) .
* Se o texto estiver muito grande, quebre em linhas e exiba por completo.
* A fonte a ser utilizada está em anexo no repositório.
```

### # Como interpretar o cells.json:
## Libs
- Usa uma LIB GmailSender para enviar e-mails.
- Libs: activation.jar, aditional.jar, mail.jar

```sh

grandle fileTree(dir: 'libs/', include: ['*.jar'])

```Java
enum Type {
field(1)
text(2),
image(3),
checkbox(4),
send(5)
}
```

```Java
enum TypeField {
text(1),
telNumber(2),
email(3)
}
1. Instalar a Library dentro da pasta lib
2. configurar o arquivo GmailSender.java da forma abaixo:
3. importear o pacote GMailSender;
4. Caso use o Gmail para receber os emails ser pedido uma solicitacao de 'Aplicativos de Terceiros'

Abaixo veja o config do GMailSender:

```sh
public String Mailhost = "smtp.gmail.com";
public String User ="seu-email@gmail.com";
public String Password ="sua-senha";

```

## Fonts
- Foram utilizadas fontes que seguem a identidade visual da empresa: DINPro.
- As fontes foram copiadas para a pasta fonts dentro do projeto.
- Abaixo veja os nomes das Fontes:

```sh
DINPro-Black
DINPro-Bold
DINPro-Medium
DINPro-Regular
DINPro-Light

```



## Telas
- O Fluxo de navegacao fica na sequencia da imagem abaixo:

![Telas do Aplicativo](https://raw.githubusercontent.com/busqe/TesteAndroid/master/telas.png)


## Fluxo Codigo
* O Fluxo de navegacao contato por Email:

1. SOLICITACAO: View > Presenter > Model > Interactor > Validator > Rule .
2. Rule devolve ao Validator... que faz o caminho de volta.

```sh
- Validator ou Rule: classe responsavel por validar os dados Recebidos/Enviados antes de fazer a SOLICITACAO.
- Exemplo de Validator: classe FromScreen (configura a classe ScreenFundTemplate) responsavel por permitir que a tela de Fundos seja exibida.

```

`"type":` tipo da célula;

`"message":` mensagem que vai aparecer na label para type = text ou placeholder para field;
- TELA FLUXO: Fundos de Investimentos -> Tela de detalhe.
![Telas do Aplicativo](https://github.com/busqe/TesteAndroid/blob/master/images/tela-flow-fund.png)

- TELA FLUXO: Criacao da Tela de Formulario de contato

![Telas do Aplicativo](https://github.com/busqe/TesteAndroid/blob/master/images/tela-flow-email.png)

- TELA FLUXO: Alertas exibidos em todo o aplicativo usados por todos os pacotes.

![Telas do Aplicativo](https://github.com/busqe/TesteAndroid/blob/master/images/tela-flow-alert.png)

## Historico de Versões

* 0.0.1
* ALTERACAO: Envia Emails e carrega Preferencias
* Os testes foram feitos apenas nas versoes 5, 6, 7 e 8 do Android e funciona corretamente.


## Meta

Adriano Souza – [@adrianosouzai](https://twitter.com/adrianosouzai) – adrianosouza@gmail.com


Ainda esta em fase de testes. Nao possui ``LICENSE`` .

URL do Projeto [https://github.com/busqe/TesteAndroid](https://github.com/busqe/testeandroid)

## Contribuição

`typeField":` tipo do field a ser exibido, para exibir corretamente a validação daquele campo.
- Este projeto faz parte do pacote Android Teste

`hidden":` indica se o campo está visível;
## Nao foram feitos neste teste

`topSpacing":` espaçamento entre o topo da célula e o topo da label/field/checkbox;
- BACK-END

`show":` indica o campo que será exibido quando este campo for selecionado. No caso é o id do campo a ser exibido.
1. O formulario de contato nao carrega json para configuracoes de design.
2. Nao foram feitos testes na versao 4.4 em dispositivos reais.
3. Nao foram feitos checagem de versao de Dispositivo.
4. Nao foram feitos testes de passagem de parametros para todos os metodos.

`type":` "send" esse botão irá validar todas informações que foram preenchidas e ir para a tela de sucesso quando tudo tiver ok;
- FRONT-END: Contato

`risk":` pode ser um int de 1 a 5
1. O Botao de checkbox nao foi aplicado o estilo.


O tipo `text` a validação é digitou alguma coisa, já ficou válido.<br>
Para "telNumber" o campo deve ser formatado `(##) ####-#### || (##) #####-####` e validado de acordo.<br>
Para "email" o email deve ser válido.

### # Observações gerais
## Imagens utilizadas
- As imagens de telas sao prints do proprio projeto.
- as Imagens de fluxo sao com base no fluxo dos codigos.

[version-image]: https://github.com/busqe/TesteAndroid/blob/master/images/ico-version.svg
[lang-image]: https://github.com/busqe/TesteAndroid/blob/master/images/ico-lang.svg
[grandle-image]: https://github.com/busqe/TesteAndroid/blob/master/images/ico-grandle.svg

Adicione um arquivo [README.md](http://README.md) com os procedimentos para executar o projeto.
Pedimos que trabalhe sozinho e não divulgue o resultado na internet.
-- Muito obrigado!

Faça um fork desse desse repositório em seu Github e nos envie um Pull Request com o resultado, por favor informe por qual empresa você esta se candidatando.
\o/

### # Importante: não há prazo de entrega, faça com qualidade!

# BOA SORTE!
1 change: 1 addition & 0 deletions app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
66 changes: 66 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
apply plugin: 'com.android.application'

android {
compileSdkVersion 28
// buildToolsVersion rootProject.buildToolsVersion
defaultConfig {
applicationId "br.banco.services"
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
/*
debug {
debuggable true
}
customDebuggableBuildType {
debuggable true
}
*/
}
// dataBinding {enabled = true }
}

dependencies {

implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
//implementation 'com.google.code.gson:gson:.2.7'
implementation 'com.google.code.gson:gson:2.8.5'


androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:2.27.0'
//testImplementation 'org.mockito:mockito-core:' + rootProject.mockitoVersion;

implementation 'com.android.support:design:28.0.0'
//implementation 'com.github.scottyab:showhidepasswordedittext:0.8'


implementation fileTree(dir: 'libs/', include: ['*.jar'])

}


/*
sourceSets {
main {
res.srcDirs = [
file("src/main/res/templates/").listFiles(),
"src/main/res/templates",
"src/main/res"
]
}
}
*/
Binary file added app/libs/activation.jar
Binary file not shown.
Binary file added app/libs/additionnal.jar
Binary file not shown.
Binary file added app/libs/mail.jar
Binary file not shown.
21 changes: 21 additions & 0 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
Loading