2011年5月25日 星期三

建立一個可以滑動的多圖片Gallary

1.目標:建立一個很多圖串起來能夠滑動的物件
2.xml:裡面要擺一個gallary物件,並且在drawable資料夾裡放入想擺的圖片
3.實作:
public class checkmain extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.checkmain);
//取得GALLARY物件
((Gallery) findViewById(R.id.photogallary)).setAdapter(new ImageAdapter2(this));
}

class ImageAdapter2 extends BaseAdapter
{ 
/* 類別成員 myContext為Context父類別 */ 
private Context myContext; 

/*使用R.drawable裡的圖片作為圖庫來源,型態為整數陣列*/
private int[] myImageIds =
{ 
//photoxx是圖片檔名,跟擺在drawable資料夾裡的一樣
R.drawable.photo1,
R.drawable.photo2,
R.drawable.photo3, 
R.drawable.photo4,
R.drawable.photo5,
}; 
/* 建構子只有一個參數,即要儲存的Context */ 
public ImageAdapter2(Context c) { this.myContext = c; } 

/* 回傳所有已定義的圖片總數量 */ 
public int getCount() { return this.myImageIds.length; } 

/* 利用getItem方法,取得目前容器中影像的陣列ID */ 
public Object getItem(int position) { return position; } 
public long getItemId(int position) { return position; }

/* 取得目前欲顯示的影像View,傳入陣列ID值使之讀取與成像 */ 
public View getView(int position, View convertView, ViewGroup parent)
{ 
/* 建立一個ImageView物件 */
ImageView i = new ImageView(this.myContext);

i.setImageResource(this.myImageIds[position]);
i.setScaleType(ImageView.ScaleType.FIT_XY); 

/* 設定這個ImageView物件的寬高,單位為dip */ 
i.setLayoutParams(new Gallery.LayoutParams(120, 120)); 
return i; 
} 

/*依據距離中央的位移量 利用getScale回傳views的大小(0.0f to 1.0f)*/
public float getScale(boolean focused, int offset)
{ 
/* Formula: 1 / (2 ^ offset) */ 
return Math.max(0,1.0f/(float)Math.pow(2,Math.abs(offset)));
} 
}
}

沒有留言:

張貼留言