2016-10-07 5 views
2

Галерея Android теперь устарела, поэтому мне нужно использовать ViewPager. Я только нашел образцы кода для Xamarin.Forms, поэтому я был бы признателен, если бы кто-то мог помочь мне с образцом кода для Xamarin.Android.Xamarin.Android Как создать галерею с прорисовкой изображений с помощью ViewPager?

Мой вопрос отличается от Click on Viewpager Xamarin Android, потому что мне не нужно нажимать на фотографии, мне нужно было просто прорисовывать изображения в галерее.

+0

Есть так много учебников, чтобы показать вам, как сделать родной viewpages в xamarin.android. Это действительно всеобъемлющий. Google для некоторых. – jaymarvels

+0

Если бы кто-то из них работал на то, что мне нужно, я бы не отправил вопрос. –

+0

Вы посмотрели рабочий образец Cheesebarons на его git repo? https://github.com/Cheesebaron/ViewPagerIndicator – jaymarvels

ответ

4

Несмотря на то, что существует другой вопрос, здесь есть решение, которое не требует использования фрагмента изображения для простого слайдера. 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; 
    } 
} 
Смежные вопросы