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
Est-il possible de réaliser en utilisant ViewPageIndicator ?
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.
J'ai créé une bibliothèque nommée AndroidImageSlider , vous pouvez l'essayer.
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
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.
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.
vous pouvez utiliser le contrôle de galerie personnalisé .. vérifier ceci https://github.com/kilaka/ImageViewZoom utiliser la classe galleryTouch à partir de cette ..
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.
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);
}
Un excellent curseur One Image: https://github.com/daimajia/AndroidImageSlider Vérifiez-le