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:
<resources> <style name="MeuTemaPersonalizado" android:parent="@android:style/Theme.Black.NoTitleBar"> <item name="android:windowBackground"> @drawable/sua_imagem_de_bg </item> </style> </resources>
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.
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<Carro> 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
<activity android:name="ActivityQueSeraChamada" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <data android:scheme="glauber"/> </intent-filter> </activity>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.
<?xml version="1.0" encoding="utf-8"?> <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" > <TableRow> <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" /> </TableRow> <TableRow> <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" /> </TableRow> </TableLayout>
É isso pessoal, qualquer dúvida, deixem seus comentários.
4br4ç05,
nglauber
Nenhum comentário:
Postar um comentário