viernes, 3 de abril de 2015

Android cheat sheet

Esta entrada está dedicada a anotar conceptos básicos para la programación en Android y que es necesario tener presentes en todo momento, ya sea en la memoria o en una entrada en un blog.

- Layouts:
  <FrameLayout  xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"> </FrameLayout>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="horizontal"
      android:padding="25dp"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:weightSum="100"  (peso total de las vistas contenidas)
      android:background="@drawable/imagen_background.png" >
  </LinearLayout>
  <TableLayout  xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
       <TableRow>
         <TextView android:text="celda 1.1" />
         <TextView android:text="celda 1.2" />
      </TableRow>
      <TableRow>
         <TextView android:text="celda 2.1" android:layout_span="2" />
        (ocupa dos columnas)
     </TableRow>
   </TableLayout>
   <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:rowCount="2"
     android:columnCount="3"
     android:orientation="horizontal" >
         <TextView android:text="celda 1.1" />
         <TextView android:text="celda 1.2" />
         <TextView android:text="celda 2.1"  android:layout_columnSpan="2" />
   </GridLayout>
  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent"
     android:layout_height="match_parent" >
      <EditText android:id="@+id/TxtNombre"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="text" />
     <Button android:id="@+id/BtnAceptar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/TxtNombre"
        android:layout_alignParentRight="true" />
  </RelativeLayout>
- Controles(views):
  <Button
    android:layout_width="250dp"
    android:layout_height="wrap_content"
    android:text="Pulsar"
    android:layout_gravity="center"
    android:weight="80"  (en realidad, ocupa el 20% del peso total)
    android:textSize="20dp"
    android:id="@+id/btnPulsar" />
  <ToggleButton android:layout_weight="20" android:text="ToggleButton"
    android:id="@+id/tbtn1" android:layout_width="match_parent"
    android:paddingBottom="10dp" android:checked="true"
    android:layout_height="wrap_content" />
  <EditText android:layout_width="match_parent" android:layout_height="wrap_content"
    android:id="@+id/etNombre" android:hint="Escribe el nombre"
    android:password="true" />
- Definir actividad en AndroidManifest.xml:
  <activity android:name=".Splash" android:label="@string/nombre">
    <intent-filter>
      <action android:name="android.intent.action.MAIN" /> (not.ebacelo.android.APP)
      <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
  </activity>
- Button btnA = (Button) findViewById(R.id.btnA);
   TextView tvTexto = (TextView)findViewById(R.id.txtTexto);
   final EditText etEntrada= (EditText)findViewById(R.id.etEntrada);
   etEntrada.setInputType(InputType.TYPE_CLASS_TEXT |
     InputType.TYPE_TEXT_VARIATION_PASSWORD);
   tvTexto.setGravity(Gravity.CENTER);
- btnA.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
      Random rand = new Random();
      if (cadena.contentEquals("texto")
        txtTexto.setText("Texto para la vista");
        txtTexto.setTextColor(Color.BLUE);
        txtTexto.setTextSize(rand.nextInt(40);
    }
  }
  //Otra opción es implementar la interfaz View.OnClickListener y
  //el método onClick dentro de la clase correspondiente.
  //btnA.setOnClickListener(this)
- protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);

    ourSong = MediaPlayer.create(Splash.this,  R.raw.sonido);
    ourSong.start();

    Thread timer = new Thread() {
       public void run() {
         try {
           sleep(5000);
         } catch (InterruptedException e) {
           e.printStackTrace();
         } finally {
           Intent openSplash = new Intent("not.ebacelo.android.SPLASH");
           startActivity(openSplash);
         }
       }
     }
  }
- protected void onPause() {
    super.onPause();
    ourSong.release();
    finish();
  }

- Lista de elementos:
  public class Menu extends ListActivity {
    String elementos[] = {"elemento1", "elemento2", "elemento3", "elemento4"};

    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setListAdapter(new ArrayAdapter<String>(Menu.this,
         android.R.layout.simple_list_item_1, elementos));
    }
    protected void onListItemClick(ListView l, View v, int position, long id) {
      super.onListItemClick(l, v, position, id);
      String elementoSeleccionado = elementos[position];
      try {
        Class miClase = Class.forName("not.ebacelo.android.splash");
        Intent miIntent = new Intent(Menu.this, miClase);
        startActivity(miIntent);
      } catch (ClassNotFounException e) {
        e.printStackTrace();
      }
    }
  }

No hay comentarios:

Publicar un comentario