HamburgueriaZ: App Android com Java

Construa um aplicativo funcional para montagem de pedidos personalizados, utilizando Java, Intents e estilização com temas no Android Studio

Resumo do Objetivo

O objetivo desta atividade é construir um aplicativo Android funcional para uma hamburgueria, permitindo que os clientes montem seus pedidos de forma personalizada. Você praticará desde a criação da interface visual (UI) até a implementação da lógica de negócios, utilizando a linguagem Java para processar as escolhas do usuário.

Além do desenvolvimento interno, a atividade foca na interação entre aplicativos. Você aprenderá a padronizar estilos visuais através de temas e a utilizar Intents para exportar os dados do pedido (nome, adicionais, quantidade e preço) para um aplicativo de e-mail externo, simulando um processo real de finalização de pedido.

Checklist de Requisitos

Configuração do Projeto

  • Nome: "HamburgueriaZ"
  • Linguagem: Java
  • Minimum SDK: API 23

Interface Visual (XML)

  • Imagem de logo/banner no topo
  • Campo para nome do cliente
  • Checkboxes (Bacon, Queijo, Onion Rings)
  • Seletor de quantidade (+ / -)
  • Resumo do Pedido e Preço Total
  • Botão "Fazer Pedido"

Regras de Negócio

  • Preço base: R$ 20,00
  • Bacon: + R$ 2,00
  • Queijo: + R$ 2,00
  • Onion Rings: + R$ 3,00
  • Bloqueio de valores negativos

Estilização

  • Estilo global "EstiloTexto"
  • Arquivo: res/values/themes.xml

Funcionalidade de Saída

  • Intent com ACTION_SENDTO
  • Assunto com nome do cliente
  • Corpo com resumo formatado

Formato de Entrega

  • Exportar projeto como .zip
  • File > Export > Export to Zip File

Passo a Passo e Dicas Técnicas

1

Configuração do Projeto

Inicie um novo projeto com o template "Empty Activity".

Certifique-se de selecionar Java como linguagem, pois o SDK e as instruções são baseados nela.
2

Desenvolvimento do Layout (XML)

Monte a interface no activity_main.xml.

Use ImageView para a logo, EditText para o nome, CheckBox para os adicionais e Button para as interações.
<ImageView
    android:id="@+id/imgLogo"
    android:layout_width="wrap_content"
    android:layout_height="100dp"
    android:src="@drawable/logo_hamburgueria" />

<EditText
    android:id="@+id/etNomeCliente"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Digite seu nome" />

<CheckBox
    android:id="@+id/cbBacon"
    android:text="Bacon (+ R$ 2,00)" />

<CheckBox
    android:id="@+id/cbQueijo"
    android:text="Queijo (+ R$ 2,00)" />

<CheckBox
    android:id="@+id/cbOnionRings"
    android:text="Onion Rings (+ R$ 3,00)" />
3

Padronização Visual

Abra o arquivo res/values/themes.xml e crie a tag <style name="EstiloTexto">.

Aplique as propriedades: wrap_content, center_vertical, letras maiúsculas, tamanho 15sp e paddings de 16dp.
<style name="EstiloTexto">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_gravity">center_vertical</item>
    <item name="android:textAllCaps">true</item>
    <item name="android:textSize">15sp</item>
    <item name="android:padding">16dp</item>
</style>
4

Lógica da MainActivity (Java)

No arquivo MainActivity.java, declare as variáveis e vincule-as aos componentes do XML.

Utilize o ViewBinding (se preferir) ou findViewById para manipular os componentes.
public class MainActivity extends AppCompatActivity {
    private EditText etNomeCliente;
    private CheckBox cbBacon, cbQueijo, cbOnionRings;
    private TextView tvQuantidade, tvResumo, tvTotal;
    private Button btnMenos, btnMais, btnFazerPedido;
    private int quantidade = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Vincular componentes
        etNomeCliente = findViewById(R.id.etNomeCliente);
        cbBacon = findViewById(R.id.cbBacon);
        cbQueijo = findViewById(R.id.cbQueijo);
        cbOnionRings = findViewById(R.id.cbOnionRings);
        tvQuantidade = findViewById(R.id.tvQuantidade);
        tvResumo = findViewById(R.id.tvResumo);
        tvTotal = findViewById(R.id.tvTotal);
        btnMenos = findViewById(R.id.btnMenos);
        btnMais = findViewById(R.id.btnMais);
        btnFazerPedido = findViewById(R.id.btnFazerPedido);
    }
}
5

Implementação dos Botões (+/-)

Crie as funções somar e subtrair para controlar a quantidade.

Use uma variável global do tipo int para a quantidade e atualize a TextView correspondente com setText(). Bloqueie valores negativos.
private void atualizarQuantidade() {
    tvQuantidade.setText(String.valueOf(quantidade));
    calcularPedido();
}

btnMais.setOnClickListener(v -> {
    quantidade++;
    atualizarQuantidade();
});

btnMenos.setOnClickListener(v -> {
    if (quantidade > 1) {
        quantidade--;
        atualizarQuantidade();
    }
});
6

Cálculo do Pedido

Implemente a lógica para calcular o preço total baseado nos adicionais e quantidade.

private void calcularPedido() {
    double precoBase = 20.00;
    double adicionais = 0;

    if (cbBacon.isChecked()) adicionais += 2.00;
    if (cbQueijo.isChecked()) adicionais += 2.00;
    if (cbOnionRings.isChecked()) adicionais += 3.00;

    double total = (precoBase + adicionais) * quantidade;

    String resumo = String.format("Hambúrguer x%d\nAdicionais: %s\nTotal: R$ %.2f",
        quantidade,
        obterAdicionaisSelecionados(),
        total);

    tvResumo.setText(resumo);
    tvTotal.setText(String.format("R$ %.2f", total));
}
7

Intent de E-mail

Implemente a função para enviar o pedido via Intent para o e-mail.

Utilize um objeto Intent com a ação ACTION_SENDTO. Configure o "subject" com o nome do cliente e o corpo com o resumo formatado.
private void enviarPedido() {
    String nome = etNomeCliente.getText().toString().trim();
    if (nome.isEmpty()) {
        Toast.makeText(this, "Digite seu nome", Toast.LENGTH_SHORT).show();
        return;
    }

    String assunto = "Pedido de " + nome;
    String corpo = tvResumo.getText().toString();

    Intent intent = new Intent(Intent.ACTION_SENDTO);
    intent.setData(Uri.parse("mailto:"));
    intent.putExtra(Intent.EXTRA_SUBJECT, assunto);
    intent.putExtra(Intent.EXTRA_TEXT, corpo);

    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    } else {
        Toast.makeText(this, "Nenhum app de e-mail encontrado", Toast.LENGTH_SHORT).show();
    }
}

btnFazerPedido.setOnClickListener(v -> enviarPedido());

Instruções de Entrega

Como Exportar seu Projeto

Formato do Arquivo

Você deve exportar o projeto inteiro para um arquivo .zip

Como Exportar

No Android Studio, vá em File > Export > Export to Zip File...

O que enviar

O arquivo compactado gerado por esse processo deve ser salvo e enviado através da sua plataforma de estudos.

Bons estudos e mãos à obra! Se tiver dúvidas em algum componente específico do SDK, estou à disposição.