Busca

Mark Vasconcelos Creative Solutions

Teaching & Learning

Café com Java – Agosto

Dia 20/08/2011(Sabádo) haverá um Café com Java.

O que é Café com Java?

Organizado a algum tempo por mim e o Eduardo Bregaiada, era simplesmente um encontro para o pessoal fazer um networking. Mas como concluimos que seria uma boa idéia apresentarmos alguns assuntos em forma de palestras para compartilhar um conteúdo mais técnico antes do PUB, esse Café com Java será um pouco diferente.

Esse evento contará com 4 palestras de 30 minutos, e será realizado no auditório da Caelum próximo da estação Vila Mariana do metrô.

Apresentações:

09:30 – 09:45 – Paulo Silveira (Boas vindas)
09:45 – 10:30 – Adriano Almeida (Java 7 na prática: o que muda no meu código?)
10:30 – 11:00 – Eduardo Bregaida (Refatoração de Código com Capitão Nascimento)
11:00 – 11:45 – Break
11:45 – 12:15 – Alexandre Saudate (SOA)
12:15 – 12:45 – Marcos Vasconcelos (Android Overview)

 

Onde?

Auditorio Caelum – Rua Vergueiro, 3185 – Perto da estação Vila Mariana do metro.

Quem pode ir?

Todos! É uma confraternização, um networking, nada formal, também não é algo focado apenas em Java, se você programa em outra linguagem vá também.

Importante: dada a procura, a Caelum criou um formulario de inscrição para garantir que caberá os interessados (apenas para as palestras, o bar é livre).

Fotos de outros Café com Java: Flickr

Não esqueçam!

Hora: 09:30 – 12:45 na Caelum, após as 13:00 hrs no barzinho e Lanchonete Batidão também na Vila Mariana até a hora que todo mundo for embora
Local: Auditorio Caelum – Rua Vergueiro, 3185 – metrô Vila Mariana – mapa.
Local Batidão (HappyHour): Rua Domingos de Morais, 1527 – Vila Mariana – mapa
Twitter HashTag: #CafeComJava
Site da Caelum: http://http://www.caelum.com.br/

Anúncios

Android snippet – Usando um Device para desenvolvimento

Como eu já disse varias vezes, o emulador do Android é MUITO lento, dependendo da aplicação demora segundos coisas que são quase instantaneas em um aparelho de verdade.

Mas assim como é possivel enviar o APK durante desenvolvimento para o AVD (Android Virtual Device), também é possivel envia-lo diretamente para um aparelho conectado no computador.

Para fazer isso, basta ter um aparelho com Android e o ambiente de progamação instalado.

Primeiro:
No seu Device com Android, vá em Configuração > Aplicações > Desenvolvimento, e habilite “Depuração de USB”.
Conecte seu aparelho via USB no computador.

No Eclipse, vá na perspectiva DDMS, e na lista de devices, escolha o seu aparelho que apareceu.

Se invés de um id, tiver aparecido varias interrogações como na foto abaixo, é preciso reiniciar o adb em modo root.

Para isso:
Via terminal, navegue até a pasta de instalação do Android SDK.

Dentro dela, vá em platform-tools e execute os seguintes comandos:

./adb kill-server
sudo ./adb root

PS: Esses são os comandos unix, para Windows deve ser algo bem parecido (provavelmente sem o ‘./’)

Agora volte ao Eclipse e selecione seu device.

Crie uma aplicação de teste para a mesma versão do Android do seu device.

Vá em Run As.. Android Application, e seu aplicativo será aberto no device.

Se o AVD também estiver aberto é possivel que o seu aplicativo rode nele, para mudar isso, entre em Run As.. > Run Configurations.. na aba Target escolha “manual”, quando rodar a aplicação ele vai mostrar a lista de devices para escolher em qual lançar, no modo automatic sem nenhum “preferred Android Virtual Device” selecionado ele também exibe a lista, a diferença é que se tiver apenas um AVD disponivel o seu aplicativo roda-rá nele.

Towel – Release 1.2.2

Hoje está sendo liberado um release do projeto Towel com uma pequena alteração enviado por Paulo Henrique.

A unica diferença é que agora é possivel mudar o texto do botão que aparece no Popup do CalendarView.

Para isso, basta usar o método setTodayString do CalendarView.

Ex:

CalendarView view = new CalendarView();
view.setTodayString("Hoje");

Para baixar a nova versão, basta entrar na pagina Towel Project do blog e seguir o link para o github.

Android – Toast – code snippet

Toasts são uma maneira simples de exibir uma mensagem curta ao usuario.

Para utilizar é muito simples, basta utilizar o método Toast.makeText para criar um Toast e mandar exibir.

