En los teléfonos Android, cuando se mantiene presionada una aplicación durante más de un segundo, ciertas acciones de la aplicación aparecen en una lista. Estas acciones de la aplicación no son más que accesos directos para realizar acciones sin abrir la aplicación. Consulte la captura de pantalla a continuación.
Estos accesos directos pueden ser predefinidos o codificados y nunca cambian (estáticos) en todo su ciclo de vida y, por lo tanto, se denominan accesos directos estáticos . Otro conjunto de accesos directos, que pueden cambiar con el tiempo o el contexto, se denominan accesos directos dinámicos . En este artículo, discutiremos e implementaremos accesos directos dinámicos en una aplicación de Android. El idioma principal para implementar la aplicación será Kotlin .
Nota: Para crear accesos directos estáticos de una aplicación de Android, consulte ¿Cómo crear accesos directos estáticos en la aplicación de Android?
Concepto detrás de la aplicación implementada
En este proyecto, cree una aplicación de Android en la que solo tengamos una actividad, es decir, MainActivity que muestre 2 botones , haga clic y agregue . No hicimos clic en ninguno de ellos. Lo que está programado dentro de la aplicación es mostrar 2 accesos directos inicialmente, Ask.fm e Instagram.com . Primero comprobamos si se muestran estos 2 accesos directos. Luego abrimos la aplicación y hacemos clic en el botón «Hacer clic » y cerramos la aplicación. Comprobamos de nuevo los accesos directos y ahora se cambian a Facebook.com y Google.com . El botón Click fue programado para cambiar los accesos directos dinámicamente. Volvemos a abrir la aplicación y hacemos clic en Agregarbotón y cierre la aplicación. Se agrega un nuevo atajo, NewlyAppended (caso de prueba) a la lista de Instagram y AskFM. De esta forma, se puede cambiar el número de accesos directos, así como el contexto dentro de ellos. Por lo general, el sistema Android acepta múltiples accesos directos (programados dentro de la aplicación), pero para la UX, solo muestra 4 de ellos.
Acercarse
Paso 1: Crear un nuevo proyecto
Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Kotlin como lenguaje de programación.
Paso 2: trabajar con el archivo activity_main.xml
Como hemos comentado antes añade 2 Botones , uno “Click” y otro “Append” en el archivo activity_main.xml . El archivo activity_main.xml completo se proporciona a continuación.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <!--Defining 2 Buttons, Click and Append--> <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="click" /> <Button android:id="@+id/append" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/btn" android:layout_centerHorizontal="true" android:text="append" /> </RelativeLayout>
Paso 3: trabajar con el archivo MainActivity.kt
- Para construir un atajo, se requieren dos elementos ShortcutManager y ShortcutBuilder . Consulte la siguiente estructura (programada en Kotlin):
var atajoManager = getSystemService(ShortcutManager::class.java)
var sampleShortcut = ShortcutInfo.Builder(applicationContext,”sampleID”)
.setShortLabel(“nombre de la muestra”)
.setIcon(Icon.createWithResource(Contexto de aplicación,R.drawable.sampleIcon))
.setIntent(Intent(Intent.ACTION_VIEW, ….sampleIntent…..))
.construir()
atajoManager!!.Atajos dinámicos = listOf(sampleShortcut)
Hay cuatro elementos básicos dentro de un acceso directo:
- setShortLabel: la string que aparece en el acceso directo cuando se mantiene la aplicación.
- setIcon: La imagen que aparece contra el atajo cuando se sostiene la aplicación.
- setIntent : la actividad a la que redirige el acceso directo.
- build: construye un acceso directo con entidades dadas.
- Hemos creado 4 intentos web que redirigen a 4 sitios web sociales diferentes Facebook, Instagram, AskFM y un caso de prueba «Recién agregado» para agregar otro intento a la lista actual.
- En el archivo «MainActivity.kt», declárelos y configure Oyentes al hacer clic para que las acciones puedan tener lugar cuando se hace clic en los botones.
- Los accesos directos se declaran directamente en el archivo «MainActivity.kt».
- Ahora que todos los módulos están listos, podemos definir nuestros accesos directos en el archivo “MainActivity.kt”
- El listof es una lista de atajos declarados que se mostrarán en esa lista. El número de accesos directos a declarar no tiene limitaciones, puede ser 1 o incluso 1000, pero para UX, el sistema permite mostrar solo hasta 4 accesos directos. Ahora consulte los códigos a continuación, se agregan comentarios para comprender cada elemento. A continuación se muestra el código completo del archivo MainActivity.kt .
MainActivity.kt
package org.geeksforgeeks.dynamic_shortcuts import android.content.Intent import android.content.pm.ShortcutInfo import android.content.pm.ShortcutManager import android.graphics.drawable.Icon import android.net.Uri import android.os.Build import android.os.Bundle import android.widget.Button import androidx.annotation.RequiresApi import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { @RequiresApi(Build.VERSION_CODES.N_MR1) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Shortcut Manager for managing the shortcuts var shortcutManager = getSystemService(ShortcutManager::class.java) // Defining a shortcut, Shortcut 1 var shortcut1 = ShortcutInfo.Builder(applicationContext, "ID1") .setShortLabel("Instagram") .setIcon(Icon.createWithResource(applicationContext, R.drawable.icon)) .setIntent(Intent(Intent.ACTION_VIEW, Uri.parse("https://www.instagram.com"))) .build() // Defining a shortcut, Shortcut 2 var shortcut2 = ShortcutInfo.Builder(applicationContext, "ID2") .setShortLabel("AskFM") .setIcon(Icon.createWithResource(applicationContext, R.drawable.icon)) .setIntent(Intent(Intent.ACTION_VIEW, Uri.parse("https://www.ask.fm"))) .build() // Show list of shortcuts when held shortcutManager!!.dynamicShortcuts = listOf(shortcut1, shortcut2) // When btn is clicked, changes are made to Shortcut 1 and Shortcut 2 val btn = findViewById<Button>(R.id.btn) btn.setOnClickListener { shortcut1 = ShortcutInfo.Builder(applicationContext, "ID1") .setShortLabel("Google") .setIcon(Icon.createWithResource(applicationContext, R.drawable.icon)) .setIntent(Intent(Intent.ACTION_VIEW, Uri.parse("https://www.google.com"))) .build() shortcut2 = ShortcutInfo.Builder(applicationContext, "ID2") .setShortLabel("Facebook") .setIcon(Icon.createWithResource(applicationContext, R.drawable.icon)) .setIntent(Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com"))) .build() shortcutManager!!.dynamicShortcuts = listOf(shortcut1, shortcut2) } // When add is clicked, a new shortcut is appended to the existing list of shortcuts val add = findViewById<Button>(R.id.append) add.setOnClickListener { var shortcut3 = ShortcutInfo.Builder(applicationContext, "ID3") .setShortLabel("NewlyAppended") .setIcon(Icon.createWithResource(applicationContext, R.drawable.icon)) .setIntent(Intent(Intent.ACTION_VIEW, Uri.parse("https://www.newlyAppended.com"))) .build() shortcutManager!!.dynamicShortcuts = listOf(shortcut1, shortcut2, shortcut3) } } }
Salida: ejecutar en el emulador
Publicación traducida automáticamente
Artículo escrito por aashaypawar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA