Android

Android


Ejercicios Android


1: Radio Color

MainActivity.java

public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener {

private int color = Color.BLACK;
private RelativeLayout relativeLayout;
private RadioGroup radioGroup;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

relativeLayout = (RelativeLayout) findViewById(R.id.idLayout);

Button btn1 = (Button) findViewById(R.id.aceptar);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
relativeLayout.setBackgroundColor(color);
}
});

RadioGroup rg = (RadioGroup) findViewById(R.id.idRadioGroup);
rg.setOnCheckedChangeListener(this);
}



@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.opcion:
color = Color.RED;
break;
case R.id.opcion1:
color = Color.BLUE;
break;
case R.id.opcion2:
color = Color.GREEN;
break;
}
}
public boolean onCreateOptionsMenu(Menu menu) {
//getMenuInflater().inflate(R.menu.menu_main, menu);

return true;
}


public boolean onOptionsItemSelected(MenuItem mi) {
switch (mi.getItemId()) {
case R.id.opcion1://sale de la aplicación
finish();
break;

case R.id.opcion2://aparece un mensaje "bienvenido"dando click al segundo boton
Toast.makeText(this, "Bienvenido", Toast.LENGTH_SHORT).show();
break;
}
return true;
}
}

activity_main.xml


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/idLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.barajas.ruben.radiocolor.MainActivity">

<TextView
android:id="@+id/color"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/activity_vertical_margin"
android:text="@string/color"
android:textAppearance="?android:attr/textAppearanceMedium"
android:onClick="Pulsame"
/>

<Button
android:id="@+id/aceptar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Aceptar"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="122dp" />

<RadioGroup
android:id="@+id/idRadioGroup"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:layout_above="@+id/aceptar">

<RadioButton
android:id="@+id/opcion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Rojo"
android:layout_below="@+id/color"
android:layout_marginTop="49dp"
android:layout_toLeftOf="@+id/button" />

<RadioButton
android:id="@+id/opcion1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Azul"
android:layout_below="@+id/radioButton2"
android:layout_toLeftOf="@+id/button"
android:layout_toStartOf="@+id/button"
android:layout_marginTop="49dp" />

<RadioButton

android:id="@+id/opcion2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="verde"
android:layout_below="@+id/opcion2"
android:layout_alignLeft="@+id/radioButton"
android:layout_alignStart="@+id/radioButton"
android:layout_marginTop="49dp" />
</RadioGroup>
</RelativeLayout>

==============================================


2. Dos Activities:

MainActivity.java

public class MainActivity extends AppCompatActivity implements View.OnClickListener, RadioGroup.OnCheckedChangeListener{


  Button b;

  private int color;

  //private String palabra="Prueba de envio";

  private RadioGroup rg;


  @Override

  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);


    rg=(RadioGroup)findViewById(R.id.rg);

    rg.setOnCheckedChangeListener(this);

    b=(Button)findViewById(R.id.b1);

    b.setOnClickListener(this);

  }



  public void onClick(View v){


    Intent i=new Intent(this,SegundaActividad.class);


    i.putExtra("color",color);

    //i.putExtra("palabra",palabra);

    startActivityForResult(i,1);

  }



  @Override

  public void onCheckedChanged(RadioGroup rg, int id) {


    switch (id){

      case R.id.r1:

        color=Color.RED;

        break;


      case R.id.r2:

        color=Color.BLUE;

        break;


      case R.id.r3:

        color=Color.GREEN;

        break;

    }

  }

}


SegundaActividad.java

public class SegundaActividad extends Activity implements View.OnClickListener{


  private LinearLayout rl;

  private TextView tv;

  private Button volver;

  private Button salir;

  private Intent back;



  @Override

  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.segunda_actividad);


    rl=(LinearLayout)findViewById(R.id.l2);

    //tv=(TextView)findViewById(R.id.t2);

    volver=(Button)findViewById(R.id.b2);

    salir=(Button)findViewById(R.id.b3);

    volver.setOnClickListener(this);

    salir.setOnClickListener(this);


    Bundle datos = getIntent().getExtras();


    //i=getIntent();

    //int color=i.getIntExtra("color", Color.RED);

    int color =datos.getInt("color");

    //String palabra=datos.getString("palabra");



    //tv.setText(palabra);

    rl.setBackgroundColor(color);

  }


  public void onClick(View v){


    switch (v.getId()){

      case R.id.b2:

        back= new Intent(this,MainActivity.class);

        startActivity(back);

        //break;


      case R.id.b3:

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {

          finishAffinity();

        }


    }

  }

}


