Gallery在滑动的时候有一个脱手时候的速度,这个速度将会影响Gallery滑动的惯性,有时候我们需要对这个惯性进行处理,这个时候我们就得自己定义View了,自定义个Gallery继承Gallery,并且重写onFling()方法,如下:
public class GalleryDemo extends Gallery {
public GalleryDemo(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
// TODO Auto-generated method stub
return super.onFling(e1, e2, velocityX / 4, velocityY);
}
}
值得注意的是自己定义控件的时候得使用 public GalleryDemo(Context context, AttributeSet attrs)构造方法,要不则会出现莫名其妙的异常。
下面就是去使用这个自定义的Gallery了:
public class GalleryDemoActivity extends Activity {
private Gallery gl_main;
private GalleryAdapter adapter;
private int[] pics = new int[] { R.drawable.a1, R.drawable.a2, R.drawable.a3, R.drawable.a4, R.drawable.a5,
R.drawable.a6, R.drawable.a7, R.drawable.a8, R.drawable.a9, R.drawable.a10 };
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gl_main = (Gallery) findViewById(R.id.gl_main);
adapter = new GalleryAdapter();
//gl_main.
gl_main.setAdapter(adapter);
}
private class GalleryAdapter extends BaseAdapter {
@Override
public int getCount() {
// TODO Auto-generated method stub
return pics.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ImageView iv = new ImageView(GalleryDemoActivity.this);
iv.setLayoutParams(new Gallery.LayoutParams(160, 320));
iv.setImageResource(pics[position]);
return iv;
}
}
}