2016-10-07 13 views
2

Androidギャラリーは廃止予定ですので、ViewPagerを使用する必要があります。私はXamarin.Formsのコードサンプルしか見つけられませんでしたので、誰かがXamarin.Androidのコードサンプルを手伝ってもらえたらうれしいです。Xamarin.Android ViewPagerを使用してスワイプブル画像ギャラリーを作成するにはどうすればよいですか?

私は写真をクリックする必要がないので、私の質問はClick on Viewpager Xamarin Androidとは異なります。ギャラリー内の画像をスワイプするだけでした。

+0

xamarin.androidでネイティブviewpagesを作成する方法をお見せするので、多くのチュートリアルがあります。それは本当に包括的です。いくつかのGoogle。 – jaymarvels

+0

もし私が必要とするものがあれば、私はその質問を掲載しませんでした。 –

+0

彼のgit repoでCheesebaronsの作業サンプルを見ましたか? 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; 
    } 
} 
関連する問題