Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki

Eclipse: Añadir ventanas a aplicación Android con Eclipse y Java, trabajar con Activity
Android


Tutorial donde explicamos cómo añadir nuevas ventanas (activity o actividad y layout) a una aplicación Android. Mostramos cómo mostrar la ventana o activity creada. Usaremos como IDE de desarrollo Eclipse.



 

Activity, Actividad, ventana Android

Un Activity es similar a las ventanas de una aplicación de escritorio Windows o Linux, salvando las diferencias, no es exactamente una ventana pues puede no interactuar con el usuario, pero así es más sencillo de comprender. Casi todas las activity de una aplicación Android servirán para interacturar con el usaurio, por lo que el activity se ocupa de crear una ventana para que el desarrollador pueda colocar su interfaz de usuario con setContentView. Por lo general las activitys se suelen presentar al usuario como ventanas de Windows a pantalla completa, aunque también se pueden usar de otras maneras: como ventanas flotantes (a través de windowIsFloating) o incrustadas en el interior de otra activity (ActivityGroup).

Hay dos métodos para casi todas las subclases de una activity:

  • onCreate (Bundle): es donde se inicia la actividad. Lo más importante, aquí lo normal es que llame a setContentView (int) con un recurso de diseño de la definición de la interfaz de usuario, y el uso de findViewById (int) para recuperar los widgets de la interfaz de usuario que el que tiene que interactuar con programación.
  • onPause (): método que se ejecutará antes de que la activity se cierre. En este método deben guardarse, por ejemplo, posibles cambios realizados por el usuario en la aplicación (si es su cometido).

Para usar Context.startActivity (), todas las clases activity deben tener la correspondiente declaración <activity> en el paquete AndroidManifest.xml.

Activity, Actividad, ventana Android

Código de una activity vacía con menú (fichero .java del activity):

package com.example.ajpdsoftlinterna;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;


public class ActivityConfiguracion extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_configuracion);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_configuracion, menu);
        return true;
    }
}

Fichero .xml del layout asociado al activity:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<CheckBox
android:id="@+id/opSonido"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="23dp"
android:text="@string/text_configuracion_sonido" />

<CheckBox
android:id="@+id/opEncenderAbrir"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/opSonido"
android:text="@string/text_configuracion_encender" />

</RelativeLayout>

 

Código XML de fichero AndroidManifest.xml tras añadir una nueva activity:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.ajpdsoftlinterna"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="5"
android:targetSdkVersion="15" />

<uses-permission android:name="android.permission.CAMERA" />

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".AjpdSoftLinterna"
android:label="@string/title_activity_ajpd_soft_linterna" >
<intent-fi>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-fi>
</acti>
<activity
android:name=".ActivityConfiguracion"
android:label="@string/title_activity_activity_configuracion" >
<intent-fi>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-fi>
</acti>
</applica>

</manifest>

 

Requisitos para desarrollar aplicación para dispositivos Android con Eclipse

En el siguiente enlace mostramos un tutorial donde explicamos paso a paso cómo instalar Eclipse y cómo desarrollar una aplicación para dispositivos con Android:

 

Añadir un activity a una aplicación Android con Eclipse

Normalmente una aplicación tendrá un ativity principal con sus correspondientes ficheros .java y .xml. A continuación explicamos cómo añadir un nuevo activity (ventana) a nuestra aplicación Android. Abriremos nuestro proyecto Android desde Eclipse, pulsaremos con el botón derecho del ratón sobre nuestro proyecto y seleccionaremos "New" - "Other":

Añadir un activity a una aplicación Android con Eclipse

En el asistente para crear un Android activity desplegaremos "Android" y seleccionaremos "Android Activity", pulsaremos "Next":

Añadir un activity a una aplicación Android con Eclipse

Seleccionaremos la plantilla para la nueva activity, seleccionaremos "BlankActivity" (MasterDetalFlow requiere un nivel de API igual o superior a 11). Pulsaremos "Next":

Añadir un activity a una aplicación Android con Eclipse

A continuación introduciremos los siguientes datos para nuestra activity:

  • Project: nuestro proyecto, donde se creará la activity.
  • Activity Name: nombre de la nueva actividad. En el ejemplo crearemos una ventana donde mostraremos la configuración de la aplicación. Llamaremos a esta activity "ActivityConfiguracion".
  • Layout Name: indicaremos aquí el nombre del fichero xml del layout que se asociará a la activity, por ejemplo "activity_ajpdsoft_configuracion".
  • Navigation Type: podremos elegir aquí el tipo de navegación para la nueva actividad, las opciones: Tabs, Tabs + Swipe, Swipe Views + Title Strip y Dropdown. Estos tipos de navegación requerirán API Level iguales o superiores a la 14.
  • Title: nombre que verá el usuario de la aplicación Android en la parte superior, por ejemplo "Configuración".

