web-dev-qa-db-fra.com

Android Viewpager en tant que diapositive d'images

J'utilise ViewPageIndicator de Jake et je souhaite afficher les images sous forme de galerie numérisée. Tout lien de référence où je peux commencer. J'ai implémenté le viewpager de base et souhaite maintenant implémenter une image viewpaper comme ci-dessous

enter image description here

Est-il possible de réaliser en utilisant ViewPageIndicator ?

58
Harsha M V

Dans ViewPageIndicator de Jake, il a implémenté View pager pour afficher un tableau de chaînes (c'est-à-dire ["this","is","a","text"]) que vous passez de YourAdapter.Java (qui étend FragmentPagerAdapter) à YourFragment.Java qui renvoie une vue au viewpager.

Pour afficher quelque chose de différent, il vous suffit de changer le type de contexte de votre passage. Dans ce cas, vous souhaitez transmettre des images au lieu du texte, comme illustré dans l'exemple ci-dessous:

Voici comment configurer votre Viewpager:

public class PlaceDetailsFragment extends SherlockFragment {
    PlaceSlidesFragmentAdapter mAdapter;
    ViewPager mPager;
    PageIndicator mIndicator;

    public static final String TAG = "detailsFragment";

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_place_details,
                container, false);

        mAdapter = new PlaceSlidesFragmentAdapter(getActivity()
                .getSupportFragmentManager());

        mPager = (ViewPager) view.findViewById(R.id.pager);
        mPager.setAdapter(mAdapter);

        mIndicator = (CirclePageIndicator) view.findViewById(R.id.indicator);
        mIndicator.setViewPager(mPager);
        ((CirclePageIndicator) mIndicator).setSnap(true);

        mIndicator
                .setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                    @Override
                    public void onPageSelected(int position) {
                        Toast.makeText(PlaceDetailsFragment.this.getActivity(),
                                "Changed to page " + position,
                                Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onPageScrolled(int position,
                            float positionOffset, int positionOffsetPixels) {
                    }

                    @Override
                    public void onPageScrollStateChanged(int state) {
                    }
                });
        return view;
    }

}

your_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="vertical" >



    <Android.support.v4.view.ViewPager
        Android:id="@+id/pager"
        Android:layout_width="fill_parent"
        Android:layout_height="0dp"
        Android:layout_weight="1" />

    <com.viewpagerindicator.CirclePageIndicator
        Android:id="@+id/indicator"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:padding="10dip" />

</LinearLayout>

VotreAdaptateur.Java

public class PlaceSlidesFragmentAdapter extends FragmentPagerAdapter implements
        IconPagerAdapter {

    private int[] Images = new int[] { R.drawable.photo1, R.drawable.photo2,
            R.drawable.photo3, R.drawable.photo4

    };

    protected static final int[] ICONS = new int[] { R.drawable.marker,
            R.drawable.marker, R.drawable.marker, R.drawable.marker };

    private int mCount = Images.length;

    public PlaceSlidesFragmentAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        return new PlaceSlideFragment(Images[position]);
    }

    @Override
    public int getCount() {
        return mCount;
    }

    @Override
    public int getIconResId(int index) {
        return ICONS[index % ICONS.length];
    }

    public void setCount(int count) {
        if (count > 0 && count <= 10) {
            mCount = count;
            notifyDataSetChanged();
        }
    }
}

Votre Fragment.Java

// vous devez renvoyer une image avec un texte à partir d'ici.//

public final class PlaceSlideFragment extends Fragment {
    int imageResourceId;

    public PlaceSlideFragment(int i) {
        imageResourceId = i;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        ImageView image = new ImageView(getActivity());
        image.setImageResource(imageResourceId);

        LinearLayout layout = new LinearLayout(getActivity());
        layout.setLayoutParams(new LayoutParams());

        layout.setGravity(Gravity.CENTER);
        layout.addView(image);

        return layout;
    }
}

Vous devriez obtenir un pageur View comme celui-ci à partir du code ci-dessus. enter image description here

72
suresh cheemalamudi

J'ai créé une bibliothèque nommée AndroidImageSlider , vous pouvez l'essayer.

enter image description here

43
daimajia

Visionneuse d’images avec la mise en oeuvre de ViewPager, vérifiez ce projet https://github.com/chiuki/Android-swipe-image-viewer

Reportez-vous également à cette discussion Balayer les images (pas les mises en page) avec viewpager

12
kumar_android

Utilisez simplement ceci https://Gist.github.com/8cbe094bb7a783e37ad1 pour rendre les pages environnantes visibles et http://viewpagerindicator.com/ this, pour indicateur. C'est plutôt cool, je l'utilise pour une galerie.

4
sztembi

Hoho .. Il devrait être très facile d'utiliser Gallery pour implémenter cela, utiliser ViewPager est beaucoup plus difficile. Mais j’encourage toujours à utiliser ViewPager car Gallery rencontre de nombreux problèmes et est déconseillé depuis Android 4.2.

Dans PagerAdapter, il existe une méthode getPageWidth () pour contrôler la taille de la page, mais vous ne pouvez pas atteindre cette cible uniquement.

Essayez de lire les 2 articles suivants pour vous aider.

multiple-view-viewpager-options

viewpager-container

3
faylon

vous pouvez utiliser le contrôle de galerie personnalisé .. vérifier ceci https://github.com/kilaka/ImageViewZoom utiliser la classe galleryTouch à partir de cette ..

2
Sanket Kachhela

Bonjour si vous cherchez simple Android image glissant avec indicateur de cercle, vous pouvez télécharger le code complet à partir d’ici http://javaant.com/viewpager-with-circle-indicator- in-Android/#. VysQQRV96Hs . Veuillez vérifier la démonstration en direct qui vous donnera une idée claire.

1
Nirmal Dhara
enter code here   public Timer timer;
public TimerTask task;
public ImageView slidingimage;

private int[] IMAGE_IDS = {
        R.drawable.home_banner1, R.drawable.home_banner2, R.drawable.home_banner3
    };

enter code here   @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home_screen);

     final Handler mHandler = new Handler();

        // Create runnable for posting
        final Runnable mUpdateResults = new Runnable() {
            public void run() {

                AnimateandSlideShow();

            }
        };
        int delay = 2000; // delay for 1 sec.

        int period = 2000; // repeat every 4 sec.

        Timer timer = new Timer();

        timer.scheduleAtFixedRate(new TimerTask() {

        public void run() {

             mHandler.post(mUpdateResults);

        }

        }, delay, period);

enter code here     private void AnimateandSlideShow() {

        slidingimage = (ImageView)findViewById(R.id.banner);
        slidingimage.setImageResource(IMAGE_IDS[currentimageindex%IMAGE_IDS.length]);

        currentimageindex++;

        Animation rotateimage = AnimationUtils.loadAnimation(this, R.anim.custom_anim);

          slidingimage.startAnimation(rotateimage);

    }
0
patel135

Un excellent curseur One Image: https://github.com/daimajia/AndroidImageSlider Vérifiez-le

0
Chulo