[DESARROLLO] Android.

Viendo las ganas que tenemos y que nos hemos juntado un pequeño grupo he creado este hilo para discutir, coordinarnos, aportar...

Imagen

Nombre:
EOLDROID ???

Miembros:
-manugarrote
-maeseoki
-d4rkb1t
-dark-kei
-bitman

Logo:
Habrá que currarse algo para ponerlos en las aplicaciones, una posible web... ESTÁ EN CAMINO

Proyectos:
-


Documentación:
-Creador de GUIs online.
-Compilación de tutoriales
-Algunos "manuales" en castellano.
-Solución temporal para el problema con Netbeans y el SDK android: http://www.bibigeek.com/2009/04/30/cuid ... e-android/
Nombre: eoldroid XD
Miembros: manugarrote, maeseoki, d4rkb1t, dark-kei, bitman
Logo: yo habia pensado 2 andoides en forma de la palabra EOL, d4rkb1t es bueno con diseño, se lo diré.

Manugarrote, añade esto:
-Aquí tenéis el link del proyecto: http://code.google.com/p/eoldroid/
-Necesito vuestro gmail para agregaros (enviadmelo los que queráis uniros por MP)
-Tuto para sincronizar Netbeans con googlecode (subversion), con Eclipse es similar:http://code.google.com/p/ping-pong-manager/wiki/UsoDelSVN

Solución temporal para el problema con Netbeans y el SDK android: http://www.bibigeek.com/2009/04/30/cuidado-problemas-con-el-sdk-15_r1-de-android/

EDIT: Bueno, e subido un "hola mundo" comentado al googlecode, es poco, pero siempre se empieza por ahí.
EDIT2: Añade a Xaconi a los miembros :) y a Indioo
Cambia ese vallamos por 'vayamos' por el amor de dios.
Bueno ordenando ideas.
Android tiene 4 tipos de clases propias destinadas cada una a un fin especifico, esta son:

Actividades (activities)
Este tipo de clases de actividad no tienen nada asi que no os confundais... Son clases que heredan de Activity y se ocupan de las vistas de la aplicación.
Cada una de estas clases de ocupa de mostrar una y solo una vista (por claridad y simplicidad).
Para añadir coponentes en estas clases usaremos el this.setContentView(componente);

Servicios (services)
Pues este si es similar a los servicios de toda la vida.... estas clases corren en segundo plano por tiempo indefinido.
Por supuesto hereda (extends) de la clases Service

Broadcast receivers
Este tipo de clase se ocupa de capturar cualquier notificación de actividad que ocurra en el terminal y queramos capturar, como por ejemplo la descarga de una aplicación.
Cuando capture la notificación deseada, puede por ejemplo iniciar una Actividad. Hereda de BroadcastReceiver

Proveedores de contenido (content providers)
No tiene mucho misterio. Este tipo de clase hereda de ContentProvider y se ocupa de conseguir datos/contenido de otras aplicaciones si estas lo permiten, por ejemplo los contactos de la agenda.

Ale ya tenemos mas cositas :p
Buenas a todos.

Tengo el movil desde hace un mesecillo o así, estoy terminando la Ingeniería Técnica de Infromática y me interesa (además de aprender Java xD) comenzar a programar algunas cosillas para Android, que puede que saque mi PFC de alguna aplicación medio util que se me ocurra :)

Acabo de descubrir el hilo, así que imagino que me pasaré a menudo por aquí, a ver si encontramos cosas en español para facilitar el trabajo.

Yo por ahora, voy a instalarme el SDK y luego según he leido, necesito el Eclipse si o si? Por otro lado, no se si preparar el entorno de trabajo en Linux o Windows... Que pensais?
Kitinz escribió:Buenas a todos.

Tengo el movil desde hace un mesecillo o así, estoy terminando la Ingeniería Técnica de Infromática y me interesa (además de aprender Java xD) comenzar a programar algunas cosillas para Android, que puede que saque mi PFC de alguna aplicación medio util que se me ocurra :)

Acabo de descubrir el hilo, así que imagino que me pasaré a menudo por aquí, a ver si encontramos cosas en español para facilitar el trabajo.

Yo por ahora, voy a instalarme el SDK y luego según he leido, necesito el Eclipse si o si? Por otro lado, no se si preparar el entorno de trabajo en Linux o Windows... Que pensais?


Google proporciona un plugin de eclispe para proyectos con android que te simplifica la vida, además de incluir un editor de widgets. El entorno es indiferente, aunque supongo que lo mas recomendable sería usar linux. Yo lo tengo en mac sin problema.
Bueno, pues e empezado a hacer algunas pruebas (con el poco tiempo del que dispongo) en base al hola mundo aqi dejo una con los listener, probadla :p
El Activity:
package org.eoldroid;

import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
import android.widget.TextView;

public class ActivityMain extends Activity implements OnClickListener , OnTouchListener{
   private TextView tv;
   private TextView ejex;
   private TextView ejey;
   private ImageView img;
   private int i = 0;
   private int t = 0;

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

        tv = (TextView) findViewById(R.id.uno);
        tv.setText("Clica o arrastra!");
        tv.setOnClickListener(this);
        tv.setOnTouchListener(this);
       
        ejex = (TextView) findViewById(R.id.x);
        ejey = (TextView) findViewById(R.id.y);
        ejex.setOnClickListener(this);
        ejey.setOnClickListener(this);
       
        img = (ImageView) findViewById(R.id.droid);
        img.setOnTouchListener(this);
    }
   public void onClick(View v) {
      tv.setText("Has clicado: "+i+++" veces!");
   }
   public boolean onTouch(View v, MotionEvent event) {
      tv.setText("Has arrastrado: "+t+++" pixeles!");
      tv.setTextSize(event.getY());
      ejex.setText("X: "+event.getX());
      ejey.setText("Y: "+event.getY());
      return false;
   }
}

el XML:
<?xml version="1.0" encoding="utf-8"?>


<RelativeLayout android:id="@+id/RelativeLayout01"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:orientation="vertical"
            >
            
<TextView android:text=""
        android:id="@+id/uno"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
</TextView>
<TextView android:layout_width="wrap_content"
        android:text=""
        android:layout_height="wrap_content"
        android:layout_below="@+id/uno"
        android:id="@+id/x">
</TextView>
<TextView android:layout_width="wrap_content"
         android:text=""
         android:layout_height="wrap_content"
         android:layout_below="@+id/x"
         android:id="@+id/y">
</TextView>
<ImageView android:layout_width="wrap_content"
         android:layout_below="@+id/y"
         android:id="@+id/droid"
         android:layout_height="wrap_content"
         android:src="@drawable/android">
</ImageView>

</RelativeLayout>

el R:
package org.eoldroid;

