PM - PARTE 1

Preview:

DESCRIPTION

pm

Citation preview

Trabalhando com mais de um Activity

Em um aplicativo móvel geralmente trabalhamos com mais de uma janela. Para que isso seja

possível, deve ser usadas as classes Intent e Bundle. A seguir será demonstrado como passar

valores de um Activity a outro.

Criar projeto no ADT: prjCalculoArea

O activity_main.xml deverá semelhante ao apesentado a seguir:

1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2. xmlns:tools="http://schemas.android.com/tools" 3. android:layout_width="match_parent" 4. android:layout_height="match_parent" 5. android:gravity="top" 6. android:paddingBottom="@dimen/activity_vertical_margin" 7. android:paddingLeft="@dimen/activity_horizontal_margin" 8. android:paddingRight="@dimen/activity_horizontal_margin" 9. android:paddingTop="@dimen/activity_vertical_margin" 10. tools:context=".MainActivity" >

11.

12. <LinearLayout

13. android:layout_width="wrap_content"

14. android:layout_height="wrap_content"

15. android:layout_alignParentBottom="true"

16. android:layout_alignParentLeft="true"

17. android:layout_alignParentRight="true"

18. android:layout_alignParentTop="true"

19. android:gravity="center_vertical"

20. android:orientation="vertical" >

21.

22. <Button

23. android:id="@+id/btnRetangulo"

24. android:layout_width="match_parent"

25. android:layout_height="wrap_content"

26. android:text="@string/txtBtnRetangulo" />

27.

28. <Button

29. android:id="@+id/btnTriangulo"

30. android:layout_width="match_parent"

31. android:layout_height="wrap_content"

32. android:text="@string/txtBtnTriangulo" />

33.

34. <Button

35. android:id="@+id/btnCirculo"

36. android:layout_width="match_parent"

37. android:layout_height="wrap_content"

38. android:text="@string/txtBtnCirculo" />

39.

40. </LinearLayout>

41.

42. </RelativeLayout>

Agora deverá ser criado o Activity que irá realizar o cálculo da área do Retângulo:

O activity_frm_calculo_retangulo.xml deverá semelhante ao apesentado a seguir:

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

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context=".FrmCalculoAreaRetangulo" >

<LinearLayout

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_alignParentLeft="true"

android:layout_alignParentRight="true"

android:layout_alignParentTop="true"

android:gravity="center_vertical"

android:orientation="vertical" >

<EditText

android:id="@+id/txtARLargura"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:ems="10"

android:hint="@string/txtLargura"

android:inputType="numberDecimal" >

<requestFocus />

</EditText>

<EditText

android:id="@+id/txtARComprimento"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:ems="10"

android:hint="@string/txtAltura"

android:inputType="numberDecimal" />

<Button

android:id="@+id/btnARCalcular"

android:layout_width="match_parent"

android:layout_height="wrap_content"

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

</LinearLayout>

</RelativeLayout>

Agora deverá ser criado o Activity que irá realizar o cálculo da área do Triângulo:

O activity_frm_calculo_triangulo.xml deverá semelhante ao apesentado a seguir:

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

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context=".FrmCalculoAreaTriangulo" >

<LinearLayout

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_alignParentLeft="true"

android:layout_alignParentRight="true"

android:layout_alignParentTop="true"

android:gravity="center_vertical"

android:orientation="vertical" >

<EditText

android:id="@+id/txtATBase"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:ems="10"

android:hint="@string/txtBase"

android:inputType="numberDecimal" >

<requestFocus />

</EditText>

<EditText

android:id="@+id/txtATAltura"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:ems="10"

android:hint="@string/txtAltura"

android:inputType="numberDecimal" />

<Button

android:id="@+id/btnATCalcular"

android:layout_width="match_parent"

android:layout_height="wrap_content"

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

</LinearLayout>

</RelativeLayout>

Finalmente deverá ser criado o Activity que irá realizar o cálculo da área do Círculo:

O activity_frm_calculo_circulo.xml deverá semelhante ao apesentado a seguir:

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

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context=".FrmCalculoAreaCirculo" >

<LinearLayout

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_alignParentLeft="true"

android:layout_alignParentRight="true"

android:layout_alignParentTop="true"

android:gravity="center_vertical"

android:orientation="vertical" >

<EditText

android:id="@+id/txtACRaio"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:ems="10"

android:hint="@string/txtRaio"

android:inputType="numberDecimal" >

<requestFocus />

</EditText>

<Button

android:id="@+id/btnACCalcular"

android:layout_width="match_parent"

android:layout_height="wrap_content"

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

</LinearLayout>

</RelativeLayout>

Renomear o pacote principal para com.calculoarea.view:

Criar o pacote com.calculoarea.model em src:

Criar o pacote com.calculoarea.controller em src:

Criar a classe MedidasBean em com.calculoarea.controller:

package com.calculoarea.controller;

public class MedidasBean {

private double largura;

private double altura;

private double base;

private double raio;

public double getAltura() {

return altura;

}

public double getBase() {

return base;

}

public double getLargura() {

return largura;

}

public double getRaio() {

return raio;

}

public void setAltura(double altura) {

this.altura = altura;

}

public void setBase(double base) {

this.base = base;

}

public void setLargura(double largura) {

this.largura = largura;

}

public void setRaio(double raio) {

this.raio = raio;

}

}

Criar a classe CalculoArea em com.calculoarea.model:

package com.calculoarea.model;

import com.calculoarea.controller.MedidasBean;

public class CalculoArea {

public double areaRetangulo(MedidasBean mb) {

return mb.getLargura()*mb.getAltura();

}

public double areaTriangulo(MedidasBean mb) {

return (mb.getBase()*mb.getAltura())/2;

}

public double areaCirculo(MedidasBean mb) {

return (Math.PI*Math.pow(mb.getRaio(), 2));

}

}

Criar a classe CalculoAreaController em com.calculoarea.controller:

package com.calculoarea.controller;

import com.calculoarea.model.CalculoArea;

public class CalculoAreaController {

public double areaRetangulo(MedidasBean mb) {

return new CalculoArea().areaRetangulo(mb);

}

public double areaTriangulo(MedidasBean mb) {

return new CalculoArea().areaTriangulo(mb);

}

public double areaCirculo(MedidasBean mb) {

return new CalculoArea().areaCirculo(mb);

}

}

A classe com.calculadora.view.MainActivity, iremos deixar como a seguir:

public class MainActivity extends Activity {

Button btnRetangulo, btnTriangulo, btnCirculo;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

btnRetangulo = (Button) findViewById(R.id.btnRetangulo);

btnTriangulo = (Button) findViewById(R.id.btnTriangulo);

btnCirculo = (Button) findViewById(R.id.btnCirculo);

btnRetangulo.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent(v.getContext(),

FrmCalculoAreaRetangulo.class);

startActivity(intent);

}

});

btnTriangulo.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent(v.getContext(),

FrmCalculoAreaTriangulo.class);

startActivity(intent);

}

});

btnCirculo.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent(v.getContext(),

FrmCalculoAreaCirculo.class);

startActivity(intent);

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

A classe de cálculo da área do retângulo com.calculadora.view.

FrmCalculoAreaRetangulo, iremos deixar como a seguir:

public class FrmCalculoAreaRetangulo extends Activity {

EditText txtLargura, txtAltura;

Button btnCalcula;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_frm_calculo_retangulo);

txtLargura = (EditText) findViewById(R.id.txtARLargura);

txtAltura = (EditText) findViewById(R.id.txtARAltura);

btnCalcula = (Button) findViewById(R.id.btnARCalcula);

btnCalcula.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

MedidasBean mb = new MedidasBean();

CalculoAreaController cac = new CalculoAreaController();

mb.setLargura(Double.parseDouble(String.valueOf(txtLargura.getText())));

mb.setAltura(Double.parseDouble(String.valueOf(txtAltura.getText())));

alerta(String.valueOf(cac.areaRetangulo(mb)));

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.frm_calculo_area_retangulo, menu);

return true;

}

public void alerta(String resultado) {

AlertDialog alertDialog = new AlertDialog.Builder(this)

.setTitle("Área do retângulo")

.setMessage(resultado)

.setCancelable(true)

.setIcon(R.drawable.ic_launcher)

.create();

alertDialog.show();

}

}

A classe de cálculo da área do triângulo com.calculadora.view.

FrmCalculoAreaTriangulo, iremos deixar como a seguir:

public class FrmCalculoAreaTriangulo extends Activity {

EditText txtBase, txtAltura;

Button btnCalcula;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_frm_calculo_triangulo);

txtBase = (EditText) findViewById(R.id.txtATBase);

txtAltura = (EditText) findViewById(R.id.txtATAltura);

btnCalcula = (Button) findViewById(R.id.btnATCalcula);

btnCalcula.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

MedidasBean mb = new MedidasBean();

CalculoAreaController cac = new CalculoAreaController();

mb.setBase(Double.parseDouble(String.valueOf(txtBase.getText())));

mb.setAltura(Double.parseDouble(String.valueOf(txtAltura.getText())));

alerta(String.valueOf(cac.areaTriangulo(mb)));

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.frm_calculo_area_triangulo, menu);

return true;

}

public void alerta(String resultado) {

AlertDialog alertDialog = new AlertDialog.Builder(this)

.setTitle("Área do triângulo")

.setMessage(resultado)

.setCancelable(true)

.setIcon(R.drawable.ic_launcher)

.create();

alertDialog.show();

}

}

A classe de cálculo da área do círculo com.calculadora.view. FrmCalculoAreaCirculo,

iremos deixar como a seguir:

public class FrmCalculoAreaCirculo extends Activity {

EditText txtRaio;

Button btnCalcula;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_frm_calculo_circulo);

txtRaio = (EditText) findViewById(R.id.txtACRaio);

btnCalcula = (Button) findViewById(R.id.btnACCalcula);

btnCalcula.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

MedidasBean mb = new MedidasBean();

CalculoAreaController cac = new CalculoAreaController();

mb.setRaio(Double.parseDouble(String.valueOf(txtRaio.getText())));

alerta(String.valueOf(cac.areaCirculo(mb)));

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.frm_calculo_area_circulo, menu);

return true;

}

public void alerta(String resultado) {

AlertDialog alertDialog = new AlertDialog.Builder(this)

.setTitle("Área do círculo")

.setMessage(resultado)

.setCancelable(true)

.setIcon(R.drawable.ic_launcher)

.create();

alertDialog.show();

}

}

Rodar o projeto na máquina virtual.

Recommended