import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Random;
import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.graphics.Color;
import android.support.v13.app.FragmentPagerAdapter;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class MyActivity extends Activity {
SectionsPagerAdapter mSectionsPagerAdapter;
ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
// Create the adapter that will return a fragment for each of the three
// primary sections of the activity.
mSectionsPagerAdapter = new SectionsPagerAdapter(getFragmentManager());
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.pager);
mSectionsPagerAdapter.addFragment(PlaceholderFragment.newInstance(4, getResources().getColor(R.color.android_blue)));
mSectionsPagerAdapter.addFragment(PlaceholderFragment.newInstance(5, getResources().getColor(R.color.android_darkpurple)));
mSectionsPagerAdapter.addFragment(PlaceholderFragment.newInstance(2, getResources().getColor(R.color.android_orange)));
mViewPager.setAdapter(mSectionsPagerAdapter);
}
public class SectionsPagerAdapter extends FragmentPagerAdapter {
List<Fragment> fragments; //acá voy a guardar los fragments
//constructor
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
this.fragments = new ArrayList();
}
@Override
public Fragment getItem(int position) {
//return PlaceholderFragment.newInstance(position + 1);
return fragments.get(position);
}
@Override
public int getCount() {
// Show 3 total pages.
//return 3;
return this.fragments.size();
}
public void addFragment(Fragment xfragment){
this.fragments.add(xfragment);
}
/* //COMENTARIOS
@Override
public CharSequence getPageTitle(int position) {
Locale l = Locale.getDefault();
switch (position) {
case 0:
return getString(R.string.title_section1).toUpperCase(l);
case 1:
return getString(R.string.title_section2).toUpperCase(l);
case 2:
return getString(R.string.title_section3).toUpperCase(l);
}
return null;
}*/
}
public static class PlaceholderFragment extends Fragment {
/**
Agregue "color"
*/
private static final String ARG_SECTION_NUMBER = "section_number";
private static final String BACKGROUND_COLOR = "color";
private int section_number;
private int color;
public static PlaceholderFragment newInstance(int sectionNumber, int color) {
PlaceholderFragment fragment = new PlaceholderFragment(); //instanciamos un nuevo fragment
Bundle args = new Bundle(); //guardamos los parametros
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
args.putInt(BACKGROUND_COLOR, color); //agrego ademas el color de fondo
fragment.setArguments(args);
fragment.setRetainInstance(true); //agrego para que no se pierda los valores de la instancia
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//cuando crea una instancia de tipo PlaceholderFragment
//si lo enviamos parametros, guarda esos
//si no le envio nada, toma el color gris y un número aleatroio
if(getArguments() != null){
this.section_number = getArguments().getInt(ARG_SECTION_NUMBER);
this.color = getArguments().getInt(BACKGROUND_COLOR);
}
else{
this.color = Color.GRAY;
this.section_number = (int)(Math.random() * 5);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_my, container, false);
TextView tv_section = (TextView) rootView.findViewById(R.id.tv_section_label);
tv_section.setText("" + section_number);
rootView.setBackgroundColor(this.color);
return rootView;
}
}
}
colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="white">#FFffffff</color>
<color name="black">#FF000000</color>
<color name="gray">#FF8c8c8c</color>
<color name="android_blue">#FF33b5e5</color>
<color name="android_darkblue">#FF0099cc</color>
<color name="android_green">#FF99cc00</color>
<color name="android_darkgreen">#FF669900</color>
<color name="android_red">#FFff4444</color>
<color name="android_darkred">#FFcc0000</color>
<color name="android_yellow">#FFffd75a</color>
<color name="android_darkyellow">#FFffc40d</color>
<color name="android_orange">#FFffbb33</color>
<color name="android_darkorange">#FFff8800</color>
<color name="android_pink">#FFd9698c</color>
<color name="android_darkpink">#FFc3325f</color>
<color name="android_purple">#FFaa66cc</color>
<color name="android_darkpurple">#FF9933cc</color>
</resources>
strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">ViewPager</string>
<string name="title_section1">Section 1</string>
<string name="title_section2">Section 2</string>
<string name="title_section3">Section 3</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
</resources>
Buen trabajo!!! Me ha sido de gran ayuda, un ejemplo práctico y sencillo. Gracias!! Un saludo desde España
ResponderEliminarhola buenas disculpa me puedes ayudar con un proyecto lo que pasa es que necesito que el viewpager salga de arriba hacia abajo, no de izquierda a derecha o viceversa
ResponderEliminarHola Exelente Tutoriales, tengo algunas pregunas como hago para Que enves de que salgan eso numeros salga Letras ?? y otra es como aser para que uno desida de que lugar comensar por ejempo tengo las tres imagenes y quiero comensar desde la 2 no desde la primera como relalizo eso?
ResponderEliminarsería así http://cursoandroidstudio.blogspot.com.ar/2014/07/viewpager-image_18.html
EliminarSi seria asi el proyecto, lo que quisiera hacer es que aparesca la descripcion de cada imagen. ejemplo cambiar este codigo
EliminarmSectionsPagerAdapter.addFragment(Fragmentos.newInstance(4, getResources().getColor(R.color.android_blue), R.drawable.tn_a1));
POR ESTE:
mSectionsPagerAdapter.addFragment(Fragmentos.newInstance("Descripcion de la imagen numero 1", getResources().getColor(R.color.android_blue), R.drawable.tn_a1));
Hola Primero que nada dejame felicitarte por todos tus tutoriales estan excelentes. Segundo me podrias ayudar con un problema. en esta linea me marca un error mSectionsPagerAdapter = new ViewPagerAdapter(getFragmentManager()); me dice ViewPagerAdapter (android.support.v4.app.FragmentManager) in ViewPagerAdapter cannot be applied to (android.app.FragmentManager) adicionalmente creo que es porque esta libreria no me la deja agregar android.support.v13.app.FragmentPagerAdapter; ya revise y tengo actualizado las librerias . Gracias
ResponderEliminar