У меня есть пользовательский вид в моем приложении для Android, в котором используется ScaleGestureDetector.SimpleOnScaleGestureListener, чтобы определить, когда пользователь хочет масштабировать вид через 2-х пальцевый щелчок или вне. Это отлично работает, пока я не попробовал тестирование на устройстве Android 2.1, на котором он немедленно сбой, потому что он не может найти класс.Как использовать класс API уровня 8, когда это возможно, и ничего не делать иначе
Я хотел бы поддержать увеличение пинча на 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;
}
}
вообще на андроид < 2.1. Есть ли умный способ обойти это с помощью java-рефлексии? Я знаю, как проверить, существует ли метод через отражение, но могу ли я проверить, существует ли класс? Как я могу иметь мой
private ScaleGestureDetector mScaleDetector;
заявил в верхней части моего класса, если API не может даже видеть класс ScaleGestureDetector?
Похоже, что я должен быть в состоянии объявить какой-то внутренний интерфейс, как:
public interface CustomScaleDetector
{
public void onScale(Object o);
}
А потом как-то ... попробовать расширить ScaleGestureDetector в зависимости от того, если отражение говорит вам, что класс доступен ...
Но я не совсем уверен, куда идти оттуда. Любое руководство или примерный код будут оценены, сообщите мне, если не ясно, что я прошу.
Используйте * android.os.Build.VERSION.SDK_INT * постоянная –