Você está na página 1de 5

Programao de interfaces Android com Fragments

Joo M. M. C. Cota1
1

Departamento de Computao e Construo Civil Centro Federal de Educao


Tecnolgica de Minas Gerais (CEFET-MG) Rua 19 de Novembro, 121 Centro
Norte Timteo - MG CEP: 35.180-008 Fone: +55 (31) 3848-7191 | 3848-4231
joao_marcos_cota@hotmail.com

Abstract. One of the greatest difficulties faced in creating programs is the


user interface. Depending on what one wishes to do application development
can become time consuming because of the graphical interface. Android is not
much different. For some it is strange to start having to program all the
screens in XML and having to add them to the projects Manifest so that the
screens operating in accordance with what they want. This article will
address practical way to do it using Fragments.
Resumo. Uma das grandes dificuldades enfrentadas na criao de programas
a interface de usurio. Dependendo do que deseja-se fazer pode tornar
demorado o desenvolvimento da aplicao por causa da interface grfica.
Com Android no muito diferente. Para alguns estranho de incio ter que
programar todas as telas em XML e ter que adicionar elas ao Manifest do
projeto para que as telas funcionem de acordo com o que querem. Neste
artigo ser abordada uma forma prtica de fazer usando Fragments.

1. Introduo
Ao sair de um ambiente desktop ou web para programar pra um ambiente
embarcado ou mvel, ocorre sempre um estranhamento, principalmente na parte que
diz respeito interface grfica com o usurio, que vem de dificuldades desde criar a
tela, pois no caso do Android essa fica em um arquivo separado (xml) e dependendo da
ferramenta ou recurso utilizado para montar cada interface, torna-se difcil a
visualizao de como ela est sendo projetada e se isso realmente o desejado.
Uma soluo de quando se deseja fazer uma tela interativa e com suporte a telas
de vrios tamanhos o recurso de Fragments. Foi implementado com o Android 3.0,
mas possui bibliotecas de integrao que funciona desde o Android 1.6.

2. Fragments versus outros tipos de interfaces


Ao primeiro contato mais comum programar as interfaces grficas para
dispositivos com Android usando a view padro, pela facilidade e por se achar mais
tutoriais e livros de apoio que ensinam. Alguns modos mais fceis de se ver isso,
respondendo perguntas como: Quais os efeitos de se usar fragments? e analisando as
vantagens e desvantagens contra outros tipos de interface como activity, view e layout.
Ao ponto que view padro foi uma soluo para o Android na hora de criar
interfaces reutilizveis, o mesmo pode ser conseguido nos outros tipos de interfaces

mas sendo necessria criao de classes que faam isso, usando algum import.
Exemplos disso:

ActionBar que gera abas que podem ser utilizadas, podem ser implementadas
sem uso de Fragments. Utilizando FragmentTransaction pode-se facilmente
gerar essas abas, sendo que o mtodo onTabSelected controlaria essas mudanas
via toque ou passar o dedo de um lado para o outro;

ViewPager e o controlador FragmentPagerAdapter tambm cria interfaces que


podem utilizar de movimentos de dedos para a troca delas, e pode sem
combinadas com outras interfaces.

FragmentManager o responsvel por todo o controle dessas interfaces.

3. Ciclo de vida de Fragments


O ciclo de vida parecido com de uma Activity s que com adio de mais
perodos, como pode ser observado nas imagens abaixo:
Figura 1: Fragment Lifecycle

Figura 2: Activity Lifecycle

Por isso, portar uma simples Activity para Fragment torna-se bem simples pelo fato de
serem bem parecidos e possurem mtodos parecidos, tornando a implementao e
modificao futura da aplicao bem simples.

4. Exemplo de interface
Para maior facilidade de integrao, pode-se fazer pequenas alteraes em
cdigos para que esses trabalhem gerando interfaces de acordo com o tamanho da tela
do aparelho, e isso feito de forma automtica usando os diferenciadores large na pasta
de layout para que seja selecionado automaticamente, de acordo com os seguintes
cdigos:

Handset (pasta: res/layout/main.xml )

<?xml version="1.0" encoding="utf-8"?>


<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- "Fragment A" -->
<fragment class="com.example.android.TitlesFragment"
android:id="@+id/list_frag"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>

Tablet (pasta: res/layout-large/main.xml )


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/frags">
<!-- "Fragment A" -->
<fragment class="com.example.android.TitlesFragment"
android:id="@+id/list_frag"
android:layout_width="@dimen/titles_size"
android:layout_height="match_parent"/>
<!-- "Fragment B" -->
<fragment class="com.example.android.DetailsFragment"
android:id="@+id/details_frag"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>

Note que com modificaes simples no cdigo, sem alterar suas propriedades
como nomes, e somente alterando a pasta mas mantendo o mesmo arquivo e ids,
consegue-se fazer fcil portabilidade entre grandes e pequenas telas, resultando na tela
da figura 3.

Figure 3: Android tablet e celular

5. Concluso
A grande vantagem de se usar Fragments a reduo de alteraes no Manifest
da aplicao, a facilidade de alterar e adicionar novas pginas e o grande suporte a
aes na interface (ciclo de vida maior) pois ele salva a ao e no a apaga, permitindo
assim aes de retorno mais facilitadas. No caso de uma simples view, como a ao
apagada, tem-se que criar meios de salvar o retorno e garantir que esse no seja perdido
e exista. Tambm pode-se citar que com o alto encapsulamento, a possibilidade de
reutilizao de cdigo facilitada.
No aconselhvel usar fragments quando for necessria uma tela de
carregamento, splash ou loading, ou quando se deseja fazer uma exibio personalizada
para colocar dentro de uma caixa de contexto, DialogFragment, ou criar componentes
dentro de componentes, aninhamento.
Fragments ideal em interfaces grficas, quando for necessria um dinamismo
maior e maior facilidade de programao e reuso.

7. References
JONES, K., 2012. Android Fragments Tutorial. URL http://www.sign-lang.unihttps://thenewcircle.com/s/post/1250/android_fragments_tutorial [Acessado 06 de
Outubro de 2014]
ANDROID - need some clarifications of fragments vs activities and views. URL
http://stackoverflow.com/questions/10478233/android-need-some-clarifications-offragments-vs-activities-and-views [Acessado 06 de Outubro de 2014]
ANDROID
fragments
vs
compound
controls.
URL
http://stackoverflow.com/questions/6214780/android-fragments-vs-compoundcontrols/11126397#11126397 [Acessado 06 de Outubro de 2014]
What is the benefit of using Fragments in Android, rather than Views? . URL
http://stackoverflow.com/questions/8617696/what-is-the-benefit-of-using-fragmentsin-android-rather-than-views [Acessado 06 de Outubro de 2014]
Why
use
Fragments?
[duplicate].
URL
http://stackoverflow.com/questions/9827072/why-use-fragments [Acessado 06 de
Outubro de 2014]
Google
Inc.
Fragments.
URL
http://developer.android.com/guide/components/fragments.html [Acessado 06 de
Outubro de 2014]
Google
Inc.
Activities.
http://developer.android.com/guide/components/activities.html [Acessado
Outubro de 2014]

URL
06 de

Você também pode gostar