El arsenal de Android: complementos de Gradle
Admite fácilmente múltiples tamaños de pantalla escalando sus dimensiones.
Contenidos
¿Cómo funciona Xdimen?
Si tiene un diseño de interfaz de usuario con una dimensión específica y necesita admitir diferentes teléfonos o tabletas en modo vertical u horizontal. Este caso Xdim puede ayudarlo a generar dimensiones escalables para los tamaños de pantalla de los dispositivos más populares.
Xdimen genera un directorio res alternativo para cada ancho de pantalla común (configurable) y escala las dimensiones de su diseño.
Los recursos XML se generan utilizando el generador XML de Kotlin
Puede encontrar más información sobre Xdimen aquí
propósito de uso
Agregar al proyecto
Xdimen debe aplicarse en un proyecto de Android.
maravilloso
plugins {
id 'io.github.islamkhsh.xdimen' version "$latest_version"
// agp plugin
}
kotlin
plugins {
id("io.github.islamkhsh.xdimen") version "$latest_version"
// agp plugin
}
Configurar Xdimen
Todas las propiedades son solo opcionales. designWidth
necesario. Las propiedades se analizan con más detalle en la siguiente sección.
maravilloso
xdimen {
deleteOldXdimen = true
designWidth = 411 // required
designDpi = mdpi()
targetDevicesWidth = [360, 375, 411]
dimensRange {
minDimen = -10
maxDimen = 600
step = 0.5d
}
fontsRange {
minDimen = 10
maxDimen = 60
step = 1.0d
}
}
kotlin
xdimen {
deleteOldXdimen.set(true)
designWidth.set(411) // required
designDpi.set(mdpi())
targetDevicesWidth.set(phonePortrait)
dimensRange {
minDimen.set(-10)
maxDimen.set(500)
step.set(0.5)
}
fontsRange {
minDimen.set(10)
maxDimen.set(60)
step.set(1.0)
}
}
Usar dimensiones escaladas
Después de generar recursos xdimen (consulte la siguiente sección), puede usar las dimensiones
<TextView android:layout_width="@dimen/x100dp" # width in design is 100dp
android:layout_height="@dimen/x50_5dp" # height in design is 50.5dp
android:padding="@dimen/neg_x6_5dp" # padding in design is -6.5dp
android:textSize="@dimen/x12sp" # textSize in design is 12sp
/>
Tareas
Para ejecutar una tarea, asegúrese de ejecutarla en un proyecto de Android de una de estas maneras
$ gradle :prjectName:taskName
.- Desde la ventana de la herramienta Gradle a continuación
android
Grupo. - Fuera de
Run AnyThing
Ventana.
generateXdimen
Genera recursos alternativos para cada ancho de dispositivo en targetDevicesWidth
está configurado y para cada identificador de recurso creado, las dimensiones se escalan para que coincidan con ese ancho. Utiliza propiedades configuradas para calcular un factor de escala, obtener el rango de dimensiones para generar y la lista de anchos de pantalla de destino.
deleteXdimen
Elimine los recursos xdimen generados anteriormente a menos que haya cambiado el nombre del archivo o directorio res. Se ejecutará de antemano generateXdimen
si contratas deleteOldXdimen
propiedad por verdadero.
propiedades de configuración
eliminarOldXdimen
Configurándolo en tiempo de ejecución generateXdimen
tarea deleteXdimen
se ejecuta primero para eliminar todos los recursos xdimen generados previamente y sus directorios si el directorio solo contiene xdimen.xml
Archivo.
Si cambió el nombre de la
xdimen.xml
archivo o su directorio por cualquier motivo, este archivo no se elimina.
Valor por defecto: verdadero.
ancho de diseño
El valor del ancho de pantalla de tu tema en dp
Unidad. se usa con designDpi
para calcular el ancho de diseño relativo (ancho relativo a la densidad principal mdpi
) y luego calcule un factor de escala para cada ancho de pantalla en targetDevicesWidth
.
Si tu diseño está incluido
px
establezca su ancho en esta propiedad y establezcadesignDpi
ser – estarmdpi
como en mdpi 1px = 1dp.
Sin valor predeterminado, ya que es obligatorio y debe configurarse.
diseñoDpi
Para densidad de pantalla de diseño (puntos por pulgada), vea más. Esto se usa con designWidth
para calcular el ancho de diseño relativo.
El valor predeterminado es: mdpi
Densidades Predefinidas: Para cada densidad en densidades comunes hay un método por su nombre (
ldpi()
,mdpi()
,hdpi()
… etc.) Además, hay un método para establecer una densidad personalizadadpi(value)
.
targetDevicesWidth
El ancho de las pantallas de los dispositivos a los que apunta. Se genera un recurso alternativo con dimensiones escaladas para cada ancho en esta lista.
Ej.: Si la lista es [350, 400] entonces
...
-> values/xdimen.xml # Devices with screen-width less than 350dp.
-> values-w350dp/xdimen.xml # 350dp <= screen-width < 400dp
-> values-w400dp/xdimen.xml # screen-width >= 400dp
...
Puede usar un conjunto predefinido tal cual, agregarlo o eliminarlo, o proporcionar su propio conjunto.
El valor predeterminado es: [designWidth] conjunto de valor proporcionado designWidth.
Conjuntos predefinidos para dispositivos comunes:
phonePortrait
: teléfonos comunes en modo retrato.phoneLandscape
: teléfonos comunes en modo horizontal.tabletPortrait
: tabletas comunes en modo retrato.tabletLandscape
: tabletas comunes en modo horizontal.
devicesInPortrait
: Teléfonos y tabletas comunes en modo vertical.devicesInLandscape
: Teléfonos y tabletas comunes en modo horizontal.Puede combinar varias listas de dispositivos, pero le recomiendo que no apunte a la orientación vertical y horizontal a menos que proporcione un diseño horizontal personalizado o utilice el diseño del panel.
Estas listas se recopilaron de muchas fuentes: Wikipedia, ScreenSize, Pixensity y otras.
rango de dimensiones
El rango de dimensiones que desea generar y escalar.
minDimen
: el mínimo a generar.maxDimen
: la dimensión máxima a generar.step
: el paso entre dos dimensiones generadas.
Valor por defecto: Dimensión mínima=-10, maxDimens = 600, Paso = 1.00.
rango de fuentes
lo mismo de dimensRange
pero para las dimensiones de la fuente son suficientes.
Valor por defecto: Dimensión mínima = 6, dimensión máxima=48, Paso = 1.00.