Xamarin - Galeria
Galeria to typ widoku używany do pokazywania elementów na poziomej liście przewijanej. Wybrany element jest następnie wyświetlany na środku. W tym przykładzie zamierzasz utworzyć galerię zawierającą obrazy, które można przewijać w poziomie. Obraz po kliknięciu wyświetli numer dla wybranego obrazu.
Przede wszystkim utwórz nowy projekt i nadaj mu nazwę, np. Gallery App Tutorial. Zanim zaczniesz kodować, wklej 7 obrazów do plikuresource /drawable folder. Nawigować domain.axml pod resources folder oraz galeria pomiędzy znacznikami układu liniowego.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#d3d3d3">
<Gallery
android:id="@+id/gallery"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dp" />
</LinearLayout>
Utwórz nową klasę o nazwie ImageAdapter. Ta klasa będzie używana do wiązania obrazów z galerią, którą stworzyliśmy powyżej.
Pierwszym krokiem jest dodanie klasy zawierającej kontekst cont których używamy do przechowywania pól.
public class ImageAdapter : BaseAdapter {
Context cont;
public ImageAdapter(Context ct) {
cont = ct;
}
}
Następnie liczymy listę tablic, która zawiera nasz obraz i zwracamy jego rozmiar.
public override int Count {
get {
return imageArraylist.Length;
}
}
W kolejnym kroku otrzymujemy pozycję przedmiotu. Poniższy kod pokazuje, jak to zrobić.
public override Java.Lang.Object GetItem(int position) {
return null;
}
public override long GetItemId(int position) {
return 0;
}
W następnym kroku tworzymy plik imageview dla elementów, do których odwołuje się adapter.
public override View GetView(int position,View convertView, ViewGroup parent) {
ImageView img = new ImageView(cont);
img.SetImageResource(imageArraylist[position]);
img.SetScaleType(ImageView.ScaleType.FitXy);
img.LayoutParameters = new Gallery.LayoutParams(200, 100);
return img;
}
W ostatnim kroku tworzymy odniesienie do obrazów, które dodaliśmy w resources.drawableteczka. Aby to zrobić, tworzymy tablicę do przechowywania kolekcji obrazów. Poniższy kod wyjaśnia, jak to zrobić.
int[] imageArraylist = {
Resource.Drawable.img1,
Resource.Drawable.img2,
Resource.Drawable.img3,
Resource.Drawable.img4,
Resource.Drawable.img5,
Resource.Drawable.img6,
};
}
Następnie przechodzimy do mainActivity.cs i wstaw następujący kod w metodzie OnCreate ().
Gallery myGallery = (Gallery)FindViewById<Gallery>(Resource.Id.gallery);
myGallery.Adapter = new ImageAdapter(this);
myGallery.ItemClick += delegate(object sender, AdapterView.ItemClickEventArgs args) {
Toast.MakeText(this,
args.Position.ToString(), ToastLength.Short).Show();
}
Na koniec skompiluj i uruchom aplikację, aby wyświetlić dane wyjściowe.