Login. Criar uma nova Activity. Login. Luiz Eduardo Guarino de Vasconcelos

Documentos relacionados
Criando as primeiras telas (Activity)

Trabalhando com Mensagens. File > New > New Project. Uso de mensagens (Toast) Luiz Eduardo Guarino de Vasconcelos

Navegar entre páginas Necessário o uso de Intent. Intenção de ir a algum lugar, acessar outros recursos, outros apps.

Firebase. Acesse o site Acesse o menu Go to Console. Acesse com uma conta Google ou crie uma conta.

============================== Exemplo ListView MainActivity.java

Mensagens. Para conhecimento. Renomear arquivos. Botão Direito no arquivo > Rafactor > Rename Shift + F6

Programação para Dispositivos Móveis

Programação para Dispositivos Móveis

Tutorial Android Speech

Primeira Aplicação Android Olá Mundo. Prof. Fellipe Aleixo

Fragments. Criar um novo projeto. Selecionar a API. Navigation Drawer Activity. Fragments. Luiz Eduardo Guarino de Vasconcelos

Retrofit. Criar um novo projeto. Selecionar a API. Retrofit para consumir Web Service Luiz Eduardo Guarino de Vasconcelos

Android Layout Manager. Ivan Nicoli

Programação de Dispositivos Móveis

Programação de Dispositivos Móveis

Programando Intenções. Prof. Fellipe Aleixo

Programa de Dispositivos Móveis

Mais Elementos da Interface com o Usuário. Prof. Fellipe Aleixo

Google Android. Uma abordagem prática e didática. Rafael Guimarães Sakurai. Esse livro está à venda em

Programação para Dispositivos Móveis. Banco de Dados (SQLite)

Programa de Dispositivos Móveis

Prof: Ricardo Quintão Site:

Prof: Ricardo Quintão Site:

Computação Móvel Activity (Ref. Cap. 4)

Computação Móvel ActionBar e Temas (Ref. Cap. 5)

PROPOSTA DE UM PADRÃO DE PROJETO PARA ANDROID UTILIZANDO A WEB

ANDROID APRENDIZ. Um guia para iniciantes Crie seu primeiro aplicativo Android

Introdução ao Android. SECAP 2014 Prof. Rone Ilídio - UFSJ

TUTORIAL ANDROID ACTIVITY - CONSTRUÇÃO DE TELAS

Módulo 2 - Novas Activities Android. Programação Orientada a Objetos Prof. Rone Ilídio - UFSJ

PROGRAMAÇÃO MOBILE Estudo de Caso

Desenvolvimento de Aplicativos Android

Android Banco de Dados. Ivan Nicoli

Criando o primeiro projeto para entender a estrutura do app

Programação para Android. Aula 08: Persistência de dados SQL

Avisos e Notificações aos Usuários

Apresentação de um Processo Cria4vo de Desenvolvimento de uma App Android. Realização de Dinâmica Hands- On para Construção de uma App Android

Módulo 4 - Interface Gráfica Gerenciadores de Layout. Programação Orientada a Objetos Prof. Rone Ilídio - UFSJ

Computação Móvel Gerenciadores de Layout (Ref. Cap. 6)

Projeto GoHome Tutorial Sobre o serviço do Google Maps no Android

Google Android. Uma abordagem prática e didática. Rafael Guimarães Sakurai, Diogo Carleto, erodrigo Cascarrolho

Prof: Ricardo Quintão Site:

Programação para a Plataforma Android Aula 13. Localização

Comunicação entre A0vidades

Introdução ao Android. Programação Orientada a Objetos Prof. Rone Ilídio - UFSJ

Programação para a Plataforma Android Aula 2. Aula 2 Views

2ª edição Nelson Glauber de Vasconcelos Leal

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Android I N T R O D U Ç Ã O À P R O G R A M A Ç Ã O P R O F E S S O R L E O N A R D O C. R. S O A R E S - L A R B A C K

Computação Móvel Conceitos Básicos do Android Ref. Capítulo 3

