Android多点触控在支持的设备上

3

假设我希望在我的应用程序中添加一个带有缩放功能的图像视图,是否可以在支持多点触控(API 7+)的手机上添加多点触摸事件监听器,而在旧手机上显示缩放按钮?

这是否可以在单个应用程序版本中完成,还是需要多个应用程序版本和多个APK文件?


是的,但你必须使用反射来实现。 - ingsaurabh
2个回答

9

在这种情况下,您不需要多个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
}

您可以从您的活动(服务)中获取PackageManager而不使用contextPackageManager pm = getPackageManager(); 有三种类型的多点触控可以检查。 更新:您必须在多点触控可用性检查之前检查API版本。 FEATURE_TOUCHSCREEN_MULTITOUCH仅适用于API 7。我已经更新了代码示例。

当我发现多点触控可用时,我该怎么办?如果我在代码中使用多点触控API 7的方法和类,那么在API 4上使用时,应用程序不会崩溃吗? - Axarydax
当然会崩溃,但在API 4上不需要使用Multitouch API 7方法。你已经提出了一个解决方案:如果不支持Multitouch,则不要使用它并显示缩放按钮。 - Sergey Glotov
但是该代码将使用API 7方法进行编译,在API 4设备上会发生什么? 它们不会拒绝安装应用程序吗? - Axarydax
只要不调用这段代码(API 7方法),一切都会没问题。无论如何,您可以在模拟器中检查它的工作原理。 - Sergey Glotov
1
我应该同时检查FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT和JAZZHAND吗?我的意思是,如果系统有DISTINCT或HAZZHAND,它是否自动具有FEATURE_TOUCHSCREEN_MULTITOUCH? - Pavel Alexeev
显示剩余2条评论

0

你可以在应用程序启动时检查你的 API 级别,并根据此信息设置正确的监听器和按钮。

也许 这个网站 对你有用

例子:

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

我认为仅仅检查API级别是不够的。有些设备虽然API等级达到7以上,但是却没有多点触控功能。 - Sergey Glotov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接