1 package com.example.adaptertest.gallery; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.os.Handler; 6 import android.os.Handler.Callback; 7 import android.os.Message; 8 import android.view.View; 9 import android.widget.AdapterView; 10 import android.widget.AdapterView.OnItemClickListener; 11 import android.widget.AdapterView.OnItemSelectedListener; 12 import android.widget.Gallery; 13 import android.widget.Toast; 14 15 import com.example.adaptertest.R; 16 17 @SuppressWarnings("deprecation") 18 public class GalleryActivity extends Activity { 19 int[] images = { R.drawable.a1, R.drawable.a2, R.drawable.a3, R.drawable.a4 }; 20 // 可以用AdapterViewFlipper替换 21 Gallery gallery; 22 int counter = 0; 23 24 @Override 25 protected void onCreate(Bundle savedInstanceState) { 26 super.onCreate(savedInstanceState); 27 setContentView(R.layout.gallerytest); 28 29 gallery = (Gallery) findViewById(R.id.gallery_id); 30 gallery.setAdapter(new GalleryAdapter(GalleryActivity.this, images)); 31 handler.sendEmptyMessageDelayed(1, 5000); 32 // 得到gallery选中的item的ID 33 // gallery.getSelectedItemId(); 34 gallery.setOnItemClickListener(new OnItemClickListener() { 35 36 @Override 37 public void onItemClick(AdapterView<?> parent, View view, 38 int position, long id) { 39 Toast.makeText(GalleryActivity.this, position + "", 40 Toast.LENGTH_LONG).show(); 41 // 移除消息队列(点击图片事停止图片自动滚动) 42 handler.removeMessages(1); 43 } 44 }); 45 // 最前端的图片 46 gallery.setOnItemSelectedListener(new OnItemSelectedListener() { 47 48 @Override 49 public void onItemSelected(AdapterView<?> parent, View view, 50 int position, long id) { 51 Toast.makeText(GalleryActivity.this, position + "", 52 Toast.LENGTH_LONG).show(); 53 54 } 55 56 @Override 57 public void onNothingSelected(AdapterView<?> parent) { 58 Toast.makeText(GalleryActivity.this, "nothing", 59 Toast.LENGTH_LONG).show(); 60 } 61 }); 62 63 } 64 65 Handler handler = new Handler(new Callback() { 66 67 @Override 68 public boolean handleMessage(Message msg) { 69 if (msg.what == 1) { 70 counter++; 71 if (counter >= images.length) { 72 counter = 0; 73 } 74 // 更换图片 75 gallery.setSelection(counter); 76 // 继续发送消息到队列(类似递归) 77 handler.sendEmptyMessageDelayed(1, 5000); 78 } 79 return true; 80 } 81 }); 82 }
package com.example.adaptertest.gallery; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Gallery; import android.widget.ImageView; import android.widget.ImageView.ScaleType; public class GalleryAdapter extends BaseAdapter { private int[] images; private Context context; public GalleryAdapter(Context convertView, int[] images) { this.context = convertView; this.images = images; } @Override public int getCount() { // TODO Auto-generated method stub return images.length; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return images[position]; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @SuppressWarnings("deprecation") @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ImageView imageView = new ImageView(context); imageView.setImageResource(images[position]); imageView.setScaleType(ScaleType.FIT_XY); imageView.setLayoutParams(new Gallery.LayoutParams(500, 500)); return imageView; } }
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" > 6 7 <Gallery 8 android:id="@+id/gallery_id" 9 android:layout_width="wrap_content" 10 android:layout_height="wrap_content" 11 android:spacing="-20px" 12 android:unselectedAlpha="150" /> 13 14 </LinearLayout> 15 <!-- android:unselectedAlpha="150" 未被选择的图片的透明度 --> 16 <!-- android:spacing="-20px" 间隔 -->