? 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:
- Agregar
MaterialPreferencesView
en el diseño
- Proporcionar almacenamiento de preferencias: 3.1 Almacenamiento predeterminado – 3.1 Cualquier memoria personalizada que implemente la interfaz
PreferencesStorage
DefaultPreferencesStorage
- Crear pantalla de preferencias mediante MaterialPrefs DSL
MaterialPreferencesView
en el diseño PreferencesStorage
DefaultPreferencesStorage
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.
.