Xamarin.Android Comment créer une galerie d'images à faire glisser à l'aide de ViewPager?
Maricela Potoc
La galerie Android est désormais obsolète, je dois donc utiliser ViewPager. Je n'ai trouvé que des exemples de code pour Xamarin.Forms, donc j'apprécierais que quelqu'un puisse m'aider avec un exemple de code pour Xamarin.Android.
Ma question est différente de Click on Viewpager Xamarin Android car je n'ai pas besoin de cliquer sur les photos, je devais seulement faire glisser les images dans la galerie.
Florin Birgu
Bien que ce soit une question différente, il existe une solution ici qui ne vous oblige pas à utiliser un fragment d'image pour un simple curseur. https://stackoverflow.com/a/33209130/5436000
public class ImageSliderAdapter : PagerAdapter
{
Context _context;
List<string> _imageUrls;
public ImageSliderAdapter (Context context, List<string> imageUrls)
{
_imageUrls = imageUrls;
_context = context;
}
public override bool IsViewFromObject (Android.Views.View view, Java.Lang.Object @object)
{
return view == ((LinearLayout)@object);
}
public override int Count {
get {
return _imageUrls.Count;
}
}
public override void DestroyItem (ViewGroup container, int position, Java.Lang.Object objectValue)
{
}
public override Java.Lang.Object InstantiateItem (ViewGroup container, int position)
{
View view = container;
var inflater = _context.GetSystemService (Context.LayoutInflaterService) as LayoutInflater;
view = inflater.Inflate (Resource.Layout.image_slider_item, null);
var child = view.FindViewById<ImageView> (Resource.Id.image_slider_item);
child.Click += (o, e) =>
{
//your code here
};
Bitmap image = null;
Task.Run (() => {
URL url = new URL (_imageUrls [position]);
image = BitmapFactory.DecodeStream (url.OpenConnection ().InputStream);
}).ContinueWith (t => {
(_context as MainView).RunOnUiThread (() => {
child.SetImageBitmap (image);
});
});
container.AddView (view);
return view;
}
}