El Arsenal de Android: Preferencias

? Instalación

Agréguelo al archivo de la aplicación build.gradle :

  implementación   & # 39;  com.github.imangazalievm.material -prefs: core: [19659005] & # 39; 
  implementación  & # 39;  com.github.imangazalievm.material-prefs: dialogs:   & # 39; 
  implementación  & # 39;  com.github.imangazalievm.material-prefs: date-time:   & # 39; 
  implementación  & # 39;  com.github.imangazalievm.material-prefs: color-picker:   & # 39; 

Características

  • Comodo y DSL extensible
  • Configuraciones de apariencia flexibles
  • Ver Unificado en Lollipop y Pre-Lollipop
  • Posibilidad de usar almacenamiento personalizado
  • Preferencias predeterminadas
  • Temas claros y oscuros

? Uso [19659002] Para comenzar a usar la biblioteca debe realizar 3 pasos simples:

  1. Agregar MaterialPreferencesView en el diseño
  2. Proporcionar almacenamiento de preferencias: 3.1 Almacenamiento predeterminado – 3.1 Cualquier memoria personalizada que implemente la interfaz PreferencesStorage DefaultPreferencesStorage
  3. Crear pantalla de preferencias mediante MaterialPrefs DSL

Si desea utilizar DefaultPreferencesStorage necesita Suministro los valores iniciales a través de DefaultValuesContainer .

Paso 1 Coloque MaterialPreferencesView en el diseño:

  < com  .imangazalievm. materialprefs.views.MaterialPreferencesView
         android :  id  =   " @ + id / prefsView " 
   android :  layout_width  =   " match_parent " 
   android :  layout_height  =   " match_parent "    /> [19659043] Paso 2  Cree el archivo de preferencias y proporcione los valores iniciales: 

  val  defValues ​​ =  defaultPrefValues ​​{
      " my_string "    a   " Jhon Doe " 
    " my_int "    a  99 
      " my_long "    a  5L 
      " my_float "    a  2.5f 
      " my_boolean "    a  verdadero 
}

 val  almacenamiento  =  defaultPrefsStorage (  " my_prefs "  defValues) 

Paso 3 Agregar elementos pref a través de MaterialPrefs DSL: [19659056] prefs (prefsView, almacenamiento) {
categoría ( " Mi categoría " ) {
preferencia {
título ( " Mi entrada de preferencia " )
icono ( R .drawable.my_icon)
al hacer clic {
// mi acción
}
}
}
}

? Documentación

La biblioteca incluye 4 módulos:

  • core – contiene el código principal: preferencias simples, casilla de verificación, conmutador
  • diálogos – diálogos prefs: opción única y múltiple
  • fecha-hora – selectores de fecha y hora
  • selector de color – selector de color

Últimos tres módulos basados ​​en la biblioteca de colores diálogos materiales.

Núcleo

Preferencia simple:

  preferencia {
    título (  " Título " )
    resumen (  " Mi descripción " )
    icono ( R  .drawable.ic_my_icon)
    showArrow ( verdadero )
    al hacer clic {
          //  mi acción 
    }
} 

Interruptor:

  interruptor (  " my_key " ) {
    título (  " Título " )
    resumen (  " Mi descripción " )
    onChecked {isChecked  - > 
          //  mi acción 
    }
} 

Casilla de verificación:

  casilla de verificación (  " my_key " ) {
    título (  " Título " )
    resumen (  " Mi descripción " )
    onChecked {isChecked  - > 
          //  mi acción 
    }
} 

Preferencia de etiqueta:

  labelPreference (  " my_key "   String  ::  class ) {
    título (  " Título " )
    al hacer clic {
          //  mi acción 
    }
} 

Diálogos

Opción única:

  listSingleChoice (  " my_key "   Cadena  ::  clase  ) {
    título (  " Título " )
    icono ( R  .drawable.ic_my_icon)
    showRadioButtons ( true )
    elementos(
         listOf  (
             ListItem  (  " ar "    " Árabe " ),
             ListItem  (  " en "    " Inglés " ),
             ListItem  (  " ru "    " Ruso " )
        )
    )
} 

Opción múltiple:

  listMultiChoice (  " my_key "   String  ::  clase ) {
    título (  " Título " )
    allowEmptySelection ( falso )
      //  obligatorio 
    listValuesSerializer {it.joinToString ()}
      //  obligatorio 
    listValuesDeserializer {
         si  (it.isNotEmpty ()) {
            it.split (  "" )
                .map {número  - >  número.trim (). toInt ()}
        }  más  emptyList ()
    }
    elementos(
         listOf  (
             ListItem  (  " one "    " Item 1 " ),
             ListItem  (  " dos "    " Item 2 " ),
             ListItem  (  " tres "    " Item 3 " )
        )
    )
} 

