Default ViewPager






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>

6 comentarios:

  1. Buen trabajo!!! Me ha sido de gran ayuda, un ejemplo práctico y sencillo. Gracias!! Un saludo desde España

    ResponderEliminar
  2. hola 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

    ResponderEliminar
  3. Hola 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?

    ResponderEliminar
    Respuestas
    1. sería así http://cursoandroidstudio.blogspot.com.ar/2014/07/viewpager-image_18.html

      Eliminar
    2. Si seria asi el proyecto, lo que quisiera hacer es que aparesca la descripcion de cada imagen. ejemplo cambiar este codigo
      mSectionsPagerAdapter.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));

      Eliminar
  4. 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