ユーザーが 2 本の指でピンチインまたはピンチアウトしてビューを拡大または縮小するタイミングを検出するために、ScaleGestureDetector.SimpleOnScaleGestureListener を使用する Android アプリのカスタム ビューがあります。これは、クラスが見つからないためにすぐにクラッシュする Android 2.1 デバイスでテストするまではうまく機能します。
2.2+ でピンチ ズームをサポートし、デフォルトでピンチ ズームなし <2.1 をサポートしたいと思います。問題は、私が宣言できないことです:
private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener
{
@Override
public boolean onScale(ScaleGestureDetector detector)
{
MyGameActivity.mScaleFactor *= detector.getScaleFactor();
// Don't let the object get too small or too large.
MyGameActivity.mScaleFactor = Math.max(0.1f, Math.min(MyGameActivity.mScaleFactor, 1.0f));
invalidate();
return true;
}
}
Android <2.1ではまったく。Javaリフレクションを使用してこれを回避する賢い方法はありますか? リフレクションを介してメソッドが存在するかどうかをテストする方法は知っていますが、クラスが存在するかどうかをテストできますか? どうすれば私のものを手に入れることができますか
private ScaleGestureDetector mScaleDetector;
API が ScaleGestureDetector クラスを認識できない場合、クラスの先頭で宣言されていますか?
次のようなある種の内部インターフェースを宣言できるはずです。
public interface CustomScaleDetector
{
public void onScale(Object o);
}
そしてどういうわけか...リフレクションがクラスにアクセスできることを示しているかどうかに応じて、ScaleGestureDetectorを拡張してみてください...
しかし、そこからどこへ行けばいいのかよくわかりません。ガイダンスやサンプルコードをいただければ幸いです。私が求めているものが明確でない場合はお知らせください。