重写Gallery中方法去处理Gallery滑动时的惯性

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

转载于:https://my.oschina.net/keeponmoving/blog/64069

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值