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>