2011-10-07 203 views
4

我試圖實現onscalegesturelistener。 我的問題是,SimpleOnScaleGestureListener只接收onScaleBegin事件。 其他事件未被報告。我使用的是Nexus One的測試SimpleOnScaleGestureListener只接收onScaleBegin事件

public class ZoomHandler extends SimpleOnScaleGestureListener { 

public float zoom; 

public ZoomHandler(float zm) { 
    this.zoom = zm; 
} 

public boolean onScale(ScaleGestureDetector arg0) { 
    Log.i("SCALE", "onscale " + arg0.getScaleFactor()); 
    this.zoom *= arg0.getScaleFactor(); 

    // Don't let the object get too small or too large. 
    this.zoom = Math.max(0.1f, Math.min(this.zoom, 5.0f)); 

    return true; 
} 

@Override 
public boolean onScaleBegin(ScaleGestureDetector arg0) { 
    Log.i("SCALE", "onscalebegin " + arg0.getScaleFactor()); 
    return false; 
} 

@Override 
public void onScaleEnd(ScaleGestureDetector arg0) { 
    Log.i("SCALE", "onscaleend " + arg0.getScaleFactor()); 
} 

} 

在活動中,我這樣做:

.... 

mScaleDetector = new ScaleGestureDetector(this , new ZoomHandler(this.zoom)); 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    this.mScaleDetector.onTouchEvent(event); 
    ..... 
} 
.... 

非常感謝

回答

15

onScaleBegin()和onScale的返回值()控制是否繼續該序列。如果onScaleBegin()返回false,就像你的那樣,其他的都不會運行。