Massami welington kamigashima


Recursos gráficos no android



Baixar 5.43 Mb.
Página4/25
Encontro07.10.2019
Tamanho5.43 Mb.
1   2   3   4   5   6   7   8   9   ...   25

Recursos gráficos no android


Android Developers (2011), comenta que há três principais recursos gráficos disponíveis na plataforma, sendo eles as bibliotecas gráficas 2D do pacote drawable, as APIs de Open Graphic Library for Embedded Systems (OpenGL ES) e as APIs do RenderScript. Essas bibliotecas devem ser utilizadas com consciência da necessidade que a aplicação irá utilizar, pois cada uma possui características que permitem facilitar o desenvolvimento em determinados casos, conforme comentado a seguir.
      1. Bibliotecas 2D


Há duas formas principais de se desenhar gráficos em 2D, sendo elas a utilização de Views ou desenhando diretamente em um Canvas (ANDROID DEVELOPERS,2011).
        1. Views


Para o desenvolvimento de gráficos e animações em 2D, existem duas bibliotecas disponíveis no Android para desenhar imagens e formas, sendo elas a android.graphics.drawable e a android.view.animation.

Segundo Android Developers (2011), um objeto da classe Drawable é “algo que pode ser desenhado”. Há três formas de se instanciar um objeto Drawable: utilizando uma imagem existente dentro do projeto, utilizando um arquivo XML para definir as propriedades do objeto ou utilizando construtores da classe.

Utilizar imagens salvas dentro do projeto são recomendadas para a utilização em ícones, logos ou outros gráficos como os utilizados em um jogo. As imagens suportadas pela classe Drawable são: Portable Network Graphics (PNG) que é preferível,
Joint Photographic Experts Group (JPG) que é considerado aceitável e
Graphics Interchange Format (GIF) é desencorajado pela plataforma. Para utilizar uma imagem, ela deve estar inserida na pasta res/drawable/ ou na pasta res/raw/. Caso ela esteja na pasta res/drawable/, na construção do projeto, uma ferramenta chamada Android Asset Packaging Tool (AAPT), responsável por criar a classe R.java, que automaticamente efetua a compressão otimizada de imagens sem perda de qualidade, reduzindo assim o consumo de memória ao utilizar esta imagem. Por exemplo, uma imagem PNG que utiliza menos que 256 cores, é convertido para um PNG 8 bits. Porém, caso a imagem deva ser utilizada em seu estado original na forma de bitmap, a imagem deve ser inserida na pasta res/raw/. O Quadro 3 demonstra um exemplo de implementação de uma imagem chamada card_background_blue.png existente dentro da pasta drawable/nodpi/ no projeto (ANDROID DEVELOPERS, 2011).


Resources res = getContext().getResources();

Drawable img = res.getDrawable(R.drawable.card_background_blue);



Quadro 3 - Exemplo de inserção de recursos
        1. Canvas


Segundo Android Developers (2011), desenhar utilizando o Canvas é melhor em casos onde é necessário que a tela seja redesenhada regularmente. O Canvas atua como um intermediador armazenando as chamadas de desenho do aplicativo e convertendo-os em um Bitmap que será inserido na tela. É possível criar um novo Canvas passando como parâmetro um Bitmap que define a área de desenho, porém recomenda-se que seja utilizado o Canvas disponível pela função View.onDraw() ou SurfaceHolder.lockCanvas(). A classe disponibiliza várias funções de desenho como o drawRect() e o drawBitmap(), permitindo também utilizar recursos da classe Drawable.
      1. OpenGL ES


A biblioteca OpenGL para a plataforma Android disponibiliza gráficos de alta performance tanto para 2D como 3D utilizando a API OpenGL ES. No Android, há duas classes fundamentais que permitem a criação e manipulação de gráficos pelo OpenGL ES.
        1. GLSurfaceView


Esta classe derivada da classe View, é muito semelhante à classe SurfaceView, que é uma View que permite ser alterado seu formato e tamanho utilizando ordenação por profundidade para organizar seus objetos. Esta classe é responsável por gerenciar superfícies que são componentes especiais na visualização no Android, renderização utilizando threads dedicadas para melhorar o desempenho e suporta renderização sob demanda ou contínuo.

Toda GLSurfaceView necessita de um Renderer, que é registrado pela função setRenderer(Renderer). Após definido o Renderer, é possível alterar seu modo padrão de renderização contínua para sob demanda.


        1. Renderer


