Hola a todos. Soy algo nueva en esto de la programacion y en B4A, y gracias a este maravilloso programa y a este foro he logrado hacer mis "mini" aplicaciones para uso personal / pedagogico. No soy alguien que pretende poner aplicaciones en el Play Store, ya que no se me ocurriria como monetizarlas (ademas no tengo el privilegio de poder permitirme el pagar una cuenta, como maestra de colegio particular no se gana muy bien, y en mi voluntariado menos, si fuesen gratuitas me haria una y tal vez probaria el crear y subir aplicaciones), en fin, la biblioteca:
Tal vez no soy muy lista con esto de la programacion, asi que algo con lo que he batallado desde que inicie en B4A, ha sido en los benditos layouts y las variants. Me he repasado el tutorial en video de Erel, pero muchas veces sobrecargo mis aplicaciones y no me gusta como quedan usando los anclajes que tiene el designer, el editor que tiene este a veces es un suplicio (definir porcentajes control por control, batallar con el DIP, etc). Asi que me puse a jugar con los valores, y logre hacer un pequeño codigo que me permite crear mi diseño en el designer, y olvidarme de los ajustes (solo sigo batallando con el tamaño de los textos).
Tal fue el exito que obtuve con mi pequeño codigo, que lo empece a usar en todos mis proyectos, y me ha dado buenos resultados, por lo que me lance a hacer una biblioteca.
Su funcionamiento es simple:
1.- Abrir el designer.
2.- Agregar las vistas (sin cambiar la variant elegida y comentar el autoscale.
3.- Declararlo en Globals, inciarlo en Activity_Create y ejecutarlo en Activity Resume.
Listo!, las vistas se escalan en los dispositivos en la misma proporcion que se ve en el Designer sobre la variant por defecto.
Funciona asi:
Aclaro: El codigo anterior solo afecta a las vistas dentro del avtivity, es decir, no afecta a las vistas mas pequeñas. Me explico, si hay un activity, dentro de el un panel, y dentro del panel un label, solo afecta el redimensionado al parent del activity, es decir, al panel, por lo que el label no se vera afectado. Para que el contenido del Panel tambien se redimensione (o sea, el label), despues de redimensionar el Activity se llama a autoscale.PanelRedimensionar, o si se esta usando un scrollview, se llamara a autoscale.ScrollViewRedimensionar.
Espero haberme explicado de forma clara.
AutoDimension
Version: 1
Eventos:
Redimensiona las Vistas Dentro de un Panel.
Redimensionar Vistas Dentro de un Panel (Segunda Funcion para trabajar dos paneles a la vez
Notas:
-Diseñar con el Variant que abre por defecto al abrir el designer.
-Comentar el autoscale en el código del designer.
-No cambiar los anclajes que van por defecto.
-En InitializePanel se debe de poner el tamaño del panel dado en el designer (este se escalara proporcionalmente a la pantalla que se use).
-Dado por sentado que para un ScrollView se usara un Layout hecho de un Panel que contendrá en su interior los controles, en InitializeScroll, se debe de poner el tamaño dado en el designer del panel de ese Layout a cargar.
Proximas actualizaciones (si nada me lo impide y logro encontrar las soluciones):
-Cambio automatico del tamaño del Texto (por lo pronto se puede usar un AutoSize Label para algunas cosas basicas).
Tal vez es una cosilla de nada, pero cuando empece hubiese deseado tener algo asi (y a la vez lo utilizo siempre en mis proyectos).
Espero ayude a alguien con esta pequeña libreria, y si puedo ayudar agegandole cosas, con confianza haganmelo saber.
Saludos!
Tal vez no soy muy lista con esto de la programacion, asi que algo con lo que he batallado desde que inicie en B4A, ha sido en los benditos layouts y las variants. Me he repasado el tutorial en video de Erel, pero muchas veces sobrecargo mis aplicaciones y no me gusta como quedan usando los anclajes que tiene el designer, el editor que tiene este a veces es un suplicio (definir porcentajes control por control, batallar con el DIP, etc). Asi que me puse a jugar con los valores, y logre hacer un pequeño codigo que me permite crear mi diseño en el designer, y olvidarme de los ajustes (solo sigo batallando con el tamaño de los textos).
Tal fue el exito que obtuve con mi pequeño codigo, que lo empece a usar en todos mis proyectos, y me ha dado buenos resultados, por lo que me lance a hacer una biblioteca.
Su funcionamiento es simple:
1.- Abrir el designer.
2.- Agregar las vistas (sin cambiar la variant elegida y comentar el autoscale.
3.- Declararlo en Globals, inciarlo en Activity_Create y ejecutarlo en Activity Resume.
Listo!, las vistas se escalan en los dispositivos en la misma proporcion que se ve en el Designer sobre la variant por defecto.
Funciona asi:
B4X:
Sub Globals
Dim autoscale As AutoDimension
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("main")
autoscale.Initialize(Activity)
End Sub
Sub Activity_Resume
autoscale.ActivityRedimensionar
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Aclaro: El codigo anterior solo afecta a las vistas dentro del avtivity, es decir, no afecta a las vistas mas pequeñas. Me explico, si hay un activity, dentro de el un panel, y dentro del panel un label, solo afecta el redimensionado al parent del activity, es decir, al panel, por lo que el label no se vera afectado. Para que el contenido del Panel tambien se redimensione (o sea, el label), despues de redimensionar el Activity se llama a autoscale.PanelRedimensionar, o si se esta usando un scrollview, se llamara a autoscale.ScrollViewRedimensionar.
Espero haberme explicado de forma clara.
AutoDimension
Version: 1
- AutoDimension
Metodos:- Initialize (NombreActivity As Activity)
- Inicializa el Activity para redimensionar sus vistas. Inicializar en Activity Create. Lanzar en el Activity Resume.
- InitializePanel (PanelNombre As Panel, Ancho As Int, Alto As Int)
- Inicializa el Panel para redimensionar sus vistas. El Ancho y el Alto deben de ser los mismos que los dados en el Designer.
- InitializePanel2 (PanelNombre As Panel, Ancho As Int, Alto As Int)
- Inicializa el Panel para redimensionar sus vistas. El Ancho y el Alto deben de ser los mismos que los dados en el Designer.
- InitializeScroll (ScrollViewNombre As ScrollView, PanelScrollView As Panel, AnchoPanel As Int, AltoPanel As Int)
- Inicializa el Scroll View y el Panel que ira dentro de el para ajustarlo y redimensionar sus vistas.
Eventos:
- ActivityRedimensionar
- Redimensiona automaticamente todas las vistas del Activity. No aplica a vistas dentro de un Panel o un ScrollView.
- PanelRedimensionar
- Panel2Redimensionar
- ScrollViewRedimensionar
- Redimensionar el Panel que ira dentro de un ScrollView y las vistas correspondientes dentro de el.
Notas:
-Diseñar con el Variant que abre por defecto al abrir el designer.
-Comentar el autoscale en el código del designer.
-No cambiar los anclajes que van por defecto.
-En InitializePanel se debe de poner el tamaño del panel dado en el designer (este se escalara proporcionalmente a la pantalla que se use).
-Dado por sentado que para un ScrollView se usara un Layout hecho de un Panel que contendrá en su interior los controles, en InitializeScroll, se debe de poner el tamaño dado en el designer del panel de ese Layout a cargar.
Proximas actualizaciones (si nada me lo impide y logro encontrar las soluciones):
-Cambio automatico del tamaño del Texto (por lo pronto se puede usar un AutoSize Label para algunas cosas basicas).
Tal vez es una cosilla de nada, pero cuando empece hubiese deseado tener algo asi (y a la vez lo utilizo siempre en mis proyectos).
Espero ayude a alguien con esta pequeña libreria, y si puedo ayudar agegandole cosas, con confianza haganmelo saber.
Saludos!
Attachments
Last edited: