PM - PARTE 1

21
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

description

pm

Transcript of PM - PARTE 1

Page 1: PM - PARTE 1

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

Page 2: PM - PARTE 1
Page 3: PM - PARTE 1

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"

Page 4: PM - PARTE 1

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:

Page 5: PM - PARTE 1
Page 6: PM - PARTE 1

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

Page 7: PM - PARTE 1

<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"

Page 8: PM - PARTE 1

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:

Page 9: PM - PARTE 1

<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"

Page 10: PM - PARTE 1

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:

Page 11: PM - PARTE 1

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

Page 12: PM - PARTE 1

<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"

Page 13: PM - PARTE 1

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:

Page 14: PM - PARTE 1

Criar o pacote com.calculoarea.controller em src:

Page 15: PM - PARTE 1

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;

Page 16: PM - PARTE 1

}

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();

}

Page 17: PM - PARTE 1

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) {

Page 18: PM - PARTE 1

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;

}

}

Page 19: PM - PARTE 1

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);

Page 20: PM - PARTE 1

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();

Page 21: PM - PARTE 1

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.