terça-feira, 29 de julho de 2014

Spinner x Button & DialogBox

Hoje vou explicar a preferência de Dialogbox ao invez de um spinner

   Spinner - Fica muito pequeno na tela e para colocar um texto padrão como "selecione um tamanho" da um trabalho do demônio. Então precisaríamos de legenda o que estava ocupando espaço.

Spinner

   Dialogbox - Permite que eu coloque uma descrição inicial dispensando legendas, é maior e mais visível e eu gostei mais... Quem programou esse parte fui eu, logo vou usar aquele que eu gostei mais

DialogBox

Interface do cardápio 100% dinâmica & Listas estáticas

   Olá amigo programero, estou fazendo este post para explicar um pouco melhor como está funcionando nosso aplicativo quando se diz respeito a respeito do recebimento de dados e do que nós fazemos com ele.
   Tudo começa com um Json que nós recebemos do servidor, então fazemos uma verificação perguntando se todos os dados vieram conforme a gente quer. Se não for o caso ele não inicia o aplicativo, apenas informa o problema e pede que você tente novamente.

Eu sei que parece uma indecência mas é um cara de nariz grande sorrindo e usando óculos e esse botão tenta carregar o app novamente.

   Se for o caso então nós recebemos uma série de dados que ficam mais ou menos assim:

{'Cardapio':
  {'Sabores':
 [
    {'Categoria': 'Salgada',
     'Ingredientes': [{'Categoria': 'Padrao', 'Preco': 0.0, 'Nome': 'Molho'},...],
     'Preco': '30,00',
     'Nome': 'Mussarela'},...
  ],
  'Bebidas':
 [
    {'Tamanho': '1l', 'Preco': '10,00', 'Nome': 'Coca Cola'}, ...
 ],
  'Categorias': ['Salgada', 'Doce'],
  'Ingredientes': [{'Categoria': 'queijo', 'Preco': '2,50', 'Nome': 'Mussarela'}, ...]
},
 'Pizzaria': {'Horario_de_funcionamento': '8 da manha ao infinito', 'Descricao': 'Pizza todo dia', 'Localizacao':      'Quebradas da ZL', 'Nome': 'Pizzaria do Joao'}}
   
   Então tratamos esses dados para que populem algumas listas:

- Fazemos uma lista <String> para todas as categorias, futuramente cara uma dessas categorias vai se transformar em uma tab

- Depois populamos um HashMap (que funciona como um dicionário em JAVA) sendo <key, value> = <String, IngredienteModel>, assim temos acesso rápido para qualquer ingrediente e podemos buscá-lo apenas pelo nome. E assim fazemos com bebidas e futuramente com sobremesa.

- Por último e mais difícil, fazemos uma genuína gambiarra colocamos um HashMap dentro de outro  e fica assim : <String (categoria), <String(Nome sabor), SaborModel>> assim podemos ter acesso á todos os sabores por categoria (por tab), e podemos acessá-los pelo nome também.
   No final o que a gente faz é popular as tabs com apenas o nome dos sabores que pertencem a ela, e quando um sabor é selecionado então pegamos o objeto inteiro.

Usar esse mecanismo pode ser desvantajoso para quem tem a internet lenta, pois sem internet não tem aplicativo, mas a vantagem é que o aplicativo fica extremamente flexível as particularidades da pizzaria e uma vez que os dados forem tratados não há necessidade de consultar o servidor ou qualquer banco de dados, o que deixa o aplicativo mais rápido, a desvantagem é que se o usuário fechar o aplicativo ele terá que solicitar os dados novamente.

domingo, 13 de julho de 2014

Video Gource - 2º Bimestre

Esta semana foi postado um vídeo do nosso projeto no youtube. Esse vídeo foi feito pelo Gource, um aplicativo que consegue ler informações do Subversion e por meio disso cria visualizações gráficas do histórico de versionamento.

sábado, 5 de julho de 2014

Entrevista com a Pizzaria do David

Lembrando que o nosso aplicativo é direcionado ao atendimento de uma pizzaria, decidimos fazer uma entrevista com uma pizzaria (meio tardia, mas está valendo).

Separamos alguns tópicos a serem discutidos e eu escrevi um relatório baseado na conversa que eu tive com a Elaine da Pizzaria do David - Site da pizzaria

Como cobrar as pizzas?
   A cobrança é feita dependendo dos ingredientes gastos para fazer um único sabor ( 8 pedaços padrão). No caso de uma pizza com mais de um sabor (máximo 4) é cobrado o valor do sabor mais caro.
   No caso da pizza broto (4 pedaços) o valor cobrado é de 70% o valor da pizza padrão.
   Existem casos em que uma pizza de 8 pedaços pode ser dividida em 9 ou mais pedaços, mas isso não altera o tamanho nem o valor da pizza.

Exclusão de ingredientes

   Todos os ingredientes podem ser excluídos à gosto do cliente sem a alteração do preço.

Inclusão de ingredientes 

   A inclusão de ingredientes é algo complicado de se prever ou de se padronizar visto que o cliente pode pedir qualquer coisa e levando em consideração que na pizzaria do David a pizza é feita e assada na hora. 
De acordo com a Elaine o mais comum é a adição de queijos extra com um adicional no preço variando ente 7 a 9 reais.
   Contudo, o mais comum não é a adição de ingredientes, mas sim a exclusão ou a substituição. Substituição de ingredientes como ervilha por milho, mussarela por mussarela de bufala. Qualquer coisa que seja a gosto do cliente. No caso da ervilha não é cobrado taxas adicionais visto que o preço da ervilha para o milho não são tão diferentes. Já no caso das mussarelas ou de qualquer substituição por algum ingrediente mais caro as taxas adicionais podem variar entre 4 a 7 reais.  
   Concluindo, é extremamente difícil padronizar um esquema de personalização para um atendimento tão flexível. Talvez o nosso aplicativo tenha algumas limitações, pois já não resta muito tempo. 





   

Custom ListView usando BaseAdapter

Como mencionado anteriormente tivemos muita ajuda de um indiano. Vou explicar um pouco melhor a respeito da Custom ListView:

Uma ListView é um elemento que herda de um objeto View em formato de listas e que suporta uma String para cara item na lista.

ListView Comum



Mas e se eu quiser ter mais de um elemento por item? Uma imagem, mais de uma TextView... Bem é ai que entra o BaseAdapter 
Custom ListView

Se você quiser saber como fazer uma  ListView Personalizada siga os passos deste tutorial dividido em 4 partes, segue o link com a primeira parte:

NumberPicker

   Olá amigos programáticos! Uma postagem curta sobre uma funcionalidade do android chamada NumberPicker. Há uma necessidade no nosso aplicativo em que o usuário deve escolher a quantidade de pizzas que ele quer. Antes isso era feito com dois botões (+, -) e uma text view que mostrava essa quantidade.

Imagem porca pois eu não tirei print da versão antiga

Agora com o numberPicker eu economizo muito mais linhas de código e espaço:
numberpicker abaixo de "Quantidade: "
Se você quiser saber como adicionar um NumberPicker na sua aplicação de uma olhada nesse exemplo: