重写Gallery,解决惯性问题……
package com.app.test9; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.widget.Gallery; public class GalleryTest extends Gallery { public GalleryTest(Context context, AttributeSet attrs) { super(context, attrs); } //冲洗这个方法返回flase,就可以去掉gallery的惯性,每次只滑动一张 public boolean onFling (MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return false; } }
Gallery自动播放
public class AoutGalleryActivity extends Activity { private GalleryTest mGalleryItem; private static int[] mThumbIds = { R.drawable.g1, R.drawable.test, R.drawable.java,R.drawable.filepicker_return,R.drawable.more_feedback}; Timer timer; Handler handler; int current = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setupViews(); init(); handler = new Handler() { public void handleMessage(Message msg) { if(msg.what == 0x123) { //设置gallery显示第几张图片 mGalleryItem.setSelection(current); } } }; } private void init() { timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { current++; if(current>=5) //5是存图片的数组,数组的长度 { current = 0;//此处如果需要gallery循环播放,就需要这么写 } Message msg = new Message(); msg.what = 0x123; handler.sendMessage(msg); } }, 0, 1000); }
private void setupViews() { mGalleryItem = (GalleryTest) findViewById(R.id.gallery); show = (TextView)findViewById(R.id.text); final ImageAdapter adapter = new ImageAdapter(this,mThumbIds); mGalleryItem.setAdapter(adapter); mGalleryItem.setSelection(2); mGalleryItem.setOnItemSelectedListener(new OnItemSelectedListener() { public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { //show.setText(names[position]); } public void onNothingSelected(AdapterView<?> parent) { } }); }
适配器
如果需要gallery 循环播放,就要 position % mThumbIds.length 写
private final static class ImageAdapter extends BaseAdapter { private Context mContext; int[] mThumbIds; public ImageAdapter(Context c,int[] mThumbIds) { mContext = c; this.mThumbIds = mThumbIds; } public int getCount() { return Integer.MAX_VALUE; } public Object getItem(int position) { return mThumbIds[position % mThumbIds.length]; } public long getItemId(int position) { return position % mThumbIds.length; } public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView; if (convertView == null) { imageView = new ImageView(mContext); imageView.setAdjustViewBounds(true); imageView.setLayoutParams(new Gallery.LayoutParams(360,240)); imageView.setScaleType(ImageView.ScaleType.FIT_XY); } else { imageView = (ImageView) convertView; } imageView.setImageResource(mThumbIds[position % mThumbIds.length]); return imageView; } }