O método makeText recebe três parametros:

  • Context context – O contexto, pode ser uma Activity ou algum Context que voce pegue de algum lugar (getApplicationContext() e etc)
  • CharSequence text – O texto a ser exibido
  • int duration – A duração que o Toast será exibido, por padrão existe os valores Toast.LENGHT_LONG e Toast.LENGHT_SHORT

Um pequeno código de exemplo:

Toast toast = Toast.makeText(context, "Texto para o usuario", Toast.LENGTH_LONG);
toast.show();

E o resultado disso é algo como o seguinte:

CalendarView

Esse artigo é sobre uma classe do projeto Towel, para utiliza-la, baixe a biblioteca na pagina Towel Project desse blog.

Esse componente foi feito em 1999 pelo meu professor de Java enquanto ele fazia estagio na area, por esse motivo eu desculpo ele por ter usado null-layout, mas refatorei ele para ser mais generico e independente de LayoutManagers.

O CalendarView é um componente que exibe um JTextField e um JButton juntos.
O JTextField serve para digitar dadas no formato ‘dd/MM/yyyy’ e o JButton abre uma JWindow que permite escolher a data em um calendario.

Para utiliza-lo é bem simples:

import java.awt.event.*;
import javax.swing.*;

import com.towel.swing.calendar.CalendarView;

public class CalendarViewTest {
	public CalendarViewTest() {
		JFrame frame = new JFrame("CalendarView");
		JPanel content = new JPanel();
		final CalendarView view = new CalendarView();
		JButton button = new JButton("X");
		content.add(view);
		content.add(button);
		button.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				System.out.println(view.getSelectedDate());
			}
		});

		frame.setContentPane(content);
		frame.pack();
		frame.setLocationRelativeTo(null);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}

	public static void main(String[] args) {
		new CalendarViewTest();
	}
}

Esse codigo exibe a seguinte janela:

E quando pressionado o botao “..” a JWindow aparece com o DatePicker para escolher uma data.

Escolhendo alguma data o valor é exibido no campo de texto.