public final class R {
    public static final class attr {
    }
    public static final class drawable {
        public static final int android=0x7f020000;
        public static final int icon=0x7f020001;
    }
    public static final class id {
        public static final int RelativeLayout01=0x7f050000;
        public static final int droid=0x7f050004;
        public static final int uno=0x7f050001;
        public static final int x=0x7f050002;
        public static final int y=0x7f050003;
    }
    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 hello=0x7f040000;
    }
}

Se que no es mucho, pero ya es algo ;)
Ahora averiguare como sincronizar el eclipse con subversion...
Muchas gracias por el ejemplo!!! Yo llevo ya unos dían pegándome con Android jeje.

2 cosas:
-He visto que no has utilizado el archivo strings.xml que referencia las cadenas de texto (aunque tampoco tienes muchas). En todos los códigos que he visto en internet lo hacen así. Yo he probado a meterlas dentro del .xml de la interfaz y no he tenido ningún problema.

-He probado a cargar el código en el DroidDraw y sólo me aparece el elemento ImageView, no hay ni rastro de los TextView ein?
Yap, el strings.xml no lo e usado por vagueria, tambien, esq para tan poco... asi que mas claro a mi parecer.
El droiddraw..... solo te muestra eso porq es lo unico que hay.... eso 2 texteview no tienen nada si te fijas.. se me olvido borrarlos xDD

Hoy estoy yo pengandome con Android jeje.
Lo que e visto esq da mucho problema el tema de sacar los listeners a otra clase porq tienes que llenarlo todo de setters y getters... y es un verdadero coñazo aun con refactor... pero weno...

Proximamente...tuto :p
Eso eso un tuto porque los listeners (y compañía) y yo no nos llevamos bien jeje
manugarrote escribió:Eso eso un tuto porque los listeners (y compañía) y yo no nos llevamos bien jeje

Reamente no tienen nuecha complicación... a no ser que quieras hacer algo complicado :p
Todo se reduce a:
1.Crear clase oreja (implemens **Listener)
2.objeto.setOn***Listener
3.Diferenciar de que objeto viene la acción (if(view.getId()==R.id.miObjeto){}else{})

Vamos que es facil, pero bueno, para hoy quiero tener terminado el codigo y comentarlo, luego lo pondré y comentamos :)
Bno... a ver que os parece!
Activity:
package org.eoldroid;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

//Implemento del listener para los clicks
public class MainActivity extends Activity implements OnClickListener {
   Button number0, number1, number2, number3, number4, number5,
      number6, number7, number8, number9;
   Button sum, res, mul, div, coma, igual, borra;
   EditText text;
   float tempSum, tempRes, tempMul, tempDiv;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //Recupero la caja de text para poder modificarla
        text = (EditText) findViewById(R.id.texto);
       
        //Recupero los botones y les añado el escuchador de clicks
        number0 = (Button) findViewById(R.id.number0);
        number0.setOnClickListener(this);
        number1 = (Button) findViewById(R.id.number1);
        number1.setOnClickListener(this);
        number2 = (Button) findViewById(R.id.number2);
        number2.setOnClickListener(this);
        number3 = (Button) findViewById(R.id.number3);
        number3.setOnClickListener(this);
        number4 = (Button) findViewById(R.id.number4);
        number4.setOnClickListener(this);
        number5 = (Button) findViewById(R.id.number5);
        number5.setOnClickListener(this);
        number6 = (Button) findViewById(R.id.number6);
        number6.setOnClickListener(this);
        number7 = (Button) findViewById(R.id.number7);
        number7.setOnClickListener(this);
        number8 = (Button) findViewById(R.id.number8);
        number8.setOnClickListener(this);
        number9 = (Button) findViewById(R.id.number9);
        number9.setOnClickListener(this);
       
        sum = (Button) findViewById(R.id.suma);
        sum.setOnClickListener(this);
        res = (Button) findViewById(R.id.resta);
        res.setOnClickListener(this);
        mul = (Button) findViewById(R.id.mult);
        mul.setOnClickListener(this);
        div = (Button) findViewById(R.id.div);
        div.setOnClickListener(this);
        coma = (Button) findViewById(R.id.coma);
        coma.setOnClickListener(this);
        igual = (Button) findViewById(R.id.igual);
        igual.setOnClickListener(this);
        borra = (Button) findViewById(R.id.borra);
        borra.setOnClickListener(this);
       
        //Notificación en globo
        Toast.makeText(this, R.string.autor,
                Toast.LENGTH_LONG).show();
    }

    //Este metodo sobreescribe al existente en OnClickListener
   @Override
   public void onClick(View v) {
      String num = "";
      //Relleno la variable num en caso de que el campo no esté vacio
      if(!text.getText().toString().equals(""))
         num = text.getText().toString();
      //Aqui diferencio donde se ha clicado y actuo según el resultado
      switch (v.getId()) {
         case R.id.number0:
            text.setText(num+"0");
            break;
         case R.id.number1:
            text.setText(num+"1");
            break;
         case R.id.number2:
            text.setText(num+"2");
            break;
         case R.id.number3:
            text.setText(num+"3");
            break;
         case R.id.number4:
            text.setText(num+"4");
            break;
         case R.id.number5:
            text.setText(num+"5");
            break;
         case R.id.number6:
            text.setText(num+"6");
            break;
         case R.id.number7:
            text.setText(num+"7");
            break;
         case R.id.number8:
            text.setText(num+"8");
            break;
         case R.id.number9:
            text.setText(num+"9");
            break;
         case R.id.suma:
            if(!text.getText().toString().equals(""))
               tempSum = Float.parseFloat(text.getText().toString());
            text.setText("");
            break;
         case R.id.resta:
            if(!text.getText().toString().equals(""))
               tempRes = Float.parseFloat(text.getText().toString());
            text.setText("");
            break;
         case R.id.mult:
            if(!text.getText().toString().equals(""))
               tempMul = Float.parseFloat(text.getText().toString());
            text.setText("");
            break;
         case R.id.div:
            if(!text.getText().toString().equals(""))
               tempDiv = Float.parseFloat(text.getText().toString());
            text.setText("");
            break;
         case R.id.coma:
            if(!text.getText().toString().equals(""))
               text.setText(text.getText().toString()+".");
            break;
         case R.id.igual:
            float fin = 0;
            float ultimoNum = Float.parseFloat(num);
            if(tempSum!=0.0){
               fin = tempSum+ultimoNum;
               tempRes = tempMul = tempDiv = tempSum;
            }else if(tempRes!=0.0){
               fin = tempRes-ultimoNum;
               tempMul = tempDiv = tempSum = tempRes;
            }else if(tempMul!=0.0){
               fin = tempMul*ultimoNum;
               tempDiv = tempSum = tempRes = tempMul;
            }else if(tempDiv!=0.0){
               fin = tempDiv/ultimoNum;
               tempSum = tempRes = tempMul = tempDiv;
            }
            text.setText(""+fin);
            break;
         case R.id.borra:
            text.setText("");
            tempSum = tempRes = tempMul = tempDiv = 0.0f;
            break;
         default:
            break;
      }
   }
   
}

