Anda di halaman 1dari 10

Contedo

1 Introduo
1.1 O que o GRIDS Stub? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Acerca deste manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2
2
2

2 Funcionalidades
2.1 Page 1 - Frmulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Page 2 - Interpolador de Tabelas . . . . . . . . . . . . . . . . . . . . . . . . . .

3
3
6

Introduo

1.1

O que o GRIDS Stub?

O GRIDS Stub um template pr-definido de aplicao para dispositivos Android que


pode ser trabalhado pelo utilizador, por forma a que este consiga criar aplicaes nicas e
personalizadas. Este template pretende facilitar a criao de novas aplicaes e reduzir o seu
tempo de implementao.
O template j contm algumas pginas nas quais encontram-se implementadas as seguintes
funes:
.: Clculo de acordo com uma equao pr-definida
.: Interpolao de valores de tabelas
O utilizador apenas tem que ir ao excerto de cdigo relacionado com a funo e alterar
para os valores que lhe interessam. Para alm disto, pode personalizar os textos e o aspecto
da interface grfica, sendo que aps isto ter a sua prpria aplicao. Para utilizar do Stub
necessrio ter instalada a mais recente verso do Android Studio e o Java Development Kit.

1.2

Acerca deste manual

Este manual suporta a utilizao do Stub, pelo que encontra-se organizado por funes
implementadas no Stub. Para alm disto tambm explica como se pode personalizar o aspecto
do Stub. Em cada captulo encontram-se excertos do cdigo relevante para a implementao
da funo e a explicao de como esse cdigo pode ser alterado pelo utilizador.
Caso tenha alguma sugesto ou encontre algum erro neste documento ou na prpria aplicao, envie-nos essa informao para o nosso e-mail, gridsappsteam@gmail.com.

2
2.1

Funcionalidades
Page 1 - Frmulas

O que ?
A primeira funcionalidade implementada no Stub uma calculadora que pode ser personalizada pelo utilizador para resolver at 4 diferentes equaes. Para que as expresses que a
calculadora capaz de resolver no fossem limitadas pelo nmero de variveis, as mesmas, so
introduzidas numa caixa de texto separadas por vrgulas. O algoritmo implementado consegue
reconhecer a quantidade de variveis introduzidas na caixa de texto e armazena-as num vector
coluna que pode ser utilizado no cdigo.
No exemplo seguinte a expresso que se pretende calcular e1 +log10 (5). Os seus argumentos
de entrada, a e b, devem ser introduzidos na caixa de texto separados por vrgulas e na ordem
em que aparecem na equao. Para uma melhor compreenso do funcionamento consulte o
exemplo da figura 1.

Figura 1: Aspecto grfico da calculadora.

Como pode ser personalizado?


Com o Stub aberto no Android Studio deve localizar o ficheiro ActivityFormulas.JAVA.
Este ficheiro contm todos os mtodos e funes que asseguram o correcto funcionamento da
calculadora. Para personalizar as equaes que a sua aplicao pode resolver deve comear por
localizar o mtodo compute, que cujo inicio de cdigo dever assemelhar-se ao excerto presente
abaixo.
Um ciclo if permite ao cdigo utilizar a equao correspondente que foi seleccionada no
menu. Na linha 24 do excerto abaixo inicia-se o ciclo if para a primeira opo do menu. A
condio deste ciclo (spinnerSelection == 0) verifica se a opo seleccionada no menu foi a
primeira. Para alm deste if, existem outros trs else if que verificam se a opo seleccionada
corresponde segunda, terceira ou quarta do menu, respectivamente.
As equaes devem ser configuradas dentro de cada um dos ciclos if e else if referidos
anteriormente. No caso da equao seleccionada ser a primeira (spinnerSelection == 0), a
equao deve ser configurada na varivel expression que se encontra na linha 40 do excerto
abaixo. Como j foi referido anteriormente, as variveis de entrada devero ser introduzidas na
caixa de texto, separadas por vrgulas. O algoritmo implementado l estas variveis e armazenaas num vector coluna, inputValues[]. Assim o utilizador deve utilizar esta varivel quando
est a configurar a sua equao, para que a calculadora utilize as variveis introduzidas na caixa
de texto.