Tras introducir los datos pulsaremos "Next":

Añadir un activity a una aplicación Android con Eclipse

El asistente nos indicará los ficheros que añadirá y los existentes que modificará en nuestro proyecto Eclipse, en concreto modificará el fichero "AndroidManifest.xml", el "strings.xml", creará los ficheros "activity_ajpdsoft_configuracion.xml" y "ActivityConfiguracion.java":

Añadir un activity a una aplicación Android con Eclipse

El asistente de creación de nueva activity creará y modificará todos los ficheros necesarios en nuestro proyecto:

Añadir un activity a una aplicación Android con Eclipse

En concreto creará los siguientes ficheros:

  • ActivityConfiguracion.java: será el fichero que contendrá todo el código Java del activity, en este fichero podremos añadir todo el código de la nueva ventana de la aplicación Android. Este fichero se creará en la carpeta "src" de nuestro proyecto.

El código java que se añade por defecto al crear el activity:

package com.example.ajpdsoftlinterna;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class ActivityConfiguracion extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ajpdsoft_configuracion);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_ajpdsoft_configuracion, menu);
        return true;
    }
}

  • activity_ajpdsoft_configuracion.xml: fichero correspondiente al layout, donde añadiremos todos los componentes visuales que se mostrarán al usuario en el activity de nuestra aplicación Android. Este fichero se creará en la carpeta "res" - "layout".

Un ejemplo del contenido de este fichero (con dos CheckBox):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<CheckBox
android:id="@+id/opSonido"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="23dp"
android:text="@string/text_configuracion_sonido" />

<CheckBox
android:id="@+id/opEncenderAbrir"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/opSonido"
android:text="@string/text_configuracion_encender" />

</RelativeLayout>

 

  • activity_ajpdsoft_configuracion.xml: el asistente creará un menú por defecto, por lo tanto añadirá también este fichero en la carpeta "res" - "menu".

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_settings"
android:title="@string/menu_settings"
android:orderInCategory="100" />
</>

El asistente habrá modificado también el fichero de manifiesto de nuestra aplicación Android, el fichero AndroidManifest.xml, añadiendo lo que indicamos en negrita:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.ajpdsoftlinterna"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="5"
android:targetSdkVersion="15" />

<uses-permission android:name="android.permission.CAMERA" />

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".AjpdSoftLinterna"
android:label="@string/title_activity_ajpd_soft_linterna" >
<intent-fi>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-fi>
</acti>
<activity
android:name=".ActivityConfiguracion"
android:label="@string/title_activity_activity_configuracion" >
<intent-fi>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-fi>
</acti>

</applica>

</manifest>

Habrá modificado también el fichero strings.xml ubicado en la carpeta "res" - "values":

<string name="title_activity_activity_configuracion">Configuración</st>

 

Mostrar activity creado desde activity principal

A continuación indicamos cómo mostrar un activity desde otro activity. En nuestro ejemplo, abriremos el activity "Configuración" (ActivityConfiguracion) creado anteriormente desde el activity principal. En primier lugar necesitaremos añadir el import:

import android.app.Activity;

En el procedimiento donde queramos mostrar el activity introduciremos el siguiente código Java:

  Intent i = new Intent(AjpdSoftLinterna.this, ActivityConfiguracion.class);
  startActivity(i); 

Donde "AjpdSoftLinterna" será el nombre de la clase actual del activity principal (desde el que estamos llamando al secundario) y "ActivityConfiguracion" será el nombre de la clase del activity que queremos mostrar, este nombre puede consultarse en el fichero .java del activity (ActivityConfiguracion.java":

public class ActivityConfiguracion extends Activity {

 

La aplicación Android en funcionamiento, en el activity principal, pulsando la tecla de Menú y seleccionando "Configuración":

Mostrar activity creado desde activity principal

Nos mostrará el nuevo activity creado con sus correspondientes controles:

Mostrar activity creado desde activity principal

 

 

Publicar aplicación Android en Google Play

En el siguiente tutorial explicamos cómo publicar una aplicación para dispotivos Android en Google Play (antes Google Android Market):

 

Artículos relacionados

 

Créditos

Artículo realizado íntegramente por Alonsojpd miembro fundador del proyecto Proyecto AjpdSoft.

Artículo en inglés.


Anuncios


Enviado el Lunes, 30 julio a las 01:02:29 por ajpdsoft
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A