Sitemap

Android: Dicas 7

3 min readJun 4, 2012

--

Olá povo,

Depois de um bom tempo, um novo post da série “Dicas de Android”. Espero que gostem ;)

1. Aplicando um background para toda a aplicação

Primeiro precisamos criar uma extensão do estilo que está sendo utilizado na aplicação. Você pode fazer isso criando o arquivo styles.xml na pasta values e deixando-o conforme abaixo:

<style name="MeuTemaPersonalizado"
android:parent="@android:style/Theme.Black.NoTitleBar">

@drawable/sua_imagem_de_bg

Depois, é só utilizar o estilo criado na tag

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/MeuTemaPersonalizado">

2. Deixando os nomes dos parâmetros corretos no Eclipse

No Eclipse, clique com o botão direito sobre o projeto e selecione Properties. No lado esquerdo, selecione Java Build Path, e em seguida, selecione a aba Libraries. Aqui você deve expandir a versão do Android que você está utilizando (2.3.3 por exemplo), e depois expandir o android.jar. Serão exibidos alguns subitens, entre eles, o Javadoc location. Basta clicar em Edit… e informar o local onde está a documentação do Android (até a pasta docs/reference). Depois é só clicar em Validate e pronto! Agora o Javadoc aparecerá no editor e nas classes/interfaces do Android que você herdar/implementar.

Get Nelson Glauber’s stories in your inbox

Join Medium for free to get updates from this writer.

3. Bloqueando a Home key
Desde sempre dizia que não dava para bloquear a Home até que meu colega Rodrigo Barbosa precisou fazer isso e resolveu compartilhar aqui no blog. Basta colocar o método abaixo na sua Activity.

@Override 
public void onAttachedToWindow() {
this.getWindow().setType(
WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}

4. Lendo XML com a Biblioteca Simple XML
Apesar de ser adepto do “Do it yourself”, algumas pessoas preferem as facilidades das bibliotecas. Recebi essa dica de Rafael Cavalcanti, que me indicou a Simple XML Serialization que facilita a leitura de arquivos XML. Ele converte automaticamente os elementos do arquivo XML em Objetos e Atributos de uma classe utilizando apenas anotações.
Abaixo um tutorial no próprio site do desenvolvedor:
http://simple.sourceforge.net/download/stream/doc/tutorial/tutorial.php

Mas para não deixar de mostrar alguma coisa aqui… Baixe o JAR da biblioteca e adicione ao Build Path do projeto.

@Root
class Carros {
@ElementList(inline=true)
public List list;
}

@Root
class Carro {
@Element
public String nome;
@Element
public String desc;
@Element
public String url_info;
@Element
public String url_foto;
}

Para ler esse XML do livro do Ricardo Lecheta era só fazer isso…

URL url = new URL(
"http://livroandroid.com.br/"+
"livro/carros/carros_esportivos.xml");

HttpURLConnection conexao = (HttpURLConnection)
url.openConnection();

Serializer serializer = new Persister();
Carros example = serializer.read(
Carros.class, conexao.getInputStream());

for (Carro carro : example.list) {
Log.d("NGVL", "Carro:" + carro.nome);
}

5. Personalizando Links do Android
A classe TextView tem a propriedade AutoLink (android:autoLink) que cria detecta links automaticamente no texto que está sendo exibido. Esses links podem abrir o navegador, cliente de email e o discador do aparelho. Mas e se quisermos fazer um link para abrir uma Activity nossa?
A classe Linkify permite criar links baseados em uma expressão regular.

TextView txt1 = (TextView)findViewById(R.id.textView1);
txt1.setText("Testando esse CEP 55555-4444");
// Zip code dos EUA
Pattern pattern = Pattern.compile(
"\\d{5}([\\-]\\d{4})?");

String scheme = "glauber://";
Linkify.addLinks(txt1, pattern, scheme);

Notem que foi passado o esquema glauber:// Para fazer com que uma Activity nossa responda a chamadas a esse “protocolo” é só adicionar uma na declaração da Activity no AndroidManifest.xml

<activity
android:name="ActivityQueSeraChamada"
android:label="@string/app_name" >

<action
android:name="android.intent.action.VIEW"/>
<category
android:name="android.intent.category.DEFAULT"/>

Para obter o valor do link clicado, basta usar getIntent().getDataString(). Isso retornará “glauber://55555–4444”

6. TableLayout e a propriedade layout_span
Estava querendo fazer um exemplo de TableLayout similar ao abaixo na minha última aula do TECDAM:

Uma característica do TableLayout é que cada linha é uma TableRow e cada coluna é um componente, que no caso acima, são TextViews, EditText e Checkboxes. Eu utilizei para a segunda coluna, a propriedade android:stretch_columns que informa quais colunas devem ser esticadas.
Porém, se você observar, a linha de cima tem 2 colunas, enquanto que a de baixo tem 3, foi aí que achei a propriedade android:layout_span (que é bem similar a do HTML) e informa quanto uma coluna irá expandir e criar uma nova coluna. Vejam como ficou o código do layout acima.

<TableLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:stretchColumns="1,2" >


<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nome" />

<EditText
android:id="@+id/editText1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_span="2" />



<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Avisos por:" />

<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Email" />

<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Telefone" />

É isso pessoal, qualquer dúvida, deixem seus comentários.

4br4ç05,
nglauber

--

--

Nelson Glauber
Nelson Glauber

Written by Nelson Glauber

Android Developer. Google Developer Expert for Android/Kotlin. Author of “Dominando o Android”.