Primera aplicación Android
02-01-2012
Raul Vicente
Clasificado como:
Android ,
DESARROLLO DE SOFTWARE ,
Eclipse ,
JAVA ,
Hacía tiempo que no escribo nada y para empezar sólo quería dejar mis impresiones sobre la SDK de android y de paso dejar el código de la pequeña aplicación que he hecho con ayuda de un tutorial.
En general tanto la instalación de la SDK como del Pluggin para Eclipse me han resultado fáciles, no obstante, el desarrollo no tanto. Me explico el tutorial viene plagado de “consejos” para novatos que yo como buen informático me he saltado a la torera. Una de las buenas recomentadaciones es que cada poco hay que hacer un Clean del proyecto y un rebuild porque sino no hace bien los imports y te vuelves loco, así que no hagáis lo que he hecho yo y haced caso al tutorial.
Por lo demás, el emulador de Android me ha parecido bastante lento (ya avisaba el tutorial) así que paciencia. En cuanto a cómo está dividida una aplicación Android yo sólo he utilizado los xml y las Activities o interfaces gráficas y por ahora no me ha parecido muy complicado.
Os detallo las clases más importantes:
El formulario principal: ConvertActivity
Es un formulario muy parecido a los de Swing así que se hace bastante natural entenderlo
public class ConvertActivity extends Activity {
/** Called when the activity is first created. */
private EditText text;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text = (EditText) findViewById(R.id.editText1);
}
// This method is called at button click because we assigned the name to the
// “On Click property” of the button
public void myClickHandler(View view) {
switch (view.getId()) {
case R.id.button1:
RadioButton celsiusButton = (RadioButton) findViewById(R.id.radio0);
RadioButton fahrenheitButton = (RadioButton) findViewById(R.id.radio1);
if (text.getText().length() == 0) {
Toast.makeText(this, “Please enter a valid number”,
Toast.LENGTH_LONG).show();
return;
}
float inputValue = Float.parseFloat(text.getText().toString());
if (celsiusButton.isChecked()) {
text.setText(String
.valueOf(convertFahrenheitToCelsius(inputValue)));
celsiusButton.setChecked(false);
fahrenheitButton.setChecked(true);
} else {
text.setText(String
.valueOf(convertCelsiusToFahrenheit(inputValue)));
fahrenheitButton.setChecked(false);
celsiusButton.setChecked(true);
}
break;
}
}
// Converts to celsius
private float convertFahrenheitToCelsius(float fahrenheit) {
return ((fahrenheit – 32) * 5 / 9);
}
// Converts to fahrenheit
private float convertCelsiusToFahrenheit(float celsius) {
return ((celsius * 9) / 5) + 32;
}
}
La clase R.java (Contiene las referencias a los componentes gráficos y textos globales de la aplicación)
public final class R {
public static final class attr {
}
public static final class color {
public static final int myColor=0x7f050000;
}
public static final class drawable {
public static final int ic_launcher=0x7f020000;
}
public static final class id {
public static final int button1=0x7f060004;
public static final int editText1=0x7f060000;
public static final int radio0=0x7f060002;
public static final int radio1=0x7f060003;
public static final int radioGroup1=0x7f060001;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int calc=0x7f040005;
public static final int celsius=0x7f040003;
public static final int fahrenheit=0x7f040004;
public static final int hello=0x7f040000;
public static final int myClickHandler=0x7f040002;
}
}
El fichero string.xml (Contiene los textos de la aplicación)
<resources>
<string name=”hello”>Hello World, Convert!</string>
<string name=”app_name”>Temperature Converter</string>
<color name=”myColor”>#3399CC</color>
<string name=”myClickHandler”>myClickHandler</string>
<string name=”celsius”>to Celsius</string>
<string name=”fahrenheit”>to Fahrenheit</string>
<string name=”calc”>Calculate</string>
</resources>
main.xml (Fichero sobre el que se diseña la aplicación es aquí donde arrastraremos los componentes gráficos y es el entorno el que actualiza la clase R.java)
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical” android:layout_width=”fill_parent”
android:layout_height=”fill_parent” android:background=”@color/myColor”>
<EditText android:layout_height=”wrap_content” android:id=”@+id/editText1″
android:layout_width=”match_parent” android:inputType=”numberDecimal|numberSigned”></EditText>
<RadioGroup android:layout_height=”wrap_content” android:id=”@+id/radioGroup1″
android:layout_width=”match_parent”>
<RadioButton android:layout_width=”wrap_content”
android:id=”@+id/radio0″ android:layout_height=”wrap_content”
android:text=”@string/celsius” android:checked=”true”></RadioButton>
<RadioButton android:layout_width=”wrap_content”
android:id=”@+id/radio1″ android:layout_height=”wrap_content”
android:text=”@string/fahrenheit”></RadioButton>
</RadioGroup>
<Button android:id=”@+id/button1″ android:layout_width=”wrap_content”
android:layout_height=”wrap_content” android:text=”@string/calc”
android:onClick=”myClickHandler”></Button>
</LinearLayout>
La verdad es que la aplicación es muy sencilla y no he trasteado mucho, me imagino que cuando intente hacer varias pantallas o una aplicación multidioma tendré más problemas. Sólo quería dejar mis experiencias. Si tenéis algún tutorial mejor que este o me podéis recomendar un buen libro lo agradecería.
Os dejo la URL del tutorial:
http://www.vogella.de/articles/Android/article.html#first