El constructor

En Java podemos definir un método que se ejecute inicialmente y en forma automática. Este método se lo llama constructor.
El constructor tiene las siguientes características:
  • Tiene el mismo nombre de la clase.
  • Es el primer método que se ejecuta.
  • Se ejecuta en forma automática.
  • No puede retornar datos.
  • Se ejecuta una única vez.
  • Un constructor tiene por objetivo inicializar atributos.

Problema 1:

Se desea guardar los sueldos de 5 operarios en un vector. Realizar la creación y carga del vector en el constructor.

Programa:

import java.util.Scanner;
public class Operarios {
    private Scanner teclado;
    private int[] sueldos;

    public Operarios()
    {
        teclado=new Scanner(System.in);
        sueldos=new int[5];
        for(int f=0;f<5;f++) {
            System.out.print("Ingrese valor de la componente:");
            sueldos[f]=teclado.nextInt();
        }
    }

    public void imprimir() {
        for(int f=0;f<5;f++) {
            System.out.println(sueldos[f]);
        }
    }

    public static void main(String[] ar) {
        Operarios op=new Operarios();
        op.imprimir();
    }
}

Control ImageButton

Hemos visto la creación de objetos de la clase Button, ahora veremos otra clase muy similar a la anterior llamada ImageButton que tiene la misma filosofía de manejo con la diferencia que puede mostrar una imagen en su superficie.

Problema:

Disponer un objeto de la clase ImageButton que muestre una imagen de un teléfono. Cuando se presione mostrar en un control TextView el mensaje “Llamando”.
Primero crearemos un proyecto llamado proyecto007 y luego debemos buscar una imagen en formato png que represente un telefono de 50*50 píxeles.
Nombre del archivo: telefono.png
Ahora copiamos el archivo a la carpeta de recursos de nuestro proyecto : resdrawable-mdpi
Desde el Eclipse en la ventana “Package Explorer” navegamos hasta la carpeta res y entramos al directorio drawable-mdpi y vemos que todavía no está el archivo que acabamos de copiar. Para que se actualice el proyecto presionamos el botón derecho del mouse sobre esta carpeta y seleccionamos la opción “Refresh”:

opcion refresh packard explorer

Vemos que se actualizó el contenido de la carpeta y aparece la imagen que copiamos previamente.
Ahora insertaremos el objeto de la clase ImageButton en el formulario de nuestra aplicación. La clase ImageButton se encuentra en la pestaña “Image & Media”:

control ImageButton en android

Aparece un diálogo de donde seleccionamos el archivo telefono. Luego de esto podemos ver que la superficie del objeto de la clase ImageButton muestra la imagen que almacenamos previamente en la carpeta de res.
Si queremos cambiar el archivo a mostrar debemos modificar la propiedad src (aparece nuevamente el diálogo que nos permite seleccionar la imagen)
Inicializamos la propiedad ID con el nombre bi1
Agreguemos un TextView a nuestra aplicación y configuremos sus propiedades ID (con tv1) y text. Luego la interfaz visual debe ser similar a:

control imagebutton

Ver código fuente en: Android Ya

Control ListView

El control ListView a diferencia del Spinner que se cierra luego de seleccionar un elemento permanecen visibles varios elementos (se lo utiliza cuando hay que mostrar muchos elementos)
Si la lista no entra en el espacio que hemos fijado para el ListView nos permite hacer scroll de los mismos.
El control ListView se encuentra en la pestaña “compositive”.

Problema:

Disponer un ListView con los nombres de paises de sudamérica. Cuando se seleccione un país mostrar en un TextView la cantidad de habitantes del país seleccionado.
La interfaz visual a implementar es la siguiente (primero disponemos un TextView (llamado tv1) y un ListView (llamado listView1)):

control listview

Código fuente:

package androidya.proyecto006;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class Proyecto006Activity extends Activity {
private String[] paises={"Argentina","Chile","Paraguay","Bolivia","Peru",
"Ecuador","Brasil","Colombia","Venezuela","Uruguay"};
private String[] habitantes={"40000000","17000000","6500000","10000000","30000000",
"14000000","183000000","44000000","29000000","3500000"};
private TextView tv1;
private ListView lv1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv1=(TextView)findViewById(R.id.tv1);
lv1 =(ListView)findViewById(R.id.listView1);
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, paises);
lv1.setAdapter(adapter);
lv1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView parent, View v, int posicion, long id) {
tv1.setText("Población de "+ lv1.getItemAtPosition(posicion) + " es "+ habitantes[posicion]);
}
});
}

}

Fuente: Android Ya

Control Spinner

El objetivo de este concepto es practicar lo visto hasta ahora e incorporar el control visual Spinner
El control Spinner muestra una lista de String y nos permite seleccionar uno de ellos. Cuando se lo selecciona se abre y muestra todos sus elementos para permitir seleccionar uno de ellos.

Problema:

Realizar la carga de dos números en controles de tipo EditText. Mostrar un mensaje que solicite la carga de los valores. Disponer un control de tipo Spinner que permita seleccionar si queremos sumar, restar, multiplicar o dividir dichos valores. Finalmente mediante un control de tipo Button efectuamos la operación respectiva. Mostramos el resultado en un TextView.
Lo nuevo en este problema es la inserción de un control de tipo Spinner que se encuentra en la pestaña “FormWidgets”:

control spinner

Definimos la propiedad id con el valor spinner1.
En la siguiente imagen en la ventana “Outline” de Eclipse podemos observar los objetos dispuestos en el formulario, sus Id, sus textos y de que clase son cada uno:

control spinner

No olvidemos inicializar la propiedad OnClick del objeto button1 con el valor “operar” (dicho nombre es el método que debemos implementar)

Código fuente:

package androidya.proyecto005;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;

public class Proyecto005Activity extends Activity {
private Spinner spinner1;
private EditText et1,et2;
private TextView tv3;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
et1=(EditText)findViewById(R.id.et1);
et2=(EditText)findViewById(R.id.et2);
tv3=(TextView)findViewById(R.id.tv3);

spinner1 = (Spinner) findViewById(R.id.spinner1);
String []opciones={"sumar","restar","multiplicar","dividir"};
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item, opciones);
spinner1.setAdapter(adapter);
}

//Este método se ejecutará cuando se presione el botón
public void operar(View view) {
String valor1=et1.getText().toString();
String valor2=et2.getText().toString();
int nro1=Integer.parseInt(valor1);
int nro2=Integer.parseInt(valor2);
String selec=spinner1.getSelectedItem().toString();
if (selec.equals("sumar")) {
int suma=nro1+nro2;
String resu=String.valueOf(suma);
tv3.setText(resu);
} else
if (selec.equals("restar")) {
int resta=nro1-nro2;
String resu=String.valueOf(resta);
tv3.setText(resu);
}
else
if (selec.equals("multiplicar")) {
int multi=nro1*nro2;
String resu=String.valueOf(multi);
tv3.setText(resu);

}
else
if (selec.equals("dividir")) {
int divi=nro1/nro2;
String resu=String.valueOf(divi);
tv3.setText(resu);
}
}

}
Definimos un objeto de la clase Spinner:
    private Spinner spinner1;
En el método onCreate obtenemos la referencia al control visual declarado en el archivo XML:
        spinner1=(Spinner)findViewById(R.id.spinner1);
Definimos un vector con la lista de String que mostrará el Spinner:
        String []opciones={"sumar","restar","multiplicar","dividir"};
Definimos y creamos un objeto de la clase ArrayAdapter::
        ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item, opciones);
Al constructor le pasamos como primer parámetro la referencia de nuestro Activity (this), el segundo parámetro indica el tipo de Spinner, pudiendo ser las constantes:
android.R.layout.simple_spinner_item
android.R.layout.simple_spinner_dropdown_item
El tercer parámetro es la referencia del vector que se mostrará:
Luego llamamos al método setAdapter de la clase Spinner pasando la referencia del objeto de la clase ArrayAdapter que acabamos de crear:
        spinner1.setAdapter(adapter);
En el método operar que se ejecuta cuando presionamos el botón procedemos a extraer el contenido seleccionado del control Spinner:
        String selec=spinner1.getSelectedItem().toString();