DESENVOLVIMENTO PARA DISPOSITIVOS MÓVEIS. PROFª. M.Sc. JULIANA H Q BENACCHIO

Módulo 3 - Intenções. SECAP 2014 Prof. Rone Ilídio - UFSJ

Desenvolvimento para Android Prá9ca 2. Prof. Markus Endler

1. SQLite No Android 2. API de Acesso Listagem 1 SQLiteDatabase SQLiteOpenHelper Listagem 1 Android Studio SQLiteOpenHelper Android Studio

Log, Ciclo de Vida e Diálogos. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br)

AULA 2. Minicurso PET-EE UFRN

Programação para a Plataforma Android Aula 16. Fragmentos

Inicia-se a produção do Caderno de Atividades sob a sua responsabilidade.

Nelson Glauber de Vasconcelos Leal

Universidade Federal do Paraná

Curso de Android - 2 Novas Activities. SECAP Prof. Rone Ilídio - UFSJ

Introdução ao Desenvolvimento para Sistema Operacional Android

HCI Summer Workshop. Android #1. Tiago Guerreiro.

Programação para a Plataforma Android Aula 17. Broadcasts

Programação para a Plataforma Android Aula 4. Objetos Gráficos

Android Core. Felipe Silveira felipesilveira.com.br. Aula 6

Programação para Android. Aula 05: Estilos e temas; galeria de imagens

Programação para Dispositivos Móveis

Android Activity. Ivan Nicoli

Programação para Android. Aula 06: Activity, menus e action bar

Views Interface Gráfica

Programação para Android. Aula 10: Acesso a câmera, sms e recursos do aparelho

Programação para Dispositivos Móveis. Activity e Intent

Android. Interfaces: widgets

Desenvolvimento com Android Studio. Aula 02 Widgets, Manipulação de Dados e Programação de Eventos

Computação Móvel Persistência (Ref. Cap. 18)

Armazenamento Persistente de Dados

Programação para Android

TELA PRINCIPAL DO PROJETO FCV

Programação para a Plataforma Android Aula 7. Mul$mídia

Android INTERFACE GRÁFICA & LAYOUT. Prof. Dr. Joaquim assunção.

Desenvolvimento Android.

Desenvolvimento para Android Prá3ca 3. Prof. Markus Endler

A documentação do Android, disponível em

Criar um novo projecto

AULA 3. Minicurso PET-EE UFRN

Programação para Dispositivos Móveis. Sensores

( TIAGO DOS SANTOS MENDES ) PROGRAMAÇÃO DISPOSITIVOS MOVEIS ANDROID STUDIO

Programação em Java para a Plataforma Android AULA 1. Primeiros Passos

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET LABORATÓRIO 4 PROF. EMILIO PARMEGIANI

Programa de Dispositivos Móveis

JavaFX Classe de Controle e Eventos. Prof. Vicente Paulo de Camargo

Capítulo 02: Cadastro de Alunos

Login Google. Copie a SSL URL, que no meu caso é

Provedores de Conteúdo

Google Android. Componentes Gráficos

Programação Android. Aula 03

Desenvolvimento Android. Pontapé inicial...

INTRODUÇÃO À PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS. ADS 6º Período

Desenvolvimento com Android Studio Aula 01 Instalação e Configuração do Ambiente de Desenvolvimento, Estrutura de um projeto Android

Transcrição:

Criar uma nova Activity

Observe no AndroidManifest.xml que foi criada a segunda Activity. Nesse arquivo: - defini-la como a primeira a ser executada (recortar o intent-filter da MainActivity para a Activity) <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.guarino.exemplo1"> <application android:allowbackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsrtl="true" android:theme="@style/apptheme"> <activity android:name=".mainactivity"> </activity> <activity android:name=".activity"> <intent-filter> <action android:name="android.intent.action.main" <category android:name="android.intent.category.launcher" </intent-filter> </activity> </application> </manifest> Abrir a activity_login.xml no modo Design e alterar o AppTheme para AppCompat.Light