R:
/* AUTO-GENERATED FILE.  DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found.  It
* should not be modified by hand.
*/

package org.eoldroid;

public final class R {
    public static final class attr {
    }
    public static final class drawable {
        public static final int icon=0x7f020000;
    }
    public static final class id {
        public static final int borra=0x7f05001f;
        public static final int coma=0x7f05001c;
        public static final int cos=0x7f050007;
        public static final int div=0x7f05000e;
        public static final int igual=0x7f05001b;
        public static final int mult=0x7f050013;
        public static final int number0=0x7f05001a;
        public static final int number1=0x7f050015;
        public static final int number2=0x7f050016;
        public static final int number3=0x7f050017;
        public static final int number4=0x7f050010;
        public static final int number5=0x7f050011;
        public static final int number6=0x7f050012;
        public static final int number7=0x7f05000b;
        public static final int number8=0x7f05000c;
        public static final int number9=0x7f05000d;
        public static final int raiz=0x7f050009;
        public static final int resta=0x7f050018;
        public static final int row0=0x7f050002;
        public static final int row1=0x7f050005;
        public static final int row2=0x7f05000a;
        public static final int row3=0x7f05000f;
        public static final int row4=0x7f050014;
        public static final int row5=0x7f050019;
        public static final int row6=0x7f05001e;
        public static final int sin=0x7f050006;
        public static final int suma=0x7f05001d;
        public static final int table1=0x7f050001;
        public static final int table2=0x7f050004;
        public static final int tan=0x7f050008;
        public static final int texto=0x7f050003;
        public static final int widget37=0x7f050000;
    }
    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 autor=0x7f040002;
        public static final int hello=0x7f040000;
    }
}

Strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, MainActivity!</string>
    <string name="app_name">Calcularoid</string>
<string name="autor">By firezenk @ eoldroid</string>
</resources>

main.xml:
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget37"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<TableLayout
android:id="@+id/table1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_x="0px"
android:layout_y="0px"
>
<TableRow
android:id="@+id/row0"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/texto"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text=""
android:width="200px"
android:textSize="24sp"
android:inputType="numberDecimal">
</EditText>
</TableRow>
</TableLayout>
<TableLayout
android:id="@+id/table2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_x="0px"
android:layout_y="50px"
>
<TableRow
android:id="@+id/row1"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_width="wrap_content">
<Button
android:id="@+id/sin"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="sn"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/cos"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="cs"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/tan"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="tn"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/raiz"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="√"
android:textSize="24sp"
>
</Button>
</TableRow>
<TableRow
android:id="@+id/row2"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_width="wrap_content">
<Button
android:id="@+id/number7"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="7"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/number8"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="8"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/number9"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="9"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/div"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="/"
android:textSize="24sp"
>
</Button>
</TableRow>
<TableRow
android:id="@+id/row3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:id="@+id/number4"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="4"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/number5"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="5"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/number6"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="6"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/mult"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="*"
android:textSize="24sp"
>
</Button>
</TableRow>
<TableRow
android:id="@+id/row4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:id="@+id/number1"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="1"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/number2"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="2"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/number3"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="3"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/resta"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="-"
android:textSize="24sp"
>
</Button>
</TableRow>
<TableRow
android:id="@+id/row5"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:id="@+id/number0"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="0"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/igual"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="="
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/coma"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text=","
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/suma"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="+"
android:textSize="24sp"
>
</Button>
</TableRow>
<TableRow
android:id="@+id/row6"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:id="@+id/borra"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="ce"
android:textSize="24sp"
>
</Button>
</TableRow>
</TableLayout>
</AbsoluteLayout>


El activity esta comentado, pero se admiten sugerencias :)
Es una calculadora basica.... la funcionalidad aun peta un poco cuando se hace mas de una operación seguida, pero bueno, con mas tiempo pues se hará.

EDIT: Bueno, pues lo e subido compilado aqui:http://www.megaupload.com/?d=QU1QZ8R7 si entrais desde el navegador de android se os instalará sola :D
EDIT2: Video de la primera versión, versión 2 con mejora grafica considerable en camino :p
http://www.youtube.com/watch?v=9MxX10tC6Ks

EDIT3: Listo el video y la descarga de la segunda version beta de "Calculadroid" video:http://www.youtube.com/watch?v=53iWObXTMBU La descarga en breve :p

EDIT4: Tercera beta lista! http://www.youtube.com/watch?v=Ro3R7DbAjSU ahora con menus, popups y función panoramica! :p
dark-kei escribió:Bno... a ver que os parece!
Activity:
package org.eoldroid;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

//Implemento del listener para los clicks
public class MainActivity extends Activity implements OnClickListener {
   Button number0, number1, number2, number3, number4, number5,
      number6, number7, number8, number9;
   Button sum, res, mul, div, coma, igual, borra;
   EditText text;
   float tempSum, tempRes, tempMul, tempDiv;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //Recupero la caja de text para poder modificarla
        text = (EditText) findViewById(R.id.texto);
       
        //Recupero los botones y les añado el escuchador de clicks
        number0 = (Button) findViewById(R.id.number0);
        number0.setOnClickListener(this);
        number1 = (Button) findViewById(R.id.number1);
        number1.setOnClickListener(this);
        number2 = (Button) findViewById(R.id.number2);
        number2.setOnClickListener(this);
        number3 = (Button) findViewById(R.id.number3);
        number3.setOnClickListener(this);
        number4 = (Button) findViewById(R.id.number4);
        number4.setOnClickListener(this);
        number5 = (Button) findViewById(R.id.number5);
        number5.setOnClickListener(this);
        number6 = (Button) findViewById(R.id.number6);
        number6.setOnClickListener(this);
        number7 = (Button) findViewById(R.id.number7);
        number7.setOnClickListener(this);
        number8 = (Button) findViewById(R.id.number8);
        number8.setOnClickListener(this);
        number9 = (Button) findViewById(R.id.number9);
        number9.setOnClickListener(this);
       
        sum = (Button) findViewById(R.id.suma);
        sum.setOnClickListener(this);
        res = (Button) findViewById(R.id.resta);
        res.setOnClickListener(this);
        mul = (Button) findViewById(R.id.mult);
        mul.setOnClickListener(this);
        div = (Button) findViewById(R.id.div);
        div.setOnClickListener(this);
        coma = (Button) findViewById(R.id.coma);
        coma.setOnClickListener(this);
        igual = (Button) findViewById(R.id.igual);
        igual.setOnClickListener(this);
        borra = (Button) findViewById(R.id.borra);
        borra.setOnClickListener(this);
       
