1 在 xml 布局中添加 Galleryactivity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <Gallery android:id="@+id/gallery" android:layout_width="match_parent" android:layout_height="match_parent"/></LinearLayout>
2 自訂 ImageAdapterImageAdapter.java
package com.example.gallery;import java.util.List;import android.content.Context;import android.content.res.TypedArray;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.Gallery;import android.widget.ImageView;@SuppressWarnings("deprecation")public class ImageAdapter extends BaseAdapter { private Context context; private List<Integer> list; private TypedArray typedArray; private int item_background; public ImageAdapter(Context context ,List<Integer> list) { this.context=context; this.list=list; this.typedArray = context.obtainStyledAttributes(R.styleable.gallery_style); item_background=typedArray.getResourceId(R.styleable.gallery_style_android_galleryItemBackground, 0); typedArray.recycle(); } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView = new ImageView(context); //設定顯示的圖片 imageView.setImageResource(list.get(position)); //設定伸縮規格 imageView.setScaleType(ImageView.ScaleType.FIT_XY); //設定布局參數 imageView.setLayoutParams(new Gallery.LayoutParams(150,100)); //設定背景邊框 imageView.setBackgroundResource(item_background); return imageView; }}
3 每個 ImageView 的背景參數res/values/attrs.xml
<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="gallery_style"> <attr name="android:galleryItemBackground" /> </declare-styleable></resources>
4 在 MainActivity 中綁定資料與設定監聽MainActivity.java
package com.example.gallery;import java.util.ArrayList;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.Gallery;import android.widget.Toast;@SuppressWarnings("deprecation")public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Gallery gallery=(Gallery)findViewById(R.id.gallery); ArrayList<Integer>list=new ArrayList<Integer>(); list.add(R.drawable.img1); list.add(R.drawable.img2); list.add(R.drawable.img3); list.add(R.drawable.img4); list.add(R.drawable.img5); list.add(R.drawable.img6); list.add(R.drawable.img7); ImageAdapter adapter=new ImageAdapter(this,list); gallery.setAdapter(adapter); gallery.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View v,int position, long id) { Toast.makeText(getApplicationContext(), "選擇了: "+ String.valueOf(position), Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView<?> arg0) { //這裡不做響應 } }); }}
5 圖片資源註:圖片最好為 png 格式的圖片,由於jpg是壓縮後的圖片,在android 中解壓縮有可能導致記憶體溢出錯誤。 6 結果展示
註:轉載請註明出處 :) 畢竟代碼是一個一個敲出來的啊,O(∩_∩)O~