我在我的 Android 应用程序中有一个自定义视图,它使用 ScaleGestureDetector.SimpleOnScaleGestureListener 来检测用户何时想要通过两根手指捏合或捏合来缩放视图。这很好用,直到我尝试在 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 取决于反射是否告诉您该类是可访问的...
但我不确定从那里去哪里。任何指导或示例代码将不胜感激,如果不清楚我在问什么,请告诉我。