Crear extensiones para AppInventor (Propiedades) 5

En este POST hablaremos de como programar las propiedades, las propiedades podrán modificarse no solo desde el área de bloque sino desde el área del diseñador como cuando usamos componentes visuales.

Las propiedades son variables publicas de las clases a las que accede mediante funciones «Get_» para obtener su valor y «Set_» para cambiarles el valor, en realidad esta funciones pueden llamarse como deseemos pero lo normal es que las nombremos así.

Nuestro ejemplo tendrá un método «Multiplica» al que le pasamos un parámetro y lo multiplicara por el valor de la propiedad «multiplicador» de forma que retornara el resultado. A esta clase la llamaremos Propiedades y el fuente que es el que estudiaremos se encuentra en https://github.com/pinguytaz/extAppInventor/blob/main/Ejemplos/src/losejemplos/Propiedades.java

Las propiedades de la clase serán privadas y se accederán a ellas mediante los métodos públicos caracterizados por la anotación @SimpleProperty para que convierta ese método como un bloque propiedad. Estos métodos tendrán dos misiones:

  • Dar un valor «Get_» que no tendrán parámetro y si un retorno que es el valor de la propiedad.
  • Poner un valor en la propiedad «Set_» que no retornan ningún valor y tendrán un parámetro con el valor a poner en la propiedad.
private int multiplicador = 0; //Definimos la propiedad como privada y serán lo métodos publicos quien traten su valor.

 @SimpleProperty (category = PropertyCategory.BEHAVIOR, description="Retorna el valor del multiplicador")
   public int Get_multiplicador() {
      return multiplicador;
   }
   @SimpleProperty (category = PropertyCategory.BEHAVIOR, description="Pone el valor al multiplicador")
   public void Set_multiplicador(int multiplicador) {
       this.multiplicador=multiplicador;
   }

Los parámetros que tendrá la anotación @SimpleProperty son:

  • description En el que pondremos la descripción del bloque.
  • userVisible que pondremos a true para que la propiedad sea visible por el usuario, salvo que como veremos más adelante sea una propiedad del diseñador y no queramos que aparezca en el area de bloques, que en ese caso pondremos a false
  • category que se utilizara si la propiedad se tiene que ver en el área de diseño @DesignerProperty que se ve más adelante. Estas propiedades son «PropertyCategory. <VALOR>» y pueden ser: BEHAVIOR (cambia comportamiento del componente), APPEARANCE (Cambia apariencia),
    APPLICATION (Propiedad de la aplicación) y por regla general pondremos «BEHAVIOR«

Ya hemos visto lo sencillo que es pero también podemos tener propiedades que se modifiquen y vean desde el área de diseño, de la misma forma que vemos las propiedades de los controles visuales, para esto definimos @DesignerProperty antes de lo método junto a @SimpleProperty, los parámetros en este caso son:

  • editorType (Cadena): Tipo de editor que se mostrará en la propiedad PropertyTypeConstants.PROPERTY_TYPE_<tipo>: STRING, BOOLEAN, COLOR, COMPONET, FLOAT, INTEGER, TEXT, TEXTALIGNMENT, TYPEFACE (Letra), CHOICE (Ver editorArgs), etc.
  • defaultValue (Cadena): Valor por defecto de la propiedad.
  • editorArgs (String[]): Si el tipo es PROPERTY_TYPE_CHOICES, en editorArgs especificamos los valores permitidos.
  • AlwaysSend (booleano): Si es verdadero, siempre se enviará el valor de la propiedad, por defecto es falso.

En este caso el nombre del método sera el que salga en las propiedades del diseñador, así que no seguiremos la nomenclatura «Set_ y Get_» y solo tendremos uno (seria el SET) ya que se modifica en tiempo de diseño. Aunque podremos tener también métodos en el área de bloques para ver el valor o tocar esa propiedad en el área de bloques.

 // Propiedad de diseño
   @DesignerProperty(editorType = PropertyTypeConstants.PROPERTY_TYPE_BOOLEAN)   // Vemos que definimos tipo Check
   @SimpleProperty (category = PropertyCategory.BEHAVIOR, userVisible=false, description="Pone si se multiplica o no por 10.")
   public void MultiplicaPorDiez(boolean por10) {
       this.por10=por10;
   }
   // Propiedad que si se vera en el area de bloques y nos dará el valor de la propiedad.
   @SimpleProperty (description="Multiplica por 10 o no")
   public boolean Get_por10() {
       return por10;
   }

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Javier.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a Hostinger.es que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Ver
Privacidad