Ir al contenido principal

Android: Elementos básicos (II)

En este segundo post vamos a ver cómo crear imágenes y los elementos de selección checkbox y radio.

IMÁGENES
Android tiene dos elementos para añadir imágenes a nuestra aplicación: ImageView e ImageButton, análogos a TextView y Button respectivamente. La imagen a mostrar se indica en el atributo XML android:src o con el método setImageResource(int).

¿Cómo cargar la imagen res/drawable/myimage.png? (2 ejemplos)
ImageView iv= (ImageView) findViewById(R.id.myimageview);
iv.setImageResource(R.drawable.myimage);
Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.myimage);

¿Cómo crear una imagen con XML?
<ImageButton android:id="@+id/myimageview"     
  android:layout_height="wrap_content"     
  android:layout_width="wrap_content"     
  android:src="@drawable/myimage" />

CHECKBOX
El nombre de un checkbox en Android es fácil de recordar, ya que es igual, Checkbox. En Java, podemos registrar un listener OnCheckedChangeListener, que notifique cuando se selecciona o deselecciona el checkbox:
<CheckBox android:id="@+id/my_check"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Unchecked" />

 public class My_Checkbox extends Activity 

         implements CompoundButton.OnCheckedChangeListener {
   CheckBox cb;

   @Override
   public void onCreate(Bundle icicle) {
       super.onCreate(icicle);
       setContentView(R.layout.main);
       cb=(CheckBox)findViewById(R.id.my_check);
       cb.setOnCheckedChangeListener(this);
   }
   public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
       if (isChecked)  cb.setText("Checked");
       else cb.setText("Unchecked");
   }
}

RADIO
Un radio en Android es un RadioButton y un grupo de radios, RadioGroup, donde sólo un radio podrá estar seleccionado.

¿Cómo crear un grupo de radios en XML?
<RadioGroup
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:orientation="vertical">
      <RadioButton android:id="@+id/radio_red"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Red" />
      <RadioButton android:id="@+id/radio_blue"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Blue" />
</RadioGroup>
¿Cómo podemos mostrar un mensaje cuando se selecciona un radio?
Creamos la acción a realizar con View.OnClickListener:
private OnClickListener radio_listener = new OnClickListener() {
   public void onClick(View v) {
     // Perform action on clicks
     RadioButton rb = (RadioButton) v;
     Toast.makeText(My_Class.this, rb.getText(), 
              Toast.LENGTH_SHORT).show();
   }
};
En el método onCreate, asociamos los radios con el listener:
final RadioButton radio_red = (RadioButton) findViewById(R.id.radio_red);
final RadioButton radio_blue = (RadioButton) findViewById(R.id.radio_blue);
radio_red.setOnClickListener(radio_listener);
radio_blue.setOnClickListener(radio_listener);

Referencias:

Comentarios

Entradas populares de este blog

Leer un fichero properties con java.util.Properties

Los ficheros .properties son simples ficheros de texto que se suelen utilizar para guardar parámetros de configuración, en forma de pares clave-valor. Ejemplo de fichero: configuration.properties #User parameters user.name=Ana user.language=spanish Si estamos usando Java, podemos utilizar la clase java.util.Properties para leer los parámetros de este fichero: private static final String USER_NAME = "user.name"; private static final String USER_LANGUAGE = "user.language"; public void showProperties() throws Exception { Properties p = new Properties(); InputStream is = App.class.getResourceAsStream("/configuration.properties"); p.load(is); is.close(); String userName = p.getProperty(USER_NAME); String userCountry = p.getProperty(USER_LANGUAGE); System.out.println("userName: "+userName); System.out.println("userLanguage: "+userCountry); } Después de ejecutar este método, obtendríamos la siguiente salida: ...

JSF 2.0: Managed Beans (III)

Anteriormente ya hemos visto que cuando se declara un bean, tenemos que darle un scope: application, session, view, request, none. Un scope es un mapeo entre nombres y objetos que se almacena durante un determinado periodo de tiempo. En este post vamos a explicar cada uno de ellos. Si declaramos el bean desde el fichero faces-config.xml, indicamos el scope en <managed-bean-scope> y si queremos hacerlo con anotaciones, utilizaremos @{Application,Session,View,Request,None}Scoped Application Con este scope, se guarda la información durante toda la vida de la aplicación web, independientemente de todas las peticiones y sesiones que se realicen. Este bean se instancia con la primera petición a la aplicación y desaparece cuando la aplicación web se elimina del servidor. Si queremos que el bean se instancie antes de que se muestre la primera página de la aplicación, usamos la propiedad eager a true. @ManagedBean(eager=true) ó <managed-bean eager="true"> Session...

JSF 2.0: Message bundles

Los message bundles son ficheros .properties que guardan mensajes del tipo clave=valor. Si centralizamos todos los mensajes de nuestra aplicación en estos ficheros, es más fácil poder localizarlos si queremos realizar algún cambio y también nos ayuda para la internacionalización de la aplicación. Ejemplo: messages.properties (en src/java/com/examples) con dos mensajes name=Tu nombre: age=Tu edad: ¿Cómo los declaramos? 1) En cada página JSF donde lo necesitemos <f:loadBundle basename="com.examples.messages" var="msgs"/> 2) De manera global en faces-config.xml <application>      <resource-bundle>           <base-name>com.examples.messages</base-name>           <var>msg</var>      </resource-bundle> </application> Esta opción es más eficiente ya que sólo crea el bundle una v...