Para obter o valor que o usuario digitou (em uma ação por exemplo), temos dois métodos:

  • getText() que retorna o texto do TextField
  • getSelectedDate() que retorna um objeto Calendar com a data selecionada pelo usuario.
  • E no caso do código de exemplo, ao pressionar ‘X’ é exibido o toString do objeto Calendar que for escolhido.

    Como sempre, ainda é possivel melhorar esse componente, e essa é a lista do que já pode ser feito:

  • Um Layout melhor para o JWindow.
  • Internacionalizar os textos (nome do mês, inicial do dia, botão “hoje”)
  • Poder digitar datas no formato MM/dd/yyyy
  • Towel – Release 1.2

    Hoje dia 25/05 está sendo liberado o novo release do projeto Towel.

    As novidades são:

    • FieldResolver consegue obter/setar os valores dos atributos através da hierarquia do objeto;
    • Não é obrigatório declarar as anotações @Resolvable em todos os atributos, nesses casos o DefaultFormatter vai ser utilizado e o FieldHandler será o FieldAcessHandler padrão;
    • Um novo componente enviado pelo meu professor de Java foi incluido no pacote com.towel.swing sob o nome de CalendarView, que é um DatePicker para Swing; (Artigo em breve)

    Para baixar a nova versão, basta entrar na pagina Towel Project do blog e seguir o link para o github.

    Mais uma coisa está acontecendo hoje:

    Dia 25/05 é o Towel Day, em homenagem a Douglas Adams.
    Esse release foi planejado. 😉

    Abraço a todos, e feliz dia da toalha!

    Android – Controles do Emulador (AVD)

    Essa lista consta no seguinte link.

    Esses são os controles para utilizar o emulador como um device.

    Ação emulada Botão no teclado
    Home HOME
    Menu F2 ou Page-up button
    Star Shift-F2 ou Page Down
    Back ESC
    Call/dial F3
    Hangup/end call F4
    Search F5
    Power (lock device) F7
    Audio volume up KEYPAD_PLUS, Ctrl-5
    Audio volume down KEYPAD_MINUS, Ctrl-F6
    Camera Ctrl-KEYPAD_5, Ctrl-F3
    Mudar para orientação anterior KEYPAD_7, Ctrl-F11
    Mudar para proxima orientação KEYPAD_9, Ctrl-F12
    Toggle cell networking on/off F8
    Toggle code profiling F9 (apenas se iniciado com -trace)
    Toggle modo fullscreen Alt-Enter
    Toggle modo trackball F6
    Modo trackball (Enquanto pressionado) Delete
    DPad left/up/right/down KEYPAD_4/8/6/2
    DPad center click KEYPAD_5
    Onion alpha increase/decrease KEYPAD_MULTIPLY(*) / KEYPAD_DIVIDE(/)

    PS: Para usar os valores do keypad é preciso desligar o NumLock.

    As ações mais utilizadas são (pelo menos por mim):

    • KEYPAD_7 ou KEYPAD_9 para mudar orientação.
    • HOME para voltar para home.
    • ESC que é o botão “return”
    • F2 que é o botão “opções”
    • Direcionais do teclado fisico (presente em alguns devices), KEYPADS 2, 4, 8 e 6
    • Touchs na tela são emulados com o mouse
    • TrackBall segurar DEL e mover o mouse

    Só para constar, não é possivel emular multi-touch, para isso é necessario um device de verdade.

    Android – Views – pt. 1

    O Android conta com várias Views por padrão, e neste artigo exploraremos algumas delas.

    Uma View é similar a um JComponent, é um item que pode ser adicionado a tela onde o usuario poderá ver e interagir com ele.

    Este artigo cobre apenas como criar esses elementos via XML, que é de longe a maneira mais fácil para lidar com telas.

    Para continuarmos, vamos criar um projeto com os seguintes parametros:

    Target: 2.1
    Application Name: ViewsExample
    Package Name: br.techs
    Create Activity: MainActivity
    Min SDK Version: 7

    Views

    Todas as tags de Views no Android tem suporte ao atributo id, é com ele que conseguimos acessar nossa tela após inflá-la.
    As declarações de novos ids devem começar com ‘@+id/’ e depois disso demos o valor que vai ser o id.
    Ex:

    <TagQualquer android:id="@+id/iddesejado" />
    

    TextView

    Sempre que escolhemos a opção “Create Activity” quando estamos criando um projeto, o ADT se encarregará de criar uma classe e um main.xml que é simplesmente um TextView com as palavras “Hello World!” escritas.

    O TextView é usado para exibir texto para o usuario, assim como o JLabel do Swing. Podemos controlar sua aparência e tamanho pelo XML, basta modificar os atributos na tag TextView, alguns desses atributos são:

    • android:text: valor será o texto do componente;
    • android:textColor: O valor da cor no formato ‘#RRGGBB’ em hexadecimal, é a cor do texto;
    • android:textSize: Tamanho da fonte, deve ser indicado em px, ex: ’12px’;
    • android:textStyle: Style do texto (bold, italic);
    • android:background: Uma cor no formato #RRGGBB ou um drawable;

    Alguns atributos são valores pré-defenidos como os do android:textStyle, mesmo assim, ainda é possivel usar mais de um valor no atributo, é aqui que entra o operador pipe “|”.
    Por exemplo, se quisermos o texto em negrito usamos “bold”, em itálico usamos o valor “italic”, mas se quisermos que o texto seja negrito+itálico, podemos usar o pipe juntando os dois: “bold|italic”.

    Modificamos nosso main.xml para testar estes atributos.

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
    	xmlns:android="http://schemas.android.com/apk/res/android"
    	android:layout_width="match_parent"
    	android:layout_height="match_parent">
    	<TextView android:id="@+id/textView"
    		android:layout_width="match_parent"
    		android:layout_height="wrap_content"
    		android:text="Hello Views!"
    		android:textSize="28px"
    		android:textColor="#12FF88"
    		android:textStyle="italic|bold"
    	/>
    </LinearLayout>
    

    E agora, rodando nossa atividade já podemos ver o seguinte:

    EditText

    Enquanto o TextView exibe texto como um JLabel, quem oferece ao usuário um campo para ele colocar texto é o EditText (assim como o JTextField) que é filho de TextView.
    Este componente não declara nenhum atributo XML novo, mas usa os do TextView, a diferença é que ele realmente permite edição.

    Para tornar ele editável ou não, usamos o atributo android:editable com true ou false (true é o default). O TextView mesmo com true não permite edição.

    Button

    É um simples botão com algo escrito assim como o JButton. É através deles que o usuario sabe que alguma ação será realizada quando clicar.

    Modificando nosso main.xml para testar esses componentes.

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
    	xmlns:android="http://schemas.android.com/apk/res/android"
    	android:layout_width="match_parent"
    	android:layout_height="match_parent">
    	<TextView android:id="@+id/textView"
    		android:layout_width="match_parent"
    		android:layout_height="wrap_content"
    		android:text="Hello Views!"
    		android:textSize="28px"
    		android:textColor="#12FF88"
    		android:textStyle="italic|bold" />
    	<EditText android:id="@+id/editView"
    		android:layout_width="match_parent"
    		android:layout_height="wrap_content"
    		android:text="..."
    		android:textSize="28px"
    		android:textColor="#12FF88"
    		android:textStyle="italic|bold" />
    	<Button android:id="@+id/button"
    		android:layout_width="match_parent"
    		android:layout_height="wrap_content"
    		android:text="Click!"
    		android:textSize="28px"
    		android:textColor="#12FF88"
    		android:textStyle="italic|bold" />
    </LinearLayout>
    

    Notaram alguma semelhança?

    Isso por que Button e EditText estendem TextView e compartilham os atributos de texto.

    E o resultado da nossa tela até agora é o seguinte:

    CheckBox

    É um botão que permite ao usuario alternar entre as opções marcado/desmarcado.

    Ele também estende TextView, e o valor atribuido em ‘android:text’ é o texto visivel ao lado do CheckBox.

    ToggleButton

    ToggleButton são botões como o CheckBox, mas indicam marcado/desmarcado com uma ‘luz’ invés do efeito de desenho de um “tick”.
    O atributo ‘android:text’ não tem efeito nesse componente, por padrão o texto é alternado entre ON e OFF, sendo possivel usar os atributos como color, style, size e etc.. para modificar a aparencia desse texto.
    Esse componente tem dois atributos a mais para sua tag.

    • android:textOn: O texto que será exibido quando estado for ON
    • android:textOff: O texto que será exibido quando estado for OFF

    RadioButton

    São botões como o CheckBox que permitem marcá-lo, mas não é possivel desmarcá-lo.
    Para se obter o efeito de seleção unica, é necessario adicionar eles dentro de um RadioGroup.

    E o nosso XML final:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout android:orientation="vertical"
    	xmlns:android="http://schemas.android.com/apk/res/android"
    	android:layout_width="match_parent" android:layout_height="match_parent">
    	<TextView android:id="@+id/listView" android:layout_width="match_parent"
    		android:layout_height="wrap_content" android:text="Hello Views!"
    		android:textSize="28px" android:textColor="#12FF88" android:textStyle="italic|bold" />
    	<EditText android:id="@+id/textView" android:layout_width="match_parent"
    		android:layout_height="wrap_content" android:text="..."
    		android:textSize="28px" android:textColor="#12FF88" android:textStyle="italic|bold" />
    	<Button android:id="@+id/button" android:layout_width="match_parent"
    		android:layout_height="wrap_content" android:text="Click!"
    		android:textSize="28px" android:textColor="#12FF88" android:textStyle="italic|bold" />
    	<CheckBox android:id="@+id/check" android:layout_width="match_parent"
    		android:layout_height="wrap_content" android:text="Check it!"
    		android:textSize="28px" android:textColor="#12FF88" android:textStyle="italic|bold" />
    	<ToggleButton android:id="@+id/tbutton"
    		android:layout_width="match_parent" android:layout_height="wrap_content"
    		android:textOn="Ligado" android:textOff="Desligado" android:textSize="28px"
    		android:textColor="#12FF88" android:textStyle="italic|bold" />
    	<RadioGroup android:layout_width="match_parent"
    		android:layout_height="wrap_content">
    		<RadioButton android:id="@+id/r1button"
    			android:layout_width="match_parent" android:layout_height="wrap_content"
    			android:text="Opção 1" android:textSize="28px" android:textColor="#12FF88"
    			android:textStyle="italic|bold" />
    		<RadioButton android:id="@+id/r2button"
    			android:layout_width="match_parent" android:layout_height="wrap_content"
    			android:text="Opção 2" android:textSize="28px" android:textColor="#12FF88"
    			android:textStyle="italic|bold" />
    	</RadioGroup>
    </LinearLayout>
    

    Note que todos eles tem os atributos do TextView, tornando fácil personalizá-los.

    E o resultado final da nossa aplicação é como a seguinte:

    PS:
    Para facilitar, indiquei aqui para criar um novo projeto para esse artigo. Mas o código original está no projeto AndroidTechs, e a nossa MainActivity lá é a ViewActivity e o main.xml é a views.xml.

    Esse é o primeiro artigo sobre Views, aqui apresentei apenas as mais comuns para um programa Android, guardarei umas Views mais interessantes para depois. 😉

    Café com Java – Maio

    Dia 21/05/2011(Sabádo) haverá um café com Java, para o pessoal fazer um networking.

    O que é Café com Java?

    Organizado a algum tempo pelo Eduardo Bregaida e por mim, é simplesmente um encontro marcado para todos que quiserem ir, encontrarem mais pessoas que querem ir também 😛

    Onde?

    Esse evento será um pouco diferente, começaremos na Livraria Cultura e iremos ao Blue Pub em seguida.

    Quem pode ir?

    Todos! É uma confraternização, um networking e não um evento, nada formal.

    Posso chamar amigos da Faculdade e outros desenvolvedores que não programam em Java?

    Claro que SIM =)

    Fotos de outros Café com Java: Flickr

    Eu estarei lá e você?

    Não esqueçam!

    Dia: 21/05/2011
    Hora: 15:00 – até a hora que todo mundo for embora
    Local: Livraria Cultura – Av. Paulista. A Livraria Cultura fica ao lado da estação de metrô da Consolação MAPA
    Twitter Tag: #CafeComJava
    GUJ: Café Com Java

    Blog no WordPress.com.

    Acima ↑