Android基礎篇之ImageSwitcher與Gallery
2011-05-19 16:16:15
自己製作一個圖片瀏覽器的時候ImageSwitcher與Gallery組合使用是一個比較簡遍的方法,現在我們藍看一下他們的基本用法。
1.配置布局檔案 main.xml
<?xml version="1.0" encoding="utf-8"?><br /><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent"<br /> ><br /> <ImageSwitcher<br /> android:id="@+id/imageSwitcher"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_centerInParent="true"/><br /> <Gallery<br /> android:id="@+id/gallery"<br /> android:layout_width="fill_parent"<br /> android:layout_height="wrap_content"<br /> android:spacing="8dp"<br /> android:layout_alignParentBottom="true"/><br /></RelativeLayout><br />
2.程式主要代碼 MainActivity.java
package com.yin.picture_view;</p><p>import android.app.Activity;<br />import android.content.Context;<br />import android.os.Bundle;<br />import android.view.View;<br />import android.view.ViewGroup;<br />import android.widget.AdapterView;<br />import android.widget.AdapterView.OnItemSelectedListener;<br />import android.widget.BaseAdapter;<br />import android.widget.Gallery;<br />import android.widget.ImageSwitcher;<br />import android.widget.ImageView;<br />import android.widget.ViewSwitcher.ViewFactory;<br />public class MainActivity extends Activity {</p><p>//顯示圖片的資源<br />private static int[] images = {<br />R.drawable.s0 , R.drawable.s1,<br />R.drawable.s2 , R.drawable.s3,<br />R.drawable.s4 , R.drawable.s5,<br />R.drawable.s6 , R.drawable.s7,<br />R.drawable.s8 , R.drawable.s9<br />};<br /> Gallery gallery;<br /> ImageSwitcher is;<br /> public void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.main);<br /> gallery = (Gallery) findViewById(R.id.gallery);<br /> is = (ImageSwitcher) findViewById(R.id.imageSwitcher);</p><p> gallery.setAdapter(new ImageAdapter(this));<br /> //讓選定的圖片在中心顯示<br /> gallery.setSelection(images.length/2);</p><p> //為Gallery綁定監聽器;<br /> gallery.setOnItemSelectedListener(new OnItemSelectedListener() {<br />public void onItemSelected(AdapterView<?> parent, View view,<br />int position, long id) {<br />//當在Gallery中選定一張圖片是 ImageSwitcher同步顯示同一張<br />//position%images.length 為了讓圖片迴圈顯示<br />is.setImageResource(images[position%images.length]);</p><p>}<br />public void onNothingSelected(AdapterView<?> parent) {</p><p>}<br />});</p><p> is.setFactory(new ImageFactory(this));</p><p> }</p><p> private class ImageAdapter extends BaseAdapter{<br /> private Context context;<br />public ImageAdapter(Context context) {<br />this.context = context;<br />}<br />//可以return images.lenght(),在這裡返回Integer.MAX_VALUE<br />//是為了使圖片迴圈顯示<br />public int getCount() {<br />return Integer.MAX_VALUE;<br />}<br />public Object getItem(int position) {<br />return null;<br />}<br />public long getItemId(int position) {<br />return 0;<br />}<br />public View getView(int position, View convertView, ViewGroup parent) {<br />ImageView iv = new ImageView(context);<br />iv.setImageResource(images[position%images.length]);<br />iv.setLayoutParams(new Gallery.LayoutParams(90,90));<br />iv.setAdjustViewBounds(true);<br />return iv;<br />}<br /> }</p><p> private class ImageFactory implements ViewFactory{<br /> private Context context;<br /> public ImageFactory(Context context){<br /> this.context = context;<br /> }<br />public View makeView() {<br />ImageView iv = new ImageView(context);<br />iv.setLayoutParams(new ImageSwitcher.LayoutParams(200,200));<br />return iv;<br />}<br /> }<br />}