ImageViewTouch (ImageViewZoom)に問題があります。
特に ImageViewTouch クラスの次の行:
mGestureDetector = new GestureDetector( getContext(), mGestureListener, null, true );
電話で利用可能な GestureListener がある場合、すべてが正常に機能します。無い場合は多少の誤差があります。
この行を次のように変更して修復を試みました。
try {
mGestureDetector = new GestureDetector( getContext(), mGestureListener, null, true );
}
catch(Exception e1) {
try {
mGestureDetector = new GestureDetector( getContext(), mGestureListener )
}
catch(Exception e2) {
System.out.println("No gesture detector.");
}
}
この行も変更しました:
if ( !mScaleDetector.isInProgress() ) mGestureDetector.onTouchEvent( event );
これに:
if ( ( !mScaleDetector.isInProgress() ) && ( mGestureDetector != null ) ) mGestureDetector.onTouchEvent( event );
私の見解では、この変更は、以前はすべてうまく機能していた電話に影響を与えるべきではありません。しかし、今は自分の電話で (以前のバージョンではすべて正常に動作していました)、ダブルタップ ズームを使用できません。
なぜそのように機能するのか分かりますか?古い電話でも動作させるにはどうすればよいですか?