Entrada de texto:

  textInput (  " my_key " ) {
    título (  " Título " )
    icono ( R  .drawable.ic_username)
    onNewInput {
          //  mi acción 
    }
} 

DateTime

Selector de fecha:

  datePicker (  " my_key " ) {
    título (  " Título " )
     val  formateador  =    SimpleDateFormat  (  " dd.MM.yyyy "   Local .  Estados Unidos )
    valuePresenter {formatter.format (it)}
    onValueSelected {
          //  mi acción 
    }
} 

Selector de tiempo:

  timePicker (  " my_key " ) {
    título (  " Título " )
     val  formateador  =    SimpleDateFormat  (  " hh: mm "   Local .  EE. UU. )
    valuePresenter {formatter.format (it)}
    onValueSelected {
          //  mi acción 
    }
} 

Fecha y selección:

  dateTimePicker (  " my_key " ) {
    título (  " Título " )
     val  formateador  =    SimpleDateFormat  (  " hh: mm dd.MM.yyyy "   Configuración regional  .  Estados Unidos )
    valuePresenter {formatter.format (it)}
    onValueSelected {
          //  mi acción 
    }
} 

ColorPicker

  colorPicker (  " my_key " ) {
    título (  " Título " )
     val  colores  =  intArrayOf ( Color .  ROJO   Color .  VERDE   Color .  AZUL )
    colores (colores)
    onColorSelected {
          //  mi acción 
    }
} 

Elemento de preferencia personalizado

Para crear un elemento de preferencia personalizado, debe realizar 3 pasos:

Paso 1: Crear la clase de vista de preferencias heredada de PreferenceView o BasePreferenceView . (
contexto : Contexto ,
attrs : AttributeSet ? = nulo ,
themeResId : Int = 0
) : BasePreferenceView (context, attrs, themeResId) {

anular diversión createValueView ( padre : ViewGroup ) : Ver {
return parent.inflate ( R .layout.my_pref_view)
}

}

Paso 2: Cree la clase de preferencia heredada de Preference o BasePreference e implemente 3 métodos:

  abstract    class    MyPreference  (
     clave :    Cadena ,
     contenedor :    PrefsContainer ,
     privado    val    aspectManager :    PreferencesAppearance 
) :    BasePreference  <  MyPreference   MyPreferenceView   String >  (
    contenedor  =  contenedor,
    clave  =  clave,
    AparienciaManager  =  AparienciaManager
) {

     anular    diversión    createView  () :    V  {
    }

     anular    diversión    loadValue  ( vista :    V ) {
    }
 
     anular    diversión    initView  ( vista :    V ) {
    }

} 

El tercer parámetro genérico de BasePreference es un tipo de datos, que se guardará en las preferencias, por lo que debe ser uno de los siguientes tipos:

  • String
  • Int
  • Long [19659016] Float
  • Boolean

Paso 3: Crear método de extensión para MaterialSettings :

  fun    myPreference  ( builder [19659088] :    PreferenceBuilder  <  MyPreference > ) {
     MyPreference  (contenedor, administrador de aspectos)
        .  se aplica  (fabricante)
        .  también  {addPreference (it)}
} 

? Licencia

  La licencia del MIT

Copyright (c) 2020 Mahach Imangazaliev

Por la presente, otorga permiso, sin cargo, a cualquier persona que obtenga una copia de este software y los archivos de documentación asociados (el "Software"), para tratar el Software sin limitación, incluidos, sin limitación, los derechos utilizar, copiar, modificar, fusionar, publicar, distribuir, licenciar y / o vender copias del Software y permitir que las personas a las que se proporciona el Software lo hagan, en las siguientes condiciones:

El aviso de copyright anterior y este aviso de permiso deben incluirse con todas las copias o partes sustanciales del Software.

EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO, PERO NO LIMITADO A, LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DE LOS DERECHOS DE AUTOR SERÁN RESPONSABLES DE CUALQUIER RECLAMO, DAÑO U OTRA RESPONSABILIDAD, YA SEA EN ACCIÓN CONTRACTUAL, ILEGAL O DE OTRA MANERA, QUE SURJA O EN RELACIÓN CON EL SOFTWARE O USO O OTROS TRATAMIENTOS EN EL SOFTWARE.

.

Compruebe también

La primera beta de Android 15

Publicado por David BurkeVicepresidente de Ingeniería Hoy lanzamos la primera versión beta de Android 15. …

Deja una respuesta

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