Aiuto scorciatoie da tastiera

L'Assistente scorciatoie da tastiera consente agli utenti di scoprire le scorciatoie da tastiera per la piattaforma e le app aperte. Pubblica le scorciatoie dell'app nell'Assistente scorciatoie da tastiera per migliorare la produttività e la facilità d'uso degli utenti.

Gli utenti possono premere Meta+/ per aprire la schermata delle scorciatoie da tastiera, disponibile su Android 7.0 (livello API 24) e versioni successive.

Figura 1. Aiuto scorciatoie da tastiera.

Fornisci scorciatoie per l'Assistente scorciatoie da tastiera

Puoi fornire gli elenchi di scorciatoie da tastiera disponibili all'Assistente scorciatoie da tastiera sostituendo il callback della finestra onProvideKeyboardShortcuts(). Lo snippet seguente mostra un'implementazione di onProvideKeyboardShortcuts() per aggiungere un gruppo di quattro scorciatoie:

class MainActivity : ComponentActivity() {
    // Activity codes such as overridden onStart method.

    override fun onProvideKeyboardShortcuts(
        data: MutableList<KeyboardShortcutGroup>?,
        menu: Menu?,
        deviceId: Int
    ) {
        val shortcutGroup = KeyboardShortcutGroup(
            "Cursor movement",
            listOf(
                KeyboardShortcutInfo("Up", KeyEvent.KEYCODE_P, KeyEvent.META_CTRL_ON),
                KeyboardShortcutInfo("Down", KeyEvent.KEYCODE_N, KeyEvent.META_CTRL_ON),
                KeyboardShortcutInfo("Forward", KeyEvent.KEYCODE_F, KeyEvent.META_CTRL_ON),
                KeyboardShortcutInfo("Backward", KeyEvent.KEYCODE_B, KeyEvent.META_CTRL_ON),
            )
        )
        data?.add(shortcutGroup)
    }
}

KeyboardShortcutInfo descrive una scorciatoia da tastiera. L'elenco delle scorciatoie da tastiera viene aggregato come oggetto KeyboardShortcutGroup. Le app notificano le scorciatoie da tastiera disponibili all'Assistente scorciatoie da tastiera aggiungendo gli oggetti KeyboardShortcutGroup all'elenco modificabile passato come primo parametro del metodo.

Organizzare le scorciatoie da tastiera con i gruppi

L'helper per le scorciatoie da tastiera mostra le scorciatoie da tastiera in gruppi separati in modo che gli utenti possano trovare le scorciatoie in base al caso d'uso o per le schermate della tua app. La Figura 2 mostra le scorciatoie da tastiera suddivise in due gruppi: movimento del cursore e modifica dei messaggi.

Figura 2. Categorie nell'Assistente scorciatoie da tastiera.

L'app registra due o più gruppi di scorciatoie da tastiera creando un oggetto KeyboardShortcutGroup per ogni gruppo. Nello snippet seguente, vengono aggiunti due oggetti KeyboardShortCutGroup all'elenco modificabile passato al metodo onProvideKeyboardShortcuts(). Gli oggetti vengono visualizzati come categorie nell'Assistente scorciatoie da tastiera, come mostra la Figura 2.

override fun onProvideKeyboardShortcuts(
    data: MutableList<KeyboardShortcutGroup>?,
    menu: Menu?,
    deviceId: Int
) {
    val cursorMovement = KeyboardShortcutGroup(
        "Cursor movement",
        listOf(
            KeyboardShortcutInfo("Up", KeyEvent.KEYCODE_P, KeyEvent.META_CTRL_ON),
            KeyboardShortcutInfo("Down", KeyEvent.KEYCODE_N, KeyEvent.META_CTRL_ON),
            KeyboardShortcutInfo("Forward", KeyEvent.KEYCODE_F, KeyEvent.META_CTRL_ON),
            KeyboardShortcutInfo("Backward", KeyEvent.KEYCODE_B, KeyEvent.META_CTRL_ON),
        )
    )

    val messageEdit = KeyboardShortcutGroup(
        "Message editing",
        listOf(
            KeyboardShortcutInfo("Select All", KeyEvent.KEYCODE_A, KeyEvent.META_CTRL_ON),
            KeyboardShortcutInfo("Send a message", KeyEvent.KEYCODE_ENTER, KeyEvent.META_SHIFT_ON)
        )
    )

    data?.add(cursorMovement)
    data?.add(messageEdit)
}

Apri l'Assistente scorciatoie da tastiera dal codice

Le app mostrano la schermata delle scorciatoie da tastiera chiamando il metodo requestShowKeyboardShortcuts(). Nello snippet seguente, l'Assistente scorciatoie da tastiera si apre quando gli utenti toccano o fanno clic sul pulsante oppure premino il tasto Invio.

val activity = LocalContext.current as Activity

Button(onClick = { activity.requestShowKeyboardShortcuts() }) {
    Text(text = "Show keyboard shortcuts")
}