重写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;
}
}