A interface genérica Renderer deriva do pacote GLSurfaceView e é responsável por fazer o OpenGL desenhar os quadros na tela. Cada Renderer gera uma nova thread, para que o desempenho da aplicação não seja prejudicada.
    1. Resources e XMLs


Os aplicativos do Android têm forte vínculo com arquivos XML, desde o mapeamento dos componentes do sistema até os layouts e atributos das classes. A partir do arquivo AndroidManifest.xml (Quadro 4), ao compilar o projeto são mapeados os recursos e propriedades utilizados pelo aplicativo que deseja-se aplicar a todas as atividades ou a um algumas em específico.

Ao criar um novo projeto Android no Eclipse, é criada uma pasta chamada res que possui por padrão as pastas drawable, layout e values. Os arquivos inseridos dentro da pasta res devem utilizar somente letras minúsculas, números e sublinhado, sendo que o primeiro caractere deve ser uma letra.


      1. AndroidManifest.xml


"1.0" encoding="utf-8"?>

"(...)/apk/res/android" package="engine.View">

"10" android:minSdkVersion="10" />

"@drawable/card_background_blue"

android:debuggable="true"

android:label="Card Engine" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">

"Home">



"android.intent.action.MAIN" />

"android.intent.category.LAUNCHER"/>





"GameDisplay" android:screenOrientation="landscape" />

"Option" />

"ScoreBoard" />

"GameRules" />





Quadro 4 – AndroidManifest.xml

No Manifest descrito no quadro acima, dentro do nó raiz é necessário utilizar o atributo package, pois este define o caminho onde a classe R se localiza. Em geral a maioria das propriedades que se dizem respeito ao às configurações do aplicativo iniciam-se com o prefixo “android:”.

Dentro do nó raiz, o primeiro nó define a versão alvo do aplicativo. O valor 10 dentro desses parâmetros se refere à versão 2.3.3 do Android.

O segundo nó detalha as informações necessárias para a aplicação em si, onde o primeiro parâmetro android:icon se refere ao caminho do ícone que será exibido no dispositivo. O parâmetro android:debuggable com valor true permite que o desenvolvedor possa utilizar o modo debug da ferramenta no aplicativo. O parâmetro android:label define o título do aplicativo que o usuário verá no dispositivo e na barra de título caso esta esteja disponível. O valor Theme.NoTitleBar.Fullscreen do ultimo parâmetro define que em todos os momentos dessa aplicação não haverá nem a barra de título do aplicativo nem a barra de status do sistema.

Dentro do segundo nó estão contidos os nodos que definem as atividades (telas) que compõem a aplicação. Cada atividade deve conter o nome da classe estendida de Activity que será utilizada na aplicação, caso contrário, ao instanciar esta classe, será disparado um erro de atividade não encontrada.

O nó Home possui um sub-nó onde é definido que esta atividade inicia a aplicação.

No nó GameDisplay, a propriedade android:screenOrientation, força que esta atividade seja somente exibida em modo paisagem. Contudo, pode ser definido também para somente modo retrato (portrait) e por padrão o sistema adapta os elementos da tela em relação a orientação do dispositivo.

      1. res.layout


A pasta layout contém as estruturas das atividades que são utilizadas no projeto, podendo cada XML utilizar tanto Views pré-definidas pelo ambiente, como botões, campos de texto e rótulo, como mapear novas Views personalizadas que serão criadas pelo desenvolvedor.

Ao definir o layout de uma atividade, todas as Views inseridas dentro do XML devem conter os atributos android:layout_height e android:layout_width que podem receber os valores wrap_content, match_parent e fill_parent ou valores numéricos fixos nos seguintes formatos de medidas: px (pixels), dp (pixels independentes de densidade), sp (pixels escalados, baseados no tamanho preferencial de fonte), in (polegadas) e mm (milímetros) (ANDROID DEVELOPERS, 2011). O valor fill_parent a partir da versão 8 da API do Android foi depreciado em favor do valor match_parent e ambos tem a função de dimensionar a View de forma a preencher todo o espaço ocupado pela View que a contém, ou preencher toda a tela caso esta seja a View raiz. No Quadro 5 é possível visualizar o layout da tela de regras da atividade GameRules descrito no arquivo gamerules.xml.



"1.0" encoding="utf-8"?>

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@drawable/bghome">

android:padding="15px"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:fillViewport="true">



android:padding="10px"

android:layout_width="match_parent"

android:layout_height="wrap_content">

android:id="@+id/PokerRules"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="@string/poker_rules" />




1   2   3   4   5   6   7   8   9   ...   25


©aneste.org 2017
enviar mensagem

    Página principal