我想創建一個包含可縮放視圖的ViewPager,例如網頁。如何在ViewPager中創建可縮放頁面?
我的問題是:
當用戶放大(縮放)所顯示的來看,ViewPager不應一扔對diplayed視圖的左邊或右邊的頁面,取而代之的是,平移方法由我定義應就這一觀點開展工作。我知道在視圖分頁器中有一個requestDisallowOnTouchIntercept方法,但似乎不能在任何地方工作,而不是onTouch方法。
請提供一些有效的解決方案。
請勿張貼this link爲你的答案
我想創建一個包含可縮放視圖的ViewPager,例如網頁。如何在ViewPager中創建可縮放頁面?
我的問題是:
當用戶放大(縮放)所顯示的來看,ViewPager不應一扔對diplayed視圖的左邊或右邊的頁面,取而代之的是,平移方法由我定義應就這一觀點開展工作。我知道在視圖分頁器中有一個requestDisallowOnTouchIntercept方法,但似乎不能在任何地方工作,而不是onTouch方法。
請提供一些有效的解決方案。
請勿張貼this link爲你的答案
我不能給你不知道你是如何實現的縮放視圖,但假設你有跟蹤您的視圖是否被放大的能力,一個確切的答案您可以在觸摸事件到達ViewPager之前選擇性地取消觸摸事件。它會是這個樣子:
boolean isZoomedIn;
viewPager.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
if (isZoomedIn)
{
// The view is zoomed in, so we want to handle this event
// before it gets to the ViewPager so the view can pan
// around freely.
return true;
}
else
{
// The view is zoomed out; let the ViewPager react normally.
return false;
}
}
});
你可以從那裏票友,跟蹤,無論您的放大視圖是在極端的左邊或右邊,然後讓ViewPager的觸摸事件正常,如果完成指針的運動分別向左或向右。然後,您可以允許用戶滑動到下一頁,而無需再次縮小。您可以通過MotionEvent對象的各種屬性瞭解觸摸如何移動的所有信息。
您可能還想檢查event.getPointerCount(),如果它大於一個,則返回True,以便ViewPager在您執行縮放時不會四處移動。
它跟蹤和計算所有變量有點複雜,但它是相對簡單的數學運算,結果歸結爲您希望ViewPager忽略的事件返回True,您希望ViewPager忽略的事件False。
感謝您的幫助,但我的問題是通過viewPager.disallowOnTouchIntercept(true)解決的,它阻止viewPager在我不想要的情況下跟蹤觸摸事件。 –