更新:何が起きているのかを把握しました。コメントを参照してください。ScaleGestureDetector.OnScaleGestureListener.onScaleEnd()メソッドがヒットしない
スケールジェスチャを受け取るまで、すべてのジェスチャを最初の子に渡すViewSwitcherを作成しようとしています。その子が最初の子に戻ったときに、その子が完全に再びズームアウトされるまで、2番目の子に渡します。私のサブクラスはScaleGestureDetectorを持って、私は非常に単純なリスナー行わ:あなたはそれがないすべては、その後、所有者クラス内のメソッドにいくつかのイベントを渡し、建設上の所有者オブジェクトへの参照を取ることで見ることができるように
protected class OnScaleModeSwitcher implements ScaleGestureDetector.OnScaleGestureListener
{
protected PageFlipSwitcher owner;
public OnScaleModeSwitcher(PageFlipSwitcher newOwner)
{
super();
owner = newOwner;
}
@Override
public boolean onScale(ScaleGestureDetector detector) {
return false;
}
@Override
public boolean onScaleBegin(ScaleGestureDetector detector) {
owner.onScaleBegin();
//returning false here causes the rest of the gesture to be ignored.
return false;
}
@Override
public void onScaleEnd(ScaleGestureDetector detector) {
owner.onScaleEnd();
}
}
を。ただし、コードによってonScaleEnd()に到達していません。
私はonInterceptTouchEventがちょっとしたことに気づいています。私はできるだけ密接にそれのためのAndroidのドキュメントでの提案に従い、
@Override
public boolean onInterceptTouchEvent(MotionEvent ev)
{
onTouchEvent(ev);
return false;
}
@Override
public boolean onTouchEvent(MotionEvent ev)
{
//mode is the name of the ScaleGestureDetector
mode.onTouchEvent(ev);
//this code just passes events to the children
//it seems to work OK
if(zoomActive)
{
//ZoomSwitcher
getChildAt(1).onTouchEvent(ev);
}
else
{
//Gallery
getChildAt(0).onTouchEvent(ev);
}
return true;
}
を持って、私はGestureDetectorがACTION_UPイベントを受信しないことをどこかに読んで:
Android: How to detect when a scroll has ended
は何があるということですここで起こっている?もしそうなら、onScaleEnd()メソッドのポイントは何ですか?
EDIT:
私はこれを働いている:私のメソッドはfalseを返すので、それはあります。 Eclipseはいくつかのスタブを自動的に実装しましたが、返された値を変更しませんでした。