        //Notificación en globo
        Toast.makeText(this, R.string.autor,
                Toast.LENGTH_LONG).show();
    }

    //Este metodo sobreescribe al existente en OnClickListener
   @Override
   public void onClick(View v) {
      String num = "";
      //Relleno la variable num en caso de que el campo no esté vacio
      if(!text.getText().toString().equals(""))
         num = text.getText().toString();
      //Aqui diferencio donde se ha clicado y actuo según el resultado
      switch (v.getId()) {
         case R.id.number0:
            text.setText(num+"0");
            break;
         case R.id.number1:
            text.setText(num+"1");
            break;
         case R.id.number2:
            text.setText(num+"2");
            break;
         case R.id.number3:
            text.setText(num+"3");
            break;
         case R.id.number4:
            text.setText(num+"4");
            break;
         case R.id.number5:
            text.setText(num+"5");
            break;
         case R.id.number6:
            text.setText(num+"6");
            break;
         case R.id.number7:
            text.setText(num+"7");
            break;
         case R.id.number8:
            text.setText(num+"8");
            break;
         case R.id.number9:
            text.setText(num+"9");
            break;
         case R.id.suma:
            if(!text.getText().toString().equals(""))
               tempSum = Float.parseFloat(text.getText().toString());
            text.setText("");
            break;
         case R.id.resta:
            if(!text.getText().toString().equals(""))
               tempRes = Float.parseFloat(text.getText().toString());
            text.setText("");
            break;
         case R.id.mult:
            if(!text.getText().toString().equals(""))
               tempMul = Float.parseFloat(text.getText().toString());
            text.setText("");
            break;
         case R.id.div:
            if(!text.getText().toString().equals(""))
               tempDiv = Float.parseFloat(text.getText().toString());
            text.setText("");
            break;
         case R.id.coma:
            if(!text.getText().toString().equals(""))
               text.setText(text.getText().toString()+".");
            break;
         case R.id.igual:
            float fin = 0;
            float ultimoNum = Float.parseFloat(num);
            if(tempSum!=0.0){
               fin = tempSum+ultimoNum;
               tempRes = tempMul = tempDiv = tempSum;
            }else if(tempRes!=0.0){
               fin = tempRes-ultimoNum;
               tempMul = tempDiv = tempSum = tempRes;
            }else if(tempMul!=0.0){
               fin = tempMul*ultimoNum;
               tempDiv = tempSum = tempRes = tempMul;
            }else if(tempDiv!=0.0){
               fin = tempDiv/ultimoNum;
               tempSum = tempRes = tempMul = tempDiv;
            }
            text.setText(""+fin);
            break;
         case R.id.borra:
            text.setText("");
            tempSum = tempRes = tempMul = tempDiv = 0.0f;
            break;
         default:
            break;
      }
   }
   
}

R:
/* AUTO-GENERATED FILE.  DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found.  It
* should not be modified by hand.
*/

package org.eoldroid;

public final class R {
    public static final class attr {
    }
    public static final class drawable {
        public static final int icon=0x7f020000;
    }
    public static final class id {
        public static final int borra=0x7f05001f;
        public static final int coma=0x7f05001c;
        public static final int cos=0x7f050007;
        public static final int div=0x7f05000e;
        public static final int igual=0x7f05001b;
        public static final int mult=0x7f050013;
        public static final int number0=0x7f05001a;
        public static final int number1=0x7f050015;
        public static final int number2=0x7f050016;
        public static final int number3=0x7f050017;
        public static final int number4=0x7f050010;
        public static final int number5=0x7f050011;
        public static final int number6=0x7f050012;
        public static final int number7=0x7f05000b;
        public static final int number8=0x7f05000c;
        public static final int number9=0x7f05000d;
        public static final int raiz=0x7f050009;
        public static final int resta=0x7f050018;
        public static final int row0=0x7f050002;
        public static final int row1=0x7f050005;
        public static final int row2=0x7f05000a;
        public static final int row3=0x7f05000f;
        public static final int row4=0x7f050014;
        public static final int row5=0x7f050019;
        public static final int row6=0x7f05001e;
        public static final int sin=0x7f050006;
        public static final int suma=0x7f05001d;
        public static final int table1=0x7f050001;
        public static final int table2=0x7f050004;
        public static final int tan=0x7f050008;
        public static final int texto=0x7f050003;
        public static final int widget37=0x7f050000;
    }
    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 autor=0x7f040002;
        public static final int hello=0x7f040000;
    }
}

Strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, MainActivity!</string>
    <string name="app_name">Calcularoid</string>
<string name="autor">By firezenk @ eoldroid</string>
</resources>

main.xml:
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget37"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<TableLayout
android:id="@+id/table1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_x="0px"
android:layout_y="0px"
>
<TableRow
android:id="@+id/row0"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/texto"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text=""
android:width="200px"
android:textSize="24sp"
android:inputType="numberDecimal">
</EditText>
</TableRow>
</TableLayout>
<TableLayout
android:id="@+id/table2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_x="0px"
android:layout_y="50px"
>
<TableRow
android:id="@+id/row1"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_width="wrap_content">
<Button
android:id="@+id/sin"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="sn"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/cos"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="cs"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/tan"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="tn"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/raiz"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="√"
android:textSize="24sp"
>
</Button>
</TableRow>
<TableRow
android:id="@+id/row2"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_width="wrap_content">
<Button
android:id="@+id/number7"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="7"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/number8"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="8"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/number9"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="9"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/div"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="/"
android:textSize="24sp"
>
</Button>
</TableRow>
<TableRow
android:id="@+id/row3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:id="@+id/number4"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="4"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/number5"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="5"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/number6"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="6"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/mult"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="*"
android:textSize="24sp"
>
</Button>
</TableRow>
<TableRow
android:id="@+id/row4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:id="@+id/number1"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="1"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/number2"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="2"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/number3"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="3"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/resta"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="-"
android:textSize="24sp"
>
</Button>
</TableRow>
<TableRow
android:id="@+id/row5"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:id="@+id/number0"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="0"
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/igual"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="="
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/coma"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text=","
android:textSize="24sp"
>
</Button>
<Button
android:id="@+id/suma"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="+"
android:textSize="24sp"
>
</Button>
</TableRow>
<TableRow
android:id="@+id/row6"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:id="@+id/borra"
android:layout_width="50px"
android:layout_height="wrap_content"
android:text="ce"
android:textSize="24sp"
>
</Button>
</TableRow>
</TableLayout>
</AbsoluteLayout>


El activity esta comentado, pero se admiten sugerencias :)
Es una calculadora basica.... la funcionalidad aun peta un poco cuando se hace mas de una operación seguida, pero bueno, con mas tiempo pues se hará.

EDIT: Bueno, pues lo e subido compilado aqui:http://www.megaupload.com/?d=QU1QZ8R7 si entrais desde el navegador de android se os instalará sola :D
EDIT2: Video de la primera versión, versión 2 con mejora grafica considerable en camino :p
http://www.youtube.com/watch?v=9MxX10tC6Ks

EDIT3: Listo el video y la descarga de la segunda version beta de "Calculadroid" video:http://www.youtube.com/watch?v=53iWObXTMBU La descarga en breve :p

EDIT4: Tercera beta lista! http://www.youtube.com/watch?v=Ro3R7DbAjSU ahora con menus, popups y función panoramica! :p

Descarga! http://www.megaupload.com/?d=PR11VRN4 De paso e aprendido a firmala xD
dark-kei, no entiendo que funcion les das a los botones. Me has resuelto la duda de como guardar el texto, pero despues de la definicion de cada boton, cuando le defines su funcion (setOnClickListener) porque le ponen como atributo el this es algo que no entiendo, ya que si defines todos igual, como te acabaran haciendo cosas diferentes??? Igual es una chorrada pero no lo entiendo...

EDIT: vale ya pillo lo que haces, me habia liado yo...me he estado currando yo una calculadora tambien (mentira, me he pegado la santa copiada de la tuya) pero no me queda claro el tema del main.xml , mas concretamente lo de TextRow...que es eso exactamente. He seguido el procedimiento del .java y he creado los botones que hacian falta cuando lo requerian, pero eso para que sirve exactamente????
¿Para reclutarme con quién tengo que ponerme en contacto? XD

Soy ingeniero informático, trabajo como desarrollador Java y llevo interesado en Android desde que salió a la luz. Por eso me encantaría formar parte de un grupo como éste, donde podamos experimentar y desarrollar por nuestra cuenta algunos proyectos interesantes.

He estrenado recientemente portátil nuevo, por lo que aprovecharé para instalar el entorno de desarrollo y empezar a trastear cuanto antes.

Contad conmigo para lo que sea. [oki]
Xaconi, el TextRow es lo primero que sale... la caja de texto donde escribo [oki]
Sobre el this es como no ponerlo, se refiere a la clase actual, pero yo prefiero ponerlo por el tema del predictor cuando apretas el punto [.] y asi ahorras tecleo XD bueno, y... el codigo queda mas claro y legible [oki]

Indioo: cuantos mas mejor! Descargate el Eclipse, instalate el plugin de Android y empieza a experimentar [toctoc]
Enviame un MP con tu cuenta de GMail.

Android, depende mucho de los ficheros de la carpeta "gen" y de los XML, asiq os recomiendo que os los mireis con profundidad para programar con el mejor estilo posible y entendernos bien entre nosotros ;)

Esta tarde subire alguna cosilla, com veis en los videos ya e puesto menus y cambio el xml del layout cuando giro el movil :)

Bueno... esta casi podria ser comercial XD
Os presento, MetroVLC: http://www.megaupload.com/?d=ZRG69MHW

MainActivity.java, imaginad como funciona ;)
package org.eoldroid.metrovlc.main;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.view.*;
import android.view.GestureDetector.OnGestureListener;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.TextView;
import android.content.*;
import android.graphics.*;
import android.content.res.*;

public class MainActivity extends Activity implements OnGestureListener
{
   private final int DIALOG_ABOUT = 0;
   private final int DIALOG_EXIT  = 1;
    private int scrollX = 0;
    private int scrollY = 0;
     
    MyView main; 
    Bitmap bmp;
    Bitmap adapt;
    Resources res;
    Paint paint;
    GestureDetector gestureScanner;
     
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
       
        gestureScanner = new GestureDetector(this);
        paint = new Paint();
       
        res = getResources();
        bmp = BitmapFactory.decodeResource(res, R.drawable.pic);
        adapt = Bitmap.createBitmap(bmp);
             
        main = new MyView(this);       
        setContentView(main,new ViewGroup.LayoutParams(800, 600));
    }
   
    public boolean onCreateOptionsMenu(Menu menu) {
       menu.add(0, R.drawable.user, 0, "About").setIcon(R.drawable.user);
       menu.add(0, R.drawable.exit, 1, "Exit").setIcon(R.drawable.exit);
       return true;
   }

   /* Handles item selections */
   public boolean onOptionsItemSelected(MenuItem item) {
       switch (item.getItemId()) {
       case R.drawable.user:
           showDialog(DIALOG_ABOUT);
           return true;
       case R.drawable.exit:
           showDialog(DIALOG_EXIT);
           return true;
       }
       return false;
   }

   protected Dialog onCreateDialog(int id) {
      Dialog dialog = null;
       switch(id) {
       case DIALOG_ABOUT:
           dialog = new Dialog(this);

           dialog.setContentView(R.xml.custom_dilog);
           dialog.setTitle("Metro VLC v.0.1");

           TextView text = (TextView) dialog.findViewById(R.id.text);
           text.setText("Creado por:\nfirezenk @ gmail\nEolDroid Team");
           ImageButton bok = (ImageButton) dialog.findViewById(R.id.image);
           bok.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
               dismissDialog(DIALOG_ABOUT);
            }
           });
           return dialog;
       case DIALOG_EXIT:
          AlertDialog.Builder builder = new AlertDialog.Builder(this);
          builder.setMessage("¿Seguro que deseas salir?")
                 .setCancelable(false)
                 .setPositiveButton("Si", new DialogInterface.OnClickListener() {
                     public void onClick(DialogInterface dialog, int id) {
                          MainActivity.this.finish();
                     }
                 })
                 .setNegativeButton("No", new DialogInterface.OnClickListener() {
                     public void onClick(DialogInterface dialog, int id) {
                          dialog.cancel();
                     }
                 });
          return builder.create();
       }
       return dialog;
   }
   
    @Override
    public boolean onTouchEvent(MotionEvent me)
    {
     return gestureScanner.onTouchEvent(me);
    }

    class MyView extends View
    {
     public MyView(Context context)
     {
          super(context);
     }
     
     @Override
     protected void onDraw(Canvas canvas)
     {
          canvas.drawBitmap(adapt, 0, 0, paint);
     }
     
     public void handleScroll(float distX, float distY)
     {
          // X-Axis ////////////////////////////////
         
          if(distX > 6.0)
          {
               if(scrollX < 460)
               {
                    scrollX += 15;
               }
          }
          else if(distX < -6.0)
          {
               if(scrollX >= 15)
               {
                    scrollX -= 15;
               }
          }
          ////////////////////////////////////////////
               
          // Y-AXIS //////////////////////////////////
          if(distY > 6.0)
          {
               if(scrollY < 100)
               {
                    scrollY += 15;
               }
          }
          else if(distY < -6.0)
          {
               if(scrollY >= 15)
               {
                    scrollY -= 15;
               }
          }             
          ////////////////////////////////////////////
         
          if((scrollX <= 480) && (scrollY <= 120))
          {
               adapt = Bitmap.createBitmap(bmp, scrollX, scrollY, 320, 480);             
               invalidate();
          }
     }
    }
   
   public boolean onDown(MotionEvent e) {
      // TODO Auto-generated method stub
      return true;
   }

   public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
         float velocityY) {
      // TODO Auto-generated method stub
      return true;
   }

   public void onLongPress(MotionEvent e) {
      // TODO Auto-generated method stub
      
   }

   public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
         float distanceY) {
      // TODO Auto-generated method stub
      main.handleScroll(distanceX,distanceY);
      return true;
   }

   public void onShowPress(MotionEvent e) {
      // TODO Auto-generated method stub
      
   }

   public boolean onSingleTapUp(MotionEvent e) {
      // TODO Auto-generated method stub
      return true;
   }
}