activity_main.xml

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

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

  xmlns:tools="http://schemas.android.com/tools"

  android:id="@+id/l1"

  android:layout_width="match_parent"

  android:layout_height="match_parent"

  android:paddingBottom="@dimen/activity_vertical_margin"

  android:paddingLeft="@dimen/activity_horizontal_margin"

  android:paddingRight="@dimen/activity_horizontal_margin"

  android:paddingTop="@dimen/activity_vertical_margin"

  tools:context="com.ejemplo.david.ejercicioprimerexamenprueba.MainActivity">


  <Button

    android:text="Button"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_below="@+id/textView"

    android:layout_centerHorizontal="true"

    android:layout_marginTop="159dp"

    android:id="@+id/b1" />


  <RadioGroup

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_marginTop="34dp"

    android:layout_alignParentTop="true"

    android:layout_centerHorizontal="true"

    android:id="@+id/rg">


    <RadioButton

      android:text="Rojo"

      android:layout_width="wrap_content"

      android:layout_height="wrap_content"

      android:id="@+id/r1"

      android:layout_weight="1" />


    <RadioButton

      android:text="Azul"

      android:layout_width="wrap_content"

      android:layout_height="wrap_content"

      android:id="@+id/r2"

      android:layout_weight="1" />


    <RadioButton

      android:text="Verde"

      android:layout_width="wrap_content"

      android:layout_height="wrap_content"

      android:id="@+id/r3"

      android:layout_weight="1" />

  </RadioGroup>

</RelativeLayout>


segunda_actividad.xml

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

  android:orientation="vertical" android:layout_width="match_parent"

  android:layout_height="match_parent"

  android:id="@+id/l2">


  <TextView

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:id="@+id/t2" />


  <Button

    android:text="Volver"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:id="@+id/b2" />


  <Button

    android:text="Salir"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:id="@+id/b3" />

</LinearLayout>


==============================================


3. Contador

MainActivity.java


public class MainActivity extends AppCompatActivity {


  //App con un boton para salir y otro que al ser pulsado muestra en el textview cuantas pulsaciones se han echo


  private TextView tv;

  private Button b1;

  private Button b2;

  private int numVeces;



  protected void onCreate(Bundle savedInstanceState) {

    //crea una AppCompatActivity vacia

    super.onCreate(savedInstanceState);


    //infla los elementos del layout

    setContentView(R.layout.activity_main);


    //defino un manejadores para cada vista

    tv = (TextView) findViewById(R.id.text1);

    /*b1 =(Button) findViewById(R.id.contar);

    b2 =(Button) findViewById(R.id.salir);*/


    numVeces= savedInstanceState!=null//se inicializa aqui

        ?numVeces=savedInstanceState.getInt("numVeces")

        :0 ;


    /*if(savedInstanceState!=null)

    numVeces=savedInstanceState.getInt("numVeces")

    else numVeces=0;*/



  }//oncreate



  protected void onResume(){

    super.onResume();

    Log.i(getLocalClassName(),"onResume");

  }


  protected void onPause(){

    super.onPause();

    Log.i(getLocalClassName(),"onPause");

  }


  protected void onStop(){

    super.onStop();

    Log.i(getLocalClassName(),"onStop");

  }


  protected void onDestroy(){

    super.onDestroy();

    Log.i(getLocalClassName(),"onDestroy");

  }



  protected void onSaveInstanceState(Bundle b){

    Log.i(getLocalClassName(), "onSave");

    b.putInt("numVeces", numVeces);

  }


  public void pulsar(View vista) {


    switch (vista.getId()){


      case R.id.contar:

        numVeces++;

        // Resources r = getResources();//acceder a los recursos de la carpeta res

        //tv.setText(r.getString(R.string.mensaje,num));

        tv.setText(getResources().getQuantityString(R.plurals.mensaje,numVeces,numVeces));//num es para sustituir el %d

        break;


      case R.id.salir:

        finish();

        break;

    }

  }//metodo pulsar

}


activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

  xmlns:tools="http://schemas.android.com/tools"

  android:id="@+id/activity_main"

  android:layout_width="match_parent"

  android:layout_height="match_parent"

  android:paddingBottom="@dimen/activity_vertical_margin"

  android:paddingLeft="@dimen/activity_horizontal_margin"

  android:paddingRight="@dimen/activity_horizontal_margin"

  android:paddingTop="@dimen/activity_vertical_margin"

  tools:context="com.example.paula.tema1.MainActivity"

  android:orientation="vertical">


  <TextView

    android:id="@+id/text1"

    android:layout_width="300dp"

    android:layout_height="50dp"

    android:background="#00ffe5"

    android:layout_margin="50sp"

    android:textSize="32dp"

    android:textAlignment="center"

    android:layout_gravity="center"

    android:layout_alignParentTop="true"

    android:layout_centerHorizontal="true" />


  <LinearLayout

    android:orientation="horizontal"

    android:layout_width="match_parent"

    android:layout_height="match_parent">


    <Button

      android:id="@+id/contar"

      android:layout_width="45dp"

      android:layout_height="90dp"

      android:text="@string/boton1"

      android:textSize="30dp"

      android:layout_margin="44px"

      android:layout_marginBottom="148dp"

      android:layout_alignParentBottom="true"

      android:layout_centerHorizontal="true"

      android:layout_gravity="center"

      android:onClick="pulsar"

      android:layout_weight="1" />


    <Button

      android:id="@+id/salir"

      android:text="@string/salir"

      android:layout_width="45dp"

      android:layout_height="90dp"

      android:onClick="pulsar"

      android:textSize="30dp"

      android:layout_alignParentBottom="true"

      android:layout_centerHorizontal="true"

      android:layout_gravity="center"

      android:layout_marginTop="30sp"

      android:layout_marginBottom="34dp"

      android:layout_weight="1" />


  </LinearLayout>

</LinearLayout>

==============================================


4. Tabs

MainActivity.java


public class MainActivity extends AppCompatActivity implements View.OnClickListener {

  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);


//hay que añadir los componentes del AppBarLayout y del ViewPager aqui para que se añadan

    Toolbar toolbar= (Toolbar) findViewById(R.id.toolbar);

    setSupportActionBar(toolbar);


    //creamos la vista para el ViewPager.

    ViewPager viewPager= (ViewPager) findViewById(R.id.viewpager);

    //hay que ponerle un adaptador

    viewPager.setAdapter(new MainPageAdapter(getApplicationContext()/*(this)*/));


    //gestionamos las pestañas y ligamos el tablayout con el ViewPager

    TabLayout tabs= (TabLayout) findViewById(R.id.tabs);

    tabs.setTabMode(TabLayout.MODE_FIXED);//Pestañas fijas

    tabs.setupWithViewPager(viewPager);


  }//onCreate

  public void onClick(View v) {

    switch (v.getId()){

      case R.id.b1:

        Toast.makeText(this, "Pagina 1", Toast.LENGTH_LONG).show();

        break;

      case R.id.b2:

        Toast.makeText(this, "Pagina 2", Toast.LENGTH_LONG).show();

        break;

      case R.id.b3:

        Toast.makeText(this, "Pagina 3", Toast.LENGTH_LONG).show();

        break;

    }

  }

}//class


MainPageAdapter.java

public class MainPageAdapter extends PagerAdapter {

  /*

  PagerAdapter obliga a implementar 3 métodos:

    - Instantiate item: devuelve una vista(pagina) compleja instanciada al contenedor.

    - isViewFromObjetct.

    - destroyItem:

    TODAS las clases adaptadoras deben llevar el contexto en el constructor

   */

  private LinearLayout page1, page2, page3;

  private final int[] titulos= {R.string.page1, R.string.page2, R.string.page3};

  private Context ctx;

  Button b1,b2,b3;


  public MainPageAdapter(Context ctx){

    //instancia el pageradapter por Android

    super();

    //Le pasamos el contexto de ejecucion; es decir, la referencia del objeto Activity

    // que instanciará este MainPageAdapter

    this.ctx= ctx;

  }

  public CharSequence getPageTitle(int position){

    return ctx.getString(titulos[position]);

  }

  public Object instantiateItem(ViewGroup collection, int position) {

    //Devuelve una vista compleja con los elementos de View necesarios que se cargaran en el PageViewer

    View pagina=null;

    switch (position) {


      case 0:

        if (page1 == null) {//inflamos el layout correspondiente

        /*

        Si la página se instancio en algún momento y no se ha llamado aún al método DestroyItem para

        desalojarla, se reutiliza y no es necesario instanciarla de nuevo.


        Si la pagina es null sera porque nunca se ha instanciado o bien porque se desalojo al llamar a

        DestroyItem. En ese caso, tendremos que inflar el layout y rehacer la pagina desde cero.

         */

          page1 = (LinearLayout) LayoutInflater.from(ctx).inflate(R.layout.page1, collection, false);

          Button b1=(Button)page1.findViewById(R.id.b1);


          b1.setOnClickListener(new View.OnClickListener(){

            public void onClick(View v){

              Toast.makeText(ctx, "Página 1", Toast.LENGTH_LONG).show();

              page1.setBackgroundColor(Color.RED);

            }//onClick

          }) ;

        };

        pagina=page1;

        break;

     case 1:

        if (page2 == null) {//inflamos el layout correspondiente

          page2 = (LinearLayout) LayoutInflater.from(ctx).inflate(R.layout.page2, collection, false);

          Button b2=(Button)page2.findViewById(R.id.b2);

          b2.setOnClickListener(new View.OnClickListener(){

            public void onClick(View v){

              Toast.makeText(ctx, "Página 2", Toast.LENGTH_LONG).show();

              page2.setBackgroundColor(Color.GREEN);

            }//onClick

          }) ;

        };

        pagina=page2;

        break;

      case 2:

        if (page3 == null) {//inflamos el layout correspondiente

          page3 = (LinearLayout) LayoutInflater.from(ctx).inflate(R.layout.page3, collection, false);

          Button b3 = (Button) page3.findViewById(R.id.b3);

          b3.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

              Toast.makeText(ctx, "Página 3", Toast.LENGTH_LONG).show();

              page3.setBackgroundColor(Color.MAGENTA);

            }//onClick

          }) ;

        };

        pagina=page3;

        break;

    }//switch

    collection.addView(pagina,0);

    return pagina;

  }

  //MÉTODOS OBLIGATORIOS de PAgerAdapter

  public int getCount() {   return 3;  }

  public boolean isViewFromObject(View view, Object object) { return view==object; }


  public void destroyItem(ViewGroup collection, int position, Object view){

    collection.removeView((View)view);

  }

}//MainPageAdapter


activity_main.xml

<LinearLayout


  xmlns:android="http://schemas.android.com/apk/res/android"

  xmlns:tools="http://schemas.android.com/tools"

  xmlns:app="http://schemas.android.com/apk/res-auto"

  android:layout_width="match_parent"

  android:layout_height="match_parent"

  android:orientation="vertical">


  <android.support.design.widget.AppBarLayout

    android:id="@+id/appbar"

    android:layout_height="wrap_content"

    android:layout_width="match_parent">


    <android.support.v7.widget.Toolbar

      android:id="@+id/toolbar"

      android:layout_height="32dp"

      android:layout_width="match_parent"

      app:layout_scrollFlags="scroll|enterAlways"/>


    <android.support.design.widget.TabLayout

      android:id="@+id/tabs"

      android:layout_width="match_parent"

      android:layout_height="wrap_content"

      app:tabIndicatorColor="@color/colorAccent"/>


  </android.support.design.widget.AppBarLayout>



  <android.support.v4.view.ViewPager

    android:id="@+id/viewpager"

    android:layout_height="match_parent"

    android:layout_width="match_parent"

    android:background="@android:color/darker_gray"

    />



</LinearLayout>


page1.xml (2 y 3 iguales excepto Strings)

<LinearLayout

  xmlns:android="http://schemas.android.com/apk/res/android"

  xmlns:tools="http://schemas.android.com/tools"

  android:orientation="vertical" android:layout_width="match_parent"

  android:layout_height="match_parent"

  android:gravity="center_vertical"

  android:background="@android:color/holo_blue_bright">


  <TextView

    android:text="@string/page1"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:id="@+id/tv1"

    android:gravity="center"

    android:textSize="30sp" />


  <Button

    android:text="@string/pulsa"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:id="@+id/b1" />


</LinearLayout>


Report Page