Luego mediante una serie de if anidados verificamos si debemos sumar, restar, multiplicar o dividir:
        if (selec.equals("sumar")) {
int suma=nro1+nro2;
String resu=String.valueOf(suma);
tv3.setText(resu);
} else
if (selec.equals("restar")) {
int resta=nro1-nro2;
String resu=String.valueOf(resta);
tv3.setText(resu);
}
else
if (selec.equals("multiplicar")) {
int multi=nro1*nro2;
String resu=String.valueOf(multi);
tv3.setText(resu);

}
else
if (selec.equals("dividir")) {
int divi=nro1/nro2;
String resu=String.valueOf(divi);
tv3.setText(resu);
}

Fuente: Java ya

Samsung avisa su nuevo lanzamiento, Galaxy Note II

Mucho se ha especulado últimamente sobre rumores alrededor del nuevo Samsung Galaxy Note II  y estos mismos han tomado más fuerza con el reciente anuncio de la compañía coreana Samsung, que ha anunciado de manera oficial que tendrá lugar un lanzamiento este próximo 15 de agosto.

Esto se dio a conocer porque la compañía ha estado extendiendo invitaciones a varios medios de comunicación especializados en la materia a través de diversos comunicados, mismos que no hacen referencia exacta aún a que dispositivo será lanzado, ya que en dichas invitaciones solo se menciona ellanzamiento de un “nuevo dispositivo Galaxy“; esta situación abre las puertas a que se pueda pensar en la tablet Galaxy Note II, aunque también puede tratarse de la tablet Galaxy Note 10.1 que fue anunciada a principios de año y después desapareció completamente del plano.
En fin, las especulaciones en la red no se han hecho esperar, lo que si es un hecho, es que este próximo 15 de agosto conoceremos un nuevo dispositivo inteligente de Samsung que seguramente será capaz de asombrar al público con sus innovaciones en hardware y con sus aplicaciones móviles de última generación.

HTC One X recibe Android 4.0.4

HTC One X display
HTC confirma que desde hoy los usuarios del HTC One X están más cerca de obtenerAndroid 4.0.4 Ice Cream Sandwich en su terminal, mientras que en Europa ya deberían poder actualizar. Esta nueva versión, según HTC, se enfoca en la integración de algunas de la nuevas características que ya Eduardo nos comentó cuando se detalló HTC Sense 4.1.
El paquete (vía OTA) de la actualización consta de 148.13 MB por lo que siempre se recomienda valerse de una red Wi-Fi para no golpear los datos de navegación. Aún no tenemos detalles completos porque no hemos podido actualizar además, HTC generaliza y no especifica todas la novedades. Sin embargo, ya se confirman algunas características:

  • Estabilidad del sistema (con rendimiento similar al Galaxy S III, pero ya confirmaremos)
  • Corrección en fondos de pantalla animados
  • Mejoras en la cámara (enfoque automático continuo y balance de blancos)
  • Integración con Facebook en la mayoría de las aplicaciones con un sólo inicio de sesión
  • Personalización para el botón de multitarea.
  • Estabilidad del Wi-Fi
  • Mejoras en el audio
  • Mejoras en la gestión de pestañas del navegador (aún sin Google Chorme como predeterminado)
  • Ofertas EA Games
Fuente: Engadget

La versión estable de CyanogenMod 9 ya disponible

Todos los fanáticos de la personalización de dispositivos Android seguramente están familiarizados con CyanogenMod, la ROM más popular y utilizada en el mundo. Pues si estabas esperando una versión funcional de CyanogenMod 9, la cual está basada en Android 4.0.5 Ice Cream Sandwich, te alegrará saber que ya está disponible en su versión estable para más de 40 terminales distintos.

Esta fue la grata sorpresa que nos dio hoy el equipo dirigido por Cyanogen a través desu blog oficial y de los perfiles que tienen en las diferentes redes sociales. La versión estable es el último lanzamiento que tendrá CM9 en cuestión de desarrollo, ya que ha sido finalizada, y le funcionan todas sus características desde la cámara (que suele dar fallos en las versiones en fase Beta de las ROMs) hasta el Bluetooth y más. Todo en lo absoluto.