Bueeeeno... pues yo voy haciendo! XD
Nueva aplicación: "Locate ME!" ,basicamente te localiza en el mapa y te sigue mientras te mueves, incorpora zoom :p
Descarga -> http://www.megaupload.com/?d=8HB7J7NC ,como siempre preparada para instalar desde el navegador de Android. Me molaria que me comentaseis bugs y eso, o mejoras... que esto esta paradísimo [triston]
Bueno, empecemos:

Subversion con Eclipse: http://www.migue.org/diario/2007/08/cmo-usar-subversion-en-eclipse.html

Wiki para proponer ideas: http://code.google.com/p/eoldroid/wiki/IdeasDeProyectos

Veamos... me gustaría que todos los integrantes hiciéramos una ciber-reunión, en msn messenger mismo para empezar a distribuir el trabajo y las ideas. Para el miercoles 22 a las 21:00 que os parecería?

Al final he subido 6 proyectos que tengo empastrados y una wiki nueva: http://code.google.com/p/eoldroid/wiki/ProyectosEnDesarrollo

Un saludo y animo!!!
Despues de estar liado unas semanas vuelvo con Android!!!! Sigo teniendo el problema de los TextRow para hacer una calculadora simple...no se si dejarlo o ponerme con otra cosa (me gustaria algun jueguecillo en plan Ahorcado)...

Aqui dejo el codigo que he hecho a partir de un tutorial de como mover una imagen por pantalla...

R.java
/* AUTO-GENERATED FILE.  DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found.  It
* should not be modified by hand.
*/

package desarrolladores.android.com.tutorial.juego1;

public final class R {
    public static final class attr {
    }
    public static final class drawable {
        public static final int fondo=0x7f020000;
        public static final int icon=0x7f020001;
        public static final int nube=0x7f020002;
    }
    public static final class id {
        public static final int VistaJuego1=0x7f050000;
    }
    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 hello=0x7f040000;
    }
}


Juego.java
package desarrolladores.android.com.tutorial.juego1;

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

public class TutorialJuego1 extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
       
        requestWindowFeature(Window.FEATURE_NO_TITLE);
       
        setContentView(R.layout.main);
    }
}


VistaJuego1.java
package desarrolladores.android.com.tutorial.juego1;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.View;

public class VistaJuego1 extends View {

   // Cuantos píxels nos moveremos a cualquier dirección cuando se pulse cada tecla
   private static int PASO_MOVIMIENTO = 5;
   // Dimensiones de la pantalla del dispositivo
   private int anchoPantalla, altoPantalla;
   // Posición de la imagen que moveremos
   private int posX, posY;
   // Imagen que dibujaremos en la pantalla
   private Drawable nube;
   // Dimensiones de la imagen que dibujaremos
   private int anchoNube, altoNube;
   
   
   
   // Constructor de la clase
   public VistaJuego1(Context context, AttributeSet attrs) {
      super(context, attrs);
      
      // Obtenemos la referencia a la imagen que moveremos en pantalla
        nube = context.getResources().getDrawable(R.drawable.nube);
        anchoNube = nube.getIntrinsicWidth();
        altoNube = nube.getIntrinsicHeight();
       
        // Para asegurarnos que capturaremos las pulsaciones de teclas
        setFocusable(true);
   }
   
   @Override
   protected void onSizeChanged(int w, int h, int oldw, int oldh) {
      super.onSizeChanged(w, h, oldw, oldh);
      
      // Una vez que conocemos nuestro ancho y alto.
       anchoPantalla = w;
       altoPantalla = h;
       posX = (anchoPantalla / 2)-(anchoNube/2);
        posY = (altoPantalla / 2)-(altoNube/2);
   }

   @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        nube.setBounds(posX, posY, posX+anchoNube, posY+altoNube);
        nube.draw(canvas);
        invalidate(posX-PASO_MOVIMIENTO, posY-PASO_MOVIMIENTO, posX+anchoNube+PASO_MOVIMIENTO, posY+altoNube+PASO_MOVIMIENTO);
    }

   @Override
   public boolean onKeyDown(int keyCode, KeyEvent event) {
      // Suponemos que vamos a procesar la pulsación
      boolean procesada = true;
      
      switch(keyCode){
      case KeyEvent.KEYCODE_DPAD_UP:
         posY-=PASO_MOVIMIENTO;
         break;
      case KeyEvent.KEYCODE_DPAD_DOWN:
         posY+=PASO_MOVIMIENTO;
         break;
      case KeyEvent.KEYCODE_DPAD_LEFT:
         posX-=PASO_MOVIMIENTO;
         break;
      case KeyEvent.KEYCODE_DPAD_RIGHT:
         posX+=PASO_MOVIMIENTO;
         break;
      default:
         // Si hemos llegado aquí, significa que no hay pulsación que nos interese
         procesada = false;
         break;
      }
      
      // Si nos salimos de la pantalla, corregimos la posición
      // para que no aparezca fuera.
      if(posY<0)
         posY=0;
      if(posX<0)
         posX=0;
      if(posY>altoPantalla-altoNube)
         posY=altoPantalla-altoNube;
      if(posX>anchoPantalla-anchoNube)
         posX=anchoPantalla-anchoNube;
      
      return procesada;
   }
}


main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <desarrolladores.android.com.tutorial.juego1.VistaJuego1
       android:id="@+id/VistaJuego1"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:background="@drawable/fondo"
          />