Acrescentar as strings em strings.xml <string name="lbl"></string> <string name="lblsenha">senha</string> <string name="btnautenticar">autenticar</string> Acrescentar cor em colors.xml <color name="txt">#000000</color> <color name="lbl">#000000</color> Acrescentar dimensão em dimens.xml <dimen name="txt">16sp</dimen> <dimen name="lbl">16sp</dimen> Criar um estilo em styles.xml <style name="lbl" > <item name="android:textcolor">@color/lbl</item> <item name="android:textsize">@dimen/lbl</item> <item name="android:layout_marginbottom">@dimen/margin_widgets</item> </style> <style name="txt" > <item name="android:textcolor">@color/txt</item> <item name="android:textsize">@dimen/txt</item> <item name="android:layout_marginbottom">@dimen/margin_widgets</item> </style> Alterar a activity_login.xml - Para LinearLayout - Orientação: vertical - Adicionar 2 TextView - Adicionar 2 EditText - Adicionar 1 Button <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_height="match_parent" android:padding="@dimen/margin_widgets" tools:context="com.example.guarino.exemplo1.activity" android:orientation="vertical">

<TextView android:layout_width="wrap_content" style="@style/lbl" android:text="@string/lbl" <EditText android:id="@+id/txt" style="@style/txt" android:inputtype="text" <TextView android:layout_width="wrap_content" style="@style/lbl" android:text="@string/lblsenha" <EditText android:id="@+id/txtsenha" android:inputtype="textpassword" <Button android:id="@+id/btnlogar" android:text="@string/btnautenticar" </LinearLayout> Na Activity.java - Deixar invisível a ActionBar @Override protected void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate); setcontentview(r.layout.activity_login); getsupportactionbar().hide(); Executar o app Será exibida a tela de.

Adicionar uma imagem acima do TextView em activity_login.xml Iremos usar uma imagem já existente. <ImageView android:layout_height="100dp" android:src="@mipmap/logo" android:layout_gravity="center" Executar o app Será exibida a tela de. Adicionando ScrollView Dependendo da quantidade de componentes na tela, será necessário um ScrollView. Altere a imagem da tela de login para ter android:layout_height="300dp"

Mesmo com a tela ruim, ainda não tem ScrollView. Alterar a activity_login.xml - O primeiro componente deve ser o ScrollView. Lembre de fechar a tag ScrollView ao final do arquivo. - O primeiro elemento deve ter o xmlns - Deve ser colocado também o layout_width e layout_height - Do LinearLayout deve ser removido o xmlns <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_height="match_parent"> <LinearLayout android:layout_height="match_parent" android:padding="@dimen/margin_widgets" tools:context="com.example.guarino.exemplo1.activity" android:orientation="vertical"> <ImageView android:layout_height="300dp" android:src="@mipmap/logo" android:layout_gravity="center" <TextView android:layout_width="wrap_content" style="@style/lbl"

android:text="@string/lbl" <EditText android:id="@+id/txt" style="@style/txt" android:inputtype="text" <TextView android:layout_width="wrap_content" style="@style/lbl" android:text="@string/lblsenha" <EditText android:id="@+id/txtsenha" android:inputtype="textpassword" <Button android:id="@+id/btnlogar" android:text="@string/btnautenticar" </LinearLayout> </ScrollView> Executar o app No layout Portrait está OK. Ao rotacionar a tela (Ctrl+F11) ou pelo emulador, no layout landscape aparece um Scroll. Ainda não é a melhor solução. A melhor é ter um tela para Portrait e uma para Landscape.

Adicionando outro diretório Na pasta res > New > Android Resource Directory

Selecione a visão Project Na pasta layout, copie o arquivo activity_login.xml Cole esse arquivo na pasta layout-land. O arquivo deve estar com o mesmo nome. Automaticamente o Android Studio irá defini-la como Landspace (pois a outra Activity já está como Portrait)

Na layout-land/activity_login.xml, altere a altura da imagem para apenas 50dp <ImageView android:layout_height="50dp" android:src="@mipmap/logo" android:layout_gravity="center" Execute a app No modo Portrait aparece corretamente. Rotacione a tela para Landscape. A imagem será diminuída. Obs: Para visualização portrait, o Android busca direto na pasta layout mas poderia ser a pasta layout-port. É importante que os ids dos componentes estejam iguais porque se não na Activity.java vai ocorrer uma exceção.