10


p u b l i c void compute ( View view ) {
//Hiding the Keyboard
hideKeyboard ( view ) ;
//Getting the EditText and TextView objects
EditText input = ( EditText ) findViewById ( R . id . input ) ;
TextView results = ( TextView ) findViewById ( R . id . results ) ;
LinearLayout resultsLayout = ( LinearLayout ) findViewById ( R . id .
results_layout ) ;
Spinner formulas = ( Spinner ) findViewById ( R . id . spinner ) ;
i n t spinnerSelection = formulas . g e t S e l e c t e d I t e m P o s i t i o n () ;
/
If Compute button is pressed and theres no input, show a
toast warning
Else, continue the computation
/
i f ( input . length () == 0) {

15

//Toast Warning
String toast1 = getResources () . getString ( R . string . toast1 ) ;
Toast . makeText ( g e t A p p l i c a t i o n C o n t e x t () , toast1 , Toast .
LENGTH_LONG ) . show () ;
20

} else {
//Getting the comma separated values to an array, splitting
them
String [] str = input . getText () . toString () . split ( " ," ) ;
i f ( spinnerSelection == 0) {

25

i f ( str . length != 2) {

30

//Toast Warning
String toast2 = getResources () . getString ( R . string .
toast2 ) ;
Toast . makeText ( g e t A p p l i c a t i o n C o n t e x t () , toast2 ,
Toast . LENGTH_LONG ) . show () ;

} else {
//Creating an array of double values
double [] inputValues = new double [ str . length ];
//Converting each value in the input array to double
f o r ( i n t i = 0; i < str . length ; i ++) {

35

inputValues [ i ] = Double . parseDouble ( str [ i ]) ;


}
//Computing the desired formula
double expression = Math . exp ( inputValues [0]) + Math .
log10 ( inputValues [1]) ;
//Presenting the results, rounded to 2 decimal
places
results . setText ( " " + Math . round ( expression * 1000) /
1000.0) ;
//Showing the results layout
resultsLayout . setVisibility ( View . VISIBLE ) ;

40

45

}
} e l s e i f ( spinnerSelection == 1) {
.... continues ....

Listing 1: Excerto do mtodo compute.


Na configurao de certas equaes, poder existir a necessidade de utilizar funes matemticas como a exponencial ou a raiz quadrada. No JAVA estas funes esto contidas num
pacote adicional chamado Math. O cdigo implementado j incorporou este pacote pelo que
cabe apenas ao utilizador seleccionar e utilizar as funes que necessitar para a programar as
suas equaes. A lista completa de funes do pacote Math pode ser encontrada na documentao do JAVA.
Exemplo
Este exemplo refere-se ao excerto anterior, em que se pretende que a primeira equao
seja ea + log10 (b). Assim as variveis que sero introduzidas na caixa de texto sero a,b.
No cdigo JAVA a ficar armazenada na primeira posio do vector coluna inputValues[0]
e b na segunda posio, inputValues[1]. A equao deve ser introduzida na varivel expression, pelo que esta ser igual ao seguinte: expression = Math.exp(inputValues[0])
+Math.log10(inputValues[1]);.

2.2

Page 2 - Interpolador de Tabelas

O que ?
A segunda funcionalidade do Stub um interpolador de tabelas at 3 colunas. Este interpolador permite ao utilizador obter os valores de duas colunas a partir de um valor conhecido.
O utilizador selecciona a coluna sobre a qual conhece um dado valor e depois na caixa de texto
introduz esse valor. Quando clicar no boto o algoritmo interpola e devolve os valores das
outras duas colunas.

Figura 2: Aspecto grfico do interpolador.

Como pode ser personalizado?


Nesta verso do Stub, apenas possvel introduzir tabelas no mximo, com 3 colunas. Esta
funcionalidade muito fcil de configurar, pelo que o utilizador necessita apenas de introduzir
as colunas da sua tabela. Porm chama-se ateno para o facto destas colunas deverem ter
todas o mesmo nmero de linhas e de estarem obrigatoriamente ordenadas de forma ascendente.
Caso o utilizador no garanta as duas condies anteriores, poder encontrar problemas no
funcionamento da aplicao.
O excerto abaixo foi retirado do ficheiro ActivityInterpolations.JAVA e ilustra parte das
instrues implementadas no interpolador de tabelas. Para configurar a sua tabela deve localizar o mtodo (public void go(View view)). As colunas da tabela devem ser introduzidas
separadamente, cada uma num array do tipo double, como se pode ver nas linhas 10, 12 e 14
do excerto. Para alm disto possvel tambm personalizar os textos que aparecem no menu
de seleco. Para configurar os textos do menu de seleco da coluna, o utilizador deve alterar
as linhas 16, 17 e 18 do excerto, para cada opo, respectivamente.


@Override
protected void onCreate ( Bundle s av ed In st an ce Sta te ) {
super . onCreate ( s avedI ns ta nc eS ta te ) ;
setContentView ( R . layout . interpolations ) ;

//Editing the color of the ActionBar (not the best way but it
works)
ActionBar actionBar = g e t Su p p or t A ct i o n Ba r () ;
actionBar . s e t B a c k g r o u n d D r a w a b l e (new ColorDrawable ( Color .
parseColor ( " #005473 " ) ) ) ;
actionBar . s e t D i s p l a y S h o w T i t l e E n a b l e d ( f a l s e ) ; // required to
force redraw, without, gray color
actionBar . s e t D i s p l a y S h o w T i t l e E n a b l e d ( true ) ;

10

//declarar um spinner e acrescentarlhe os itens


Spinner list1 = ( Spinner ) findViewById ( R . id . list1 ) ;
List < String > list = new ArrayList < String >() ;
list . add ( " 1 " ) ;
list . add ( " 2 " ) ;
list . add ( " 3 " ) ;
ArrayAdapter < String > dataAdapter = new ArrayAdapter < String >
( t h i s , android . R . layout . simple_spinner_item , list ) ;

15

20

... continues ...


p u b l i c void go ( View view ) {
25

//Hiding the Keyboard


hideKeyboard ( view ) ;
double [] coluna1 = {1 , 2.3 , 3 , 4 , 5 , 6 , 7 , 8};
30

double [] coluna2 = {2 , 3 , 4 , 42 , 35 , 53 , 74 , 64};


double [] coluna3 = {3 , 5.9 , 7 , 2 , 535 , 766 , 32466 , 75699};
double [][] combo = { coluna1 , coluna2 , coluna3 };

35

40

EditText txt_input = ( EditText ) findViewById ( R . id . txt_input ) ;


TextView txt_output = ( TextView ) findViewById ( R . id . txt_output ) ;
LinearLayout resultsLayout = ( LinearLayout ) findViewById ( R . id .
results_layout ) ;
Spinner opcao = ( Spinner ) findViewById ( R . id . list1 ) ;
... continues ...

Listing 2: Excerto do mtodo de interpolao.


Exemplo
Neste exemplo pretende-se configurar a seguinte tabela:
Tabela 1: Exemplo de tabela
Temperatura Entalpia Entropia
200
200.05
1.30
250
251.50
1.48
300
302.86
1.76
7

A introduo dos textos do menu de opo deve ser feita nas linhas 16, 17 e 18 do excerto
anterior, pelo que neste caso deveriam ficar:



(.....)
//declarar um spinner e acrescentarlhe os itens
Spinner list1 = ( Spinner ) findViewById ( R . id . list1 ) ;
List < String > list = new ArrayList < String >() ;
list . add ( " Temperatura " ) ;
list . add ( " Entalpia " ) ;
list . add ( " Entropia " ) ;
ArrayAdapter < String > dataAdapter = new ArrayAdapter < String >
( t h i s , android . R . layout . simple_spinner_item , list ) ;

10

... continues ...


p u b l i c void go ( View view ) {
//Hiding the Keyboard
hideKeyboard ( view ) ;

15

double [] coluna1 = {200 , 250 , 300};


double [] coluna2 = {200.05 ,251.50 ,1.30};

20

double [] coluna3 = {300 ,302.86 ,1.76};




... continues ...

Listing 3: Excerto alterado para o exemplo.

Anda mungkin juga menyukai