Si eres usuario de esta ROM puedes descargar la versión estable de CM9 para tu dispositivo desde la web oficial, donde cada vez irán añadiendo más y más modelos, actualmente sumando más de 40, desde los más populares como el Galaxy S II, Galaxy S III, Galaxy Note y HTC One X, hasta tablets como la Galaxy Tab, ASUS EeePad Transformer o Motorola Xoom y muchos, muchos dispositivos más. El archivo que descargues te servirá tanto para actualizar tu ROM como para instalar por primera vez.
Sin embargo, si ya fue lanzada una nueva versión de Android (Jelly Bean) y el equipo de esta ROM estaba trabajando en algunas Nightlies de CyanogenMod 10, ¿para que lanzar una versión final de CM9?

Google no ayudará a Samsung contra Apple

Al menos no en el juicio actual y de manera visible, que sólo incluye violación de patentes que sólo tienen que ver con diseño y wireless de Samsung y Apple, no con Android en sí mismo. Por otro lado, se espera que Google sí interfiera en la lucha judicial cuando entre Android en juego.
Samsung Galaxy Note
Y es que la cuestión del parecidísimo diseño que tienen los smartphones de los coreanos no es la única cosa que Apple quiere discutir en la corte, también tiene abierto otro frente legal contra Android mismo, que ya tuvo resultados contra Samsung también. Es aquí cuando se espera que Google pase a ayudar con su artillería legal a Samsung, que representa el mayor porcentaje de dispositivos Android que se venden actualmente, con casi un 25% de teléfonos Android siendo de Samsung.
Según nos cuenta CNET, Google está jugando en la sombra hasta que el segundo juicio salga a la luz. Comprensible, no creo que Google quiera verse la cara directamente con Apple por un juego que no le concierne directamente, aunque tampoco puede distanciarse demasiado de Samsung. El nombre de Google sólo ha salido en el juicio en la defensa de Samsung al decir que los botones característicos de Android en la parte frontal de sus dispositivos son un elemento diferenciador de sus diseños y los de Apple.
Tampoco creo que Google le preocupe las demandas contra los fabricantes de Android como para que le quite el sueño, al fin y al cabo son un medio para intentar frenar las ventas tan aplastantes que el sistema del monito verde está teniendo. Y no está funcionando tanto. Amanecerá y veremos.
Fuente: Celularis

HTC tendría en el horno un Smartphone de 5 pulgadas y resolución Full HD

HTC

Samsung le salió bien la jugada del Note, de hecho tenemos un relevo muy pronto para el original dispositivo de los coreanos. LG fue la única competidora que apostó por algo parecido con el Optimus Vu, y ahora parece que algo más tarde es HTC la que quiere tener un gadget similar.
Desde fuentes del país de HTC, Taiwán, nos informan de que están preparando un Smartphone con pantalla de 5 pulgadas, y la novedad más interesante en el mismo sería la de apostar por una pantallacon resolución Full HD, 1080p.
Por ponernos en situación, el actual Note, con pantalla de 5.3 pulgadas, tiene una resolución de 1280×800 píxeles, y ya luce demasiado bien en cuestión de definición.
La fuente, Digitimes, cuenta que la resolución práctica del producto de HTC, es 1794×1080 píxeles, dejando 126 líneas verticales para los botones de navegación de Android. Sobre un posible puntero, para competir de igual a igual, no se ha filtrado nada.
De la misma información, un benchmark, se saca que el hardware interno es un Qualcomm Snapdragon S4 Pro (MSM8960) con GPU Adreno 320, que funciona 1.5GHz, y que está claramente contrastado como de las mejores opciones del mercado, por poder compaginarse con la conectividadLTE.
HTC tendría pensado ponerlo en el mercado en algún momento de septiembre u octubre. 
Fuente: Xataka

RadioGroup y RadioButton

El objetivo de este concepto es practicar la implementación de un programa que requiera controles de tipo RadioButton para seleccionar una actividad. Aprenderemos como agrupar un conjunto de RadioButton y verificar cual está seleccionado.

Problema:

Realizar la carga de dos números en controles de tipo EditText. Mostrar un mensaje que solicite la carga de los valores. Disponer dos controles de tipo RadioButton para seleccionar si queremos sumar o restar dichos valores. Finalmente mediante un control de tipo Button efectuamos la operación respectiva. Mostramos el resultado en un TextView.
El problema es similar al anterior. Para disponer los controles de tipo RadioButton debemos en realidad primero insertar un control de tipo RadioGroup (este control se encuentra en la paleta de componentes en la pestaña FormWidgets):