Validando os campos Na Activity.java Acrescentar as linhas em destaque. package com.example.guarino.exemplo1; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.view.view; import android.widget.button; import android.widget.edittext; import com.example.guarino.exemplo1.util.util; public class Activity extends AppCompatActivity private EditText txt; private EditText txtsenha; private Button btnlogar; @Override protected void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate); setcontentview(r.layout.activity_login); getsupportactionbar().hide(); txt = (EditText) findviewbyid(r.id.txt); txtsenha = (EditText) findviewbyid(r.id.txtsenha); btnlogar = (Button) findviewbyid(r.id.btnlogar); btnlogar.setonclicklistener(new View.OnClickListener() @Override public void onclick(view v) String login = txt.gettext().tostring(); String senha = txtsenha.gettext().tostring(); boolean isvalido = validar(login, senha); if (!isvalido) Util.showMessageToast(Activity.this, "Preencha os campos"); );

private boolean validar(string login, String senha) if (login == null "".equals(login)) //Util.showMessageToast(Activity.this, " obrigatório"); else if (senha == null "".equals(senha)) //Util.showMessageToast(Activity.this, "Senha obrigatória"); else return true; Execute o app Verifique se a mensagem aparece corretamente para o não preenchimento dos campos. Caso queira exibir uma mensagem diferente para cada campo, descomente as linhas comentadas no método validar.

Uma outra forma de validar. Acrescente uma mensagem de erro em cada campo. Dessa forma, não é necessário o uso do Toast. private boolean validar(string login, String senha) if (login == null "".equals(login)) txt.seterror("campo obrigatório"); //Util.showMessageToast(Activity.this, " obrigatório"); else if (senha == null "".equals(senha)) txtsenha.seterror("campo obrigatório"); //Util.showMessageToast(Activity.this, "Senha obrigatória"); else return true; Execute o app Verifique se a mensagem aparece corretamente para o não preenchimento de cada campo.

Refatorando o código e validando os campos ao mesmo tempo Crie o método ispreenchido. Reescreva o método validar. Crie o método validarsenha. Reescreva a chamada dos métodos. public class Activity extends AppCompatActivity private EditText txt; private EditText txtsenha; private Button btnlogar; @Override protected void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate); setcontentview(r.layout.activity_login); getsupportactionbar().hide(); txt = (EditText) findviewbyid(r.id.txt); txtsenha = (EditText) findviewbyid(r.id.txtsenha); btnlogar = (Button) findviewbyid(r.id.btnlogar); btnlogar.setonclicklistener(new View.OnClickListener() @Override public void onclick(view v) String login = txt.gettext().tostring(); String senha = txtsenha.gettext().tostring(); boolean loginvalido = validar(login); boolean senhavalida = validarsenha(senha); if (loginvalido && senhavalida) //Util.showMessageToast(Activity.this, "Preencha os campos"); ); private boolean validar(string login) if (!ispreenchido(login)) txt.seterror("campo obrigatório"); //Util.showMessageToast(Activity.this, " obrigatório"); return true;

private boolean validarsenha(string senha) if (!ispreenchido(senha)) txtsenha.seterror("campo obrigatório"); //Util.showMessageToast(Activity.this, "Senha obrigatória"); return true; private boolean ispreenchido(string campo) if (campo == null "".equals(campo)) return true; Execute o app Verifique se o funcionamento continua correto. Agora os 2 campos são validados no clique no botão.

Quantidade mínima de caracteres Criar um novo método private boolean hastamanhominimo(string campo) if (campo.length() > 2) return true; Alterar o método validar private boolean validar(string login) if (!ispreenchido(login)) txt.seterror("campo obrigatório"); //Util.showMessageToast(Activity.this, " obrigatório"); else if (hastamanhominimo(login)) txt.seterror("campo deve ter pelo menos 3 caracteres"); return true; Execute o app Verifique se o funcionamento está correto.