【问题标题】:Android multitouch in supported devices支持设备中的 Android 多点触控
【发布时间】:2011-11-06 19:19:15
【问题描述】:

假设我想在我的应用中使用缩放图像视图 是否可以在支持多点触控(API 7+)的手机上添加多点触控事件监听器,而在旧手机上显示缩放按钮?

这可以在单个应用版本中完成,还是我需要多个应用版本和多个 APK?

【问题讨论】:

  • 是的,但你必须为此使用反射

标签: android multi-touch


【解决方案1】:

您可以在应用启动时检查您的 api 级别,并在此信息上设置正确的侦听器和按钮。

可能是this site对你有用

示例:

    if(Integer.parseInt(Build.VERSION.SDK) >= 7)
    {
        //add multi touch listeners
    }
    else
    {
        // add zoom buttons
    }

【讨论】:

  • 我认为仅仅检查 API 级别是不够的。有些设备支持 API 7+,但没有多点触控。
【解决方案2】:

在这种情况下,您不需要多个 APK。

您可以在代码中检查多点触控的可用性:

if (Integer.parseInt(Build.VERSION.SDK) >= 7) {
    PackageManager pm = context.getPackageManager();
    boolean hasMultitouch = 
        pm.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH);
    if (hasMultitouch) {
        // set multitouch event listeners
    } else {
        // set zoom buttons
    }
} else {
    // set zoom buttons
}

您可以在不使用context 的情况下从您的活动(服​​务)中获取PackageManagerPackageManager pm = getPackageManager();

您可以检查三种类型的多点触控。

更新:您必须在检查多点触控可用性之前检查 API 版本。 FEATURE_TOUCHSCREEN_MULTITOUCH 仅适用于 API 7。我已更新代码示例。

【讨论】:

  • 当我发现多点触控可用时怎么办?当我在代码中使用多点触控 API 7 方法和类时,应用程序不会在 API 4 上崩溃吗?
  • 它当然会崩溃,但它不需要在 API 4 上使用多点触控 API 7 方法。您已经提出了解决方案:如果不支持多点触控,则不要使用它并显示缩放按钮。
  • 但是代码将使用 API 7 方法编译,在使用 API 4 的设备上会发生什么?他们不会拒绝安装应用程序吗?
  • 虽然没有调用此代码(API 7 方法),但一切都会好起来的。无论如何,您可以检查它在模拟器中的工作方式。
  • 我不应该同时检查 FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT 和 JAZZHAND 吗?我的意思是,如果系统有 DISTINCT 或 HAZZHAND,它会自动有 FEATURE_TOUCHSCREEN_MULTITOUCH 吗?
猜你喜欢
  • 2011-07-31
  • 1970-01-01
  • 2012-03-15
  • 2013-09-14
  • 1970-01-01
  • 2011-02-10
  • 2016-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多