controles android radiogroup y radiobutton

Cuando arrastramos el control RadioGroup al formulario se generan automáticamente 3 objetos de la clase RadioButton contenidos dentro del RadioGroup, podemos fácilmente identificar que los controles RadioButton pertenecen a dicho RadioGroup viendo la ventana de “Outline” del Eclipse (donde nos muestra todos los controles insertados hasta el momento):

controles android radiogroup y radiobutton

Nuestro problema solo requiere dos controles de tipo RadioButton. Para borrarlo lo podemos hacer directamente del formulario seleccionándolo y presionando la tecla delete o seleccionándolo desde la ventana “Outline” y luego presionando la tecla delete

.

Ahora a los dos controles de tipo RadioButton definimos sus id (los llamaremos r1 y r2 respectivamente)
Cambiamos sus propiedades text por los textos “sumar” y “restar”.
No olvidemos también cambiar los id de los controles EditText por et1 y et2 (igual que en el problema anterior)
Por último agreguemos un botón y un TextView para mostrar el resultado
Inicializamos las propiedades del botón con los valores:
  id : button1
text : operar

Y el tercer TextView con los valores:

  id : tv3
text : resultado
Podemos controlar en la ventana “Outline” el id definido para cada control (tv1, et1, tv2, et2, radioGroup1, r1, r2, button1, tv3)
También podemos observar de que clase es cada control visual y el texto de la propiedad text para aquellos controles que tienen sentido su inicialización.
controles android radiogroup y radiobutton
Si nuestro problema requería más de 3 RadioButton deberíamos arrastrar dentro del RadioGroup otros controles de tipo RadioButton que se encuentran también en la pestaña de “Form Widgets”

Captura del evento clic del button e identifiación del RadioButton seleccionado.

El código fuente de la clase Proyecto003Activity es:
package androidya.proyecto003;

import android.view.View;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;

public class Proyecto003Activity extends Activity {

private EditText et1,et2;
private TextView tv3;
private RadioButton r1,r2;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

et1=(EditText)findViewById(R.id.et1);
et2=(EditText)findViewById(R.id.et2);
tv3=(TextView)findViewById(R.id.tv3);
r1=(RadioButton)findViewById(R.id.r1);
r2=(RadioButton)findViewById(R.id.r2);
}

//Este método se ejecutará cuando se presione el botón
public void operar(View view) {
String valor1=et1.getText().toString();
String valor2=et2.getText().toString();
int nro1=Integer.parseInt(valor1);
int nro2=Integer.parseInt(valor2);
if (r1.isChecked()==true) {
int suma=nro1+nro2;
String resu=String.valueOf(suma);
tv3.setText(resu);
} else
if (r2.isChecked()==true) {
int resta=nro1-nro2;
String resu=String.valueOf(resta);
tv3.setText(resu);
}
}

}
Primero debemos enlazar el objeto button1 con el método operar. Para esto similar al problema anterior seleccionamos el control button1 y cambiamos la propiedad OnClick por el valor operar (si no hacemos esto nunca se ejecutará el método operar de la clase Proyecto003Activity)
Como podemos ver el código fuente es igual al problema anterior. Tenemos dos objetos más que debemos inicializar en el método onCreate:
        r1=(RadioButton)findViewById(R.id.r1);
r2=(RadioButton)findViewById(R.id.r2);
Las variabl

es r1 y r2 son de la clase RadioButton y son necesarios en el método operar para verificar cual de los dos RadioButton están seleccionados. La clase RadioButton tiene un método llamado isChecked que retorna true si dicho elemento está seleccionado:

    public void operar(View view) {
String valor1=et1.getText().toString();
String valor2=et2.getText().toString();
int nro1=Integer.parseInt(valor1);
int nro2=Integer.parseInt(valor2);
if (r1.isChecked()==true) {
int suma=nro1+nro2;
String resu=String.valueOf(suma);
tv3.setText(resu);
} else
if (r2.isChecked()==true) {
int resta=nro1-nro2;
String resu=String.valueOf(resta);
tv3.setText(resu);
}
}

Fuente:http://www.javaya.com.ar/androidya/