PM - PARTE 1
description
Transcript of 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
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.