如何禁用Android Wear的后退滑动功能?

20

我正在创建一款具有触摸区域的Android Wear应用程序。用户应该能够在屏幕上各个方向上移动手指(类似于笔记本电脑上的触摸板)。但是,后退滑动会使这变得有些棘手。如何解决这个问题?希望得到帮助。

如何禁用Android Wear的后退滑动?

/ Jakob

3个回答

37

在窗口样式中有一个属性可以禁用这种行为:

<style name="AppTheme" parent="@android:style/Theme.DeviceDefault.Light">
    <item name="android:windowSwipeToDismiss">false</item>
</style>

一旦您禁用它,您必须提供其他退出应用的方式。
有一个DismissOverlayView类(在此处列出: https://developer.android.com/training/wearables/apps/layouts.html#UiLibrary),您应该使用它。
基本上,它提供了一个叠加层,长按后会显示一个带有红色叉号按钮的界面。 点击红色按钮将退出您的应用程序。
enter image description here

这是Google I/O 2014年的视频,其中包含一些书签时刻:
https://www.youtube.com/watch?v=sha_w3_5c2c#t=1390 <- 禁用android:windowSwipeToDismiss
https://www.youtube.com/watch?v=sha_w3_5c2c#t=1505 <- DismissOverlayView的Java代码

您还可以查看另一个视频:
Android Wear全屏应用:
https://www.youtube.com/watch?v=naf_WbtFAlY


谢谢,我会看一下!DismissOverlay 对我可能不适用,因为我可能还需要长按事件。但是我会添加一些方法来解除。 - ui-jakob
请查看视频中的Java代码。他们使用GestureDetector和onLongPress()回调来通过调用mDismissOverlay.show()方法显示DismissOverlayView。您可以考虑另一种手势,并以相同的方式实现它:) 我认为覆盖退出应用程序的两个标准行为不好,因此我希望您的退出解决方案对用户明显且不会隐藏在任何地方:) 如果在您的情况下确实有必要重新考虑长按覆盖,请再次考虑:) 问候! - Maciej Ciemięga
我认为我可能会出于这个原因添加一个可见的按钮。但是我还没有决定。但是我完全同意您的观点,它需要明显易见。很不幸,我可能需要使用默认行为的两种方式。 - ui-jakob
有没有任何选项可以避免应用程序在用户点击屏幕时进入后台?我希望应用程序在用户点击屏幕时仍然可以在屏幕上继续执行。我尝试使用以下内容实现:https://developer.android.com/training/wearables/apps/always-on.html#EnableAmbient 和 https://developer.android.com/training/wearables/ui/exit.html 但是都没有起作用。请帮忙! :) - Cristian

9

您可以尝试编写AndroidManifest.xml主题

在activity标签内添加android:theme="@style/Theme.Wearable.Modal"

<activity
            android:name="com.smart.remote.wear.MainActivity"
            android:label="@string/app_name"
            android:theme="@style/Theme.Wearable.Modal">

0

如果您想要整个应用程序覆盖Swipe,请将主题属性放置在Manifest的<application>标签下。如果您只想将其应用于某个活动,则将该属性放置在该活动的<activity>标签下。

所以:

  1. 在res/values文件夹中创建或更新styles.xml,并添加android:windowSwipeToDismiss属性,例如:

    ... false

  2. 如果您想要覆盖整个应用程序中的Swipe,请更新您的Manifest如下:

    <application
            ...
            android:theme="@style/AppTheme">

如果您想在特定活动中覆盖滑动操作,请将您的清单文件更新如下:
    <activity
        ...
        android:theme="@style/AppTheme">
    </activity>

其中...代表您已经拥有的所有其他设置。请记住,根据您覆盖的级别,您需要提供活动和/或应用程序的替代方法。


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