In Android the Gallery control is a selection control that displays items in a horizontal gallery. the items in the gallery appear beside each other. they can appear separated by a pre-defined space.
remember that there is a sample demo application for the gallery to download at the end of the post
we can use the gallery to display String items using a simple ArrayAdapter.
so lets see how to create a gallery that displays the word "Hello" in several languages:
the layout:
and in the OnCreate method
the gallery will be like this

we can increse the spacing between the items by increasing the value of android:spacing property.
we can display a scroll bar to indicate the position of the current selected item in the gallery like this:

setting the android:scrollbarFadeDuration="0" makes the scroll bar always visible.
The android:scrollX property defines the initial scroll offset of the scroll bar which is the initial distance that the gallery is scrolled for.
Handling Gallery Events
since the gallery is a selction Control (a adapter view) so it can register a OnItemSelectedListener to handle the selection of items within the gallery.
now the final step is to add two navigation buttons: Next and Previous to navigate throught the items in the gallery.
the layout is gonna be like this:

now in order to keep track of the index of the currently selected item we need to define two variables
and the navigation buttons click handlers:
you can download a sample program from here
remember that there is a sample demo application for the gallery to download at the end of the post
we can use the gallery to display String items using a simple ArrayAdapter.
so lets see how to create a gallery that displays the word "Hello" in several languages:
the layout:
01 | <?xml version="1.0" encoding="utf-8"?> |
02 | <LinearLayout >="http://schemas.android.com/apk/res/android" |
03 | android:orientation="vertical" |
04 | android:layout_width="fill_parent" |
05 | android:layout_height="fill_parent" |
06 | > |
07 | <TextView |
08 | android:layout_width="fill_parent" |
09 | android:layout_height="wrap_content" |
10 | android:text="Gallery Demo" |
11 | /> |
12 | <Gallery |
13 | android:id="@+id/gallery" |
14 | android:layout_width="fill_parent" |
15 | android:layout_height="wrap_content" |
16 | android:gravity="center_horizontal" |
17 | android:spacing="100px" |
18 | |
19 | /> |
20 | </LinearLayout> |
and in the OnCreate method
01 | @Override |
02 | public void onCreate(Bundle savedInstanceState) { |
03 | super.onCreate(savedInstanceState); |
04 | setContentView(R.layout.main); |
05 | gallery=(Gallery)findViewById(R.id.gallery); |
06 | //String array holding the values |
07 | String [] text=new String[]{"Hello","Hi","Alloha","Bonjour","Hallo","¡Hola"}; |
08 | //Array adapter to display our values in the gallery control |
09 | ArrayAdapter<string> arr=new ArrayAdapter<string>(this, android.R.layout.simple_gallery_item, text); |
10 | gallery.setAdapter(arr); |
11 | } |
12 | </string></string> |
the gallery will be like this

we can increse the spacing between the items by increasing the value of android:spacing property.
we can display a scroll bar to indicate the position of the current selected item in the gallery like this:
01 | <Gallery |
02 | android:id="@+id/gallery" |
03 | android:layout_width="fill_parent" |
04 | android:layout_height="wrap_content" |
05 | android:gravity="center_horizontal" |
06 | android:spacing="100px" |
07 | android:scrollbars="horizontal" |
08 | android:scrollbarFadeDuration="0" |
09 | android:scrollX="100px" |
10 | /> |

setting the android:scrollbarFadeDuration="0" makes the scroll bar always visible.
The android:scrollX property defines the initial scroll offset of the scroll bar which is the initial distance that the gallery is scrolled for.
Handling Gallery Events
since the gallery is a selction Control (a adapter view) so it can register a OnItemSelectedListener to handle the selection of items within the gallery.
01 | final String [] text=new String[]{"Hello","Hi","Alloha","Bonjour","Hallo","¡Hola"}; |
02 | gallery.setOnItemSelectedListener(new OnItemSelectedListener() { |
03 |
04 | @Override |
05 | public void onItemSelected(AdapterView parent, View view, |
06 | int position, long id) { |
07 | // TODO Auto-generated method stub |
08 | TextView txt=(TextView)findViewById(R.id.txt); |
09 | txt.setText(text[position].toString()); |
10 | } |
11 |
12 | @Override |
13 | public void onNothingSelected(AdapterView parent) { |
14 | // TODO Auto-generated method stub |
15 | |
16 | } |
17 | }); |
now the final step is to add two navigation buttons: Next and Previous to navigate throught the items in the gallery.
the layout is gonna be like this:
01 | <?xml version="1.0" encoding="utf-8"?> |
02 | <LinearLayout >="http://schemas.android.com/apk/res/android" |
03 | android:orientation="vertical" |
04 | android:layout_width="fill_parent" |
05 | android:layout_height="fill_parent" |
06 | > |
07 | <TextView |
08 | android:layout_width="fill_parent" |
09 | android:layout_height="wrap_content" |
10 | android:text="Gallery Demo" |
11 | android:id="@+id/txt" |
12 | /> |
13 | <Gallery |
14 | android:id="@+id/gallery" |
15 | android:layout_width="fill_parent" |
16 | android:layout_height="wrap_content" |
17 | android:gravity="center_horizontal" |
18 | android:spacing="100px" |
19 | android:scrollbars="horizontal" |
20 | android:scrollbarFadeDuration="0" |
21 | android:scrollX="100px" |
22 | /> |
23 | <LinearLayout |
24 | android:layout_width="fill_parent" |
25 | android:layout_height="wrap_content" |
26 | android:orientation="horizontal" |
27 | android:layout_marginTop="5px" |
28 | > |
29 | <Button |
30 | android:text="Previous" |
31 | android:layout_width="wrap_content" |
32 | android:layout_height="wrap_content" |
33 | android:id="@+id/btnPrev" |
34 | android:onClick="onClick" |
35 | /> |
36 | <Button |
37 | android:text="Next" |
38 | android:layout_width="wrap_content" |
39 | android:layout_height="wrap_content" |
40 | android:id="@+id/btnNext" |
41 | android:onClick="onClick" |
42 | /> |
43 |
44 | </LinearLayout> |
45 | |
46 | </LinearLayout> |

now in order to keep track of the index of the currently selected item we need to define two variables
1 | //Variable to store the number of items in the gallery |
2 | int ItemsInGallery=0; |
3 | int CurrentIndex=0; |
and the navigation buttons click handlers:
01 | @Override |
02 | public void onClick(View v) { |
03 | // TODO Auto-generated method stub |
04 | switch(v.getId()) |
05 | { |
06 | case R.id.btnNext: |
07 | //Increase the index |
08 | CurrentIndex++; |
09 | //if reached the end of the gallery, then start from the first item |
10 | if(CurrentIndex>ItemsInGallery-1) |
11 | CurrentIndex=0; |
12 | gallery.setSelection(CurrentIndex,true); |
13 | txt.setText(String.valueOf(CurrentIndex)); |
14 | break; |
15 | case R.id.btnPrev: |
16 | //Decrease the index |
17 | CurrentIndex=CurrentIndex-1; |
18 | //If reached the first item, then return to the last item in the gallery |
19 | if(CurrentIndex<0) |
20 | CurrentIndex=ItemsInGallery-1; |
21 | gallery.setSelection(CurrentIndex,true); |
22 | txt.setText(String.valueOf(CurrentIndex)); |
23 | break; |
24 | } |
25 | } |
0 komentar:
Posting Komentar