</LinearLayout>


El string.xml no lo he usado

Por otro lado, hace falta crear las carpetas drawable-land y drawable-port, meter ahi los dos fondos, y en la carpeta drawable, meter la imagen del objeto.
Conferencias Google IO de este año sobre android
La de debugging y creación de juegos son las únicas que he visto, y no tienen desperdicio...
http://code.google.com/intl/es-ES/event ... tml#mobile

AQuí las del año pasado:
http://sites.google.com/site/io/
Anda xaco, el tuto de la nube! si, ese lo e visto XD
De todas formas no lo e visto muy interesante al menos de momento.
zheo ahora les hechare un vistazo ;)
Por cierto, para los que quieran desarrollar Android con Netbeans, el plugin http://kenai.com/projects/nbandroid/ ya soporta la nueva versión 1.5 del SDK.

El único problema que tiene es que NO lanza el emulador automáticamente al depurar / ejecutar, hay que ejecutarlo a mano y dejarlo funcionando.

Ah, tampoco he conseguido crear un proyecto de android a partir de código ya existente, pero también se soluciona creando un proyecto base, moviendo los ficheros de código y modificando el AndroidManifest.xml y el build.xml

EDIT: Miento, en la última actualización si lanza el emulador
Bueno pues esta tarde tal como prometí e empezado con los mini videotutos...
Tengo 3 y espero poder tenerlos colgados pronto (estan en 720p pa que se vean bien las letras.. y pesan mil)
Asiq paciencia, los ire colgando aqui: http://code.google.com/p/eoldroid/wiki/VideoTutoriales confome los valla teniendo subidos

Ya tengo una nueva aplicación terminada
Tell Me! un programa que lee cualquier cosa que le escribas [Alaa!]
Incluye widget para el acceso rapido a la aplicación :p

EDIT: Ahora lee documentos en formato txt, aunq esta, la versión DEMO solo lee 5 lineas.
Espero subir al bazar la versión 100% funcional al market.
Descarga: http://code.google.com/p/eoldroid/downloads/list

Imagen
dark-kei escribió:Bueno pues esta tarde tal como prometí e empezado con los mini videotutos...
Tengo 3 y espero poder tenerlos colgados pronto (estan en 720p pa que se vean bien las letras.. y pesan mil)
Asiq paciencia, los ire colgando aqui: http://code.google.com/p/eoldroid/wiki/VideoTutoriales confome los valla teniendo subidos


No se os olvide darle a HD y reproducirlos a pantalla completa, no os pase como a mí que no veía nada.

Por lo demás, darle las gracias a Dark-Kei por currarse dichos videotutoriales.

ByEs [buenazo]
A ver si alguien me ayuda. Visto mi poca experiencia en android, he decidido hacer un contador. Sencillo, pulsas un boton, y en una pantalla te aumenta el contador...he intentado varias cosas, pero no consigo que se ejecute, me lanza el tipico error de que no se puede ejecutar.
Aqui el code:

Contador
package android.contador;


import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;


public class Contador extends Activity implements OnClickListener {

   EditText texto=(EditText)findViewById(R.id.texto);

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        Button contador = (Button)findViewById(R.id.cuenta);

        contador.setOnClickListener(this);

    }

       public void onClick (View v){

          String num = "";

          if(!texto.getText().toString().equals("")){

             num = texto.getText().toString();

          }

          switch(v.getId()){

          case R.id.cuenta:

             texto.setText(num + "1");
      
          }

    }

}


main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    />
<Button
   android:id="@+id/cuenta"
   android:layout_width="200px"
   android:layout_height="50px"
   android:text="Contar"
   android:textSize="24sp"
   />
<TableRow
   android:id="@+id/row0"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:orientation="horizontal">
   <EditText
      android:id="@+id/texto"
      android:layout_height="wrap_content"   
      android:layout_width="wrap_content"
      android:text=""
      android:width="200px"
      android:textSize="24sp"
      android:inputType="numberDecimal">
   </EditText>
</TableRow>
</LinearLayout>


Decir que no tengo muy claro como usar tablerow con el edittext...
Supongo que ya os habreis dado cuenta, pero supongo que me tocará a dejar el grupo de proyectos. Os describo mi agenda de los proximos meses:

De aqui al dia 10 de septiembre: estudiar todo lo que no he estudiado durante el verano por tocarme los cojones, para recuperar 4 asignaturas, entre las cuales, la mas dificil de la carrera.
Del 10 de septiembre al dia 23: vacaciones REALES, sin preocupaciones, perdido por ahi, aunque sea con una balsa en mitad del mar.
Del 23 de septiembre hasta verano: por obligación me tocará seguir esta rutina,
* 9-11:30 => Gim
* 11:30 - 13 => Estudiar o hacer practicas de la uni que este año tendré por un tubo
* 13 - 14:30 => Hacer la comida, comer, relajarme media horita y....
* 14:30 - 21 => Uni :(...
* 21 - 23 => tiempo personal

Eso sin contar si al final hago el proyecto este año o que... si lo hago me puedo ir olvidando de dormir 8 horas u.u'...

Lo siento pero me será imposible ayudar T_T...
d4rkb1t escribió:Supongo que ya os habreis dado cuenta, pero supongo que me tocará a dejar el grupo de proyectos. Os describo mi agenda de los proximos meses:

De aqui al dia 10 de septiembre: estudiar todo lo que no he estudiado durante el verano por tocarme los cojones, para recuperar 4 asignaturas, entre las cuales, la mas dificil de la carrera.
Del 10 de septiembre al dia 23: vacaciones REALES, sin preocupaciones, perdido por ahi, aunque sea con una balsa en mitad del mar.
Del 23 de septiembre hasta verano: por obligación me tocará seguir esta rutina,
* 9-11:30 => Gim
* 11:30 - 13 => Estudiar o hacer practicas de la uni que este año tendré por un tubo
* 13 - 14:30 => Hacer la comida, comer, relajarme media horita y....
* 14:30 - 21 => Uni :(...
* 21 - 23 => tiempo personal

Eso sin contar si al final hago el proyecto este año o que... si lo hago me puedo ir olvidando de dormir 8 horas u.u'...

Lo siento pero me será imposible ayudar T_T...


Tranqui d4rkb1t, espero que te vaya bien la uni este año!!!!
Hola gente,

Hace poco propuse en la página del proyecto una idea de aplicación que se integrase con Cineol para ofrecer una lista de cines y películas en cartelera, que mostrase también la puntuación y comentarios de los foros. Anoche dejé caer la idea en el foro de feedback y, aunque se dan cuenta de lo difícil que es, parece que les resulta interesante y ofrecen colaboración.

El hilo es éste: http://www.cineol.net/forum/viewtopic.p ... ead#unread
Hola a todos, estoy aprendiendo a desarrollar con Android y encontre el foro, la verdad es una buena idea el compartir el conocimiento para ayudar, en lo poco que vaya aprendiendo también pondré mi granito de arena ;) saludos a todos [sonrisa]
Bueno pues intriga desvelada!!!
Emergency Alert está en el market [sonrisa]

Aqui enlace del programa:http://serious-guy.blogspot.com/2009/09/emergency-alert-ya-disponible-en-el.html
Sólo me paso para animaros y felicitaros con lo que estáis haciendo con Cineol. Tiene una pinta estupenda [oki]
Nueva app: Esta para los amantes de Bryci, os presento: Bryci's Gallery
Como su propio nombre indica, es una galeria de imagenes de la modelo canadiense preparadas para poder ponerse como fondo de pantalla.
Si, una app chorra, pero esq me hacia ilu XD
Link: http://www.androlib.com/android.application.org-firezenk-brycigallery-qCxn.aspx
QR: Imagen

Respecto a la app de Cineol va a costar algo mas de lo que esperaba, pero bueno, llegará [oki]
Nueva App!
SL's Gallery
Galería de fotos de Shay Laren.

Características:

-Imágenes extra grandes.
-Set wallpaper.

Guardar en SD vendrá en la próxima versión
Imagen
Tanto la app de Bricy como la de Shay Laren estan ahora tambien en el market de MiKandi!!! XD
Chicos, anoche volvi a darle a algo a android ya que e terminado los examens de la uni y le he podido dedicar algo de tiempo.... resultado: http://www.screencast.com/users/FireZenk/folders/Jing/media/a2b71b29-43ca-4974-8a7b-f73edf168e53 XD
Buenas.

¿Alguien desarrolla para Android utilizando las openjdk? Es por saber si da algún tipo de problema.

Gracias!
Pues no se si te dara problemas... Supongo q si eclipse te va bien no debería de darte ninguno. Pero, porque no usas JDK oficial?

Señores, alguno va a la MWC? Lo digo para ir con algunos eoliano. :D
dark-kei escribió:Señores, alguno va a la MWC? Lo digo para ir con algunos eoliano. :D

¿Qué es eso?
zheo escribió:
dark-kei escribió:Señores, alguno va a la MWC? Lo digo para ir con algunos eoliano. :D

¿Qué es eso?

La mobile world congress 2010 q hacen en BCN, es como el e3 de los móviles
Ahh, gracias.
Me queda lejos, desgraciadamente :S
Hola!!
Me gustaría saber como va el tema de aplicaciones en Android. Mi padre quizas se pille un HTC y lleva detras mía mucho tiempo pidiendome que le haga una aplicacion sencillita para gestionar nuestra tienda y tener los pagos controlados.
Por lo que he visto, para esta aplicacion se programa en Java. ¿Me equivoco?
¿Puedo instalar mis propias aplicaciones y probarlas?¿O tengo que esperar a subirlas al marketplace o lo que sea, y que me las aprueben?
¿Hay alguna librería especial para crear GUIs?, ¿o funciona con la de java Swing? (es la que he tocado yo)
Y ya como caso extremo, ¿Bases de Datos en Android? Esto no me importa mucho, porque a las malas tiro de ficheros como sea, y no hay muchos datos que guardar

Un saludo, y gracias :)
Lupi escribió:Por lo que he visto, para esta aplicacion se programa en Java. ¿Me equivoco?


Efectivamente, se programa en Java (Aunque tambien puedes hacerlo en C con el NDK, pero para lo que quieres no es necesario/recomendable)

Lupi escribió:¿Puedo instalar mis propias aplicaciones y probarlas?¿O tengo que esperar a subirlas al marketplace o lo que sea, y que me las aprueben?


Puedes instalar tus apps y las de otros en tu movil, directamente, sin pasar por el Market.

Lupi escribió:¿Hay alguna librería especial para crear GUIs?, ¿o funciona con la de java Swing? (es la que he tocado yo)


No se usa SWING, el propio SDK de Android contiene las clases de los elementos de la UI (View, ListView, Button, y un largo etc.)

Lupi escribió:Y ya como caso extremo, ¿Bases de Datos en Android?


Si, dispones de todo lo necesario para trabajar con SQLite.

Saludos.
Muchisimas gracias por toda la informacion!!!
¿Sabeis de algun sitio con tutoriales basicos basicos para mirar como va el tema?
Gracias de nuevo :D
Si el ingles no es problema, aqui: http://developer.android.com/resources/index.html, encontraras mucha informacion util (incluyendo tutoriales basicos, asi como la documentacion de referencia)

Un saludo.
Yo he seguido los pasos y he compilado un hello world, pero se me lanza el emulador de android y en la pantalla pone ANDROID en lugar de Hello, World! y si pulso las teclas no pasa nada (sé que no debería pasar nada, pero supuse que si marco números, al menos deberían mostrarse en pantalla). He probado tanto con el 7 como con el 2.. ¿Alguna idea?
Gracias por la info. Si finalmente se decide por ese movil tendré en cuenta esa web ^^
Sepho escribió:Yo he seguido los pasos y he compilado un hello world, pero se me lanza el emulador de android y en la pantalla pone ANDROID en lugar de Hello, World! y si pulso las teclas no pasa nada (sé que no debería pasar nada, pero supuse que si marco números, al menos deberían mostrarse en pantalla). He probado tanto con el 7 como con el 2.. ¿Alguna idea?


Puede que sea una pregunta tonta pero... ¿Es alguna de estas la pantalla que ves?

Imagen Imagen

Por que si es asi quiere decir que el emulador aun esta arrancando... [+risas]

Si no es de eso pon el codigo (tanto del Java como del XML) a ver si podemos hacer algo.

Un saludo.
rYlEi escribió:
Sepho escribió:Yo he seguido los pasos y he compilado un hello world, pero se me lanza el emulador de android y en la pantalla pone ANDROID en lugar de Hello, World! y si pulso las teclas no pasa nada (sé que no debería pasar nada, pero supuse que si marco números, al menos deberían mostrarse en pantalla). He probado tanto con el 7 como con el 2.. ¿Alguna idea?


Puede que sea una pregunta tonta pero... ¿Es alguna de estas la pantalla que ves?

Imagen Imagen

Por que si es asi quiere decir que el emulador aun esta arrancando... [+risas]

Si no es de eso pon el codigo (tanto del Java como del XML) a ver si podemos hacer algo.

Un saludo.


Sí que es el de la derecha, pero he esperado un buen rato... ¿Cuánto tarda en arrancar? :S Quizá es algo que he hecho mal de la configuración.... Utilizo el plugin de eclipse.
74 respuestas
1, 2