我有一個ViewPager的圖像,我想讓它滑動以下列方式:
如果我點擊屏幕的右側(左側)轉到上一個(下一個)圖像。這就像屏幕是兩半,每一半移動到點擊方向。ViewPager滑動到下一張圖片時,點擊屏幕右側
我如何能實現呢?
我有一個ViewPager的圖像,我想讓它滑動以下列方式:
如果我點擊屏幕的右側(左側)轉到上一個(下一個)圖像。這就像屏幕是兩半,每一半移動到點擊方向。ViewPager滑動到下一張圖片時,點擊屏幕右側
我如何能實現呢?
可以get Disaplay width
然後你就可以在你的viewpager覆蓋onTouchEvent。
當您獲得MotionEvent對象時 - 您可以獲得「水龍頭」座標,並且您將能夠了解屏幕用戶點擊並處理它的哪一側。
爲您的ViewPager
或ViewPager
項目的contentview設置觸摸監聽器。
取屏幕/視圖寬度的一半,檢查event.getX()
是否大於半值,如果是,則轉到下一個,否則轉到上一個。
@Override
public boolean onTouch(View v, MotionEvent ev) {
if(ev.getAction() == MotionEvent.ACTION_DOWN){
mDownX = ev.getX();
mDownY = ev.getY();
isOnClick = true;
}else if(ev.getAction() == MotionEvent.ACTION_UP){
if (isOnClick) {
if(ev.getX() > mViewPager.getWidth()/2) {
//go to next
}else{
//go to previous
}
return true;
}
}else if(ev.getAction() == MotionEvent.ACTION_MOVE){
if (isOnClick && (Math.abs(mDownX - ev.getX()) > DRAG_THRESHOLD || Math.abs(mDownY - ev.getY()) > DRAG_THRESHOLD)) {
isOnClick = false;
return false;
}
}
return false
}
這會干擾ViewPager的正常滑動嗎? – Omar
是的。看到我編輯的答案。 –
這是否會干擾ViewPager的正常滑動? – Omar
這取決於。當您重寫onTouchEvent時,您應該返回布爾標誌:如果事件已處理,則返回True,否則返回false。 如果你打電話給'return super.onTouchEvent(event)' - 兩種方法都可以工作(我不確定,但你可以試試)。 – x90