Spanish [B4A][TUTORIAL] Tabhost deslizantes

josete

Member
Licensed User
Bueno intentare hacer un minitutorial sobre como usar esta libreria para hacer tabhost deslizables ,ya que me parecio sencilla (puesto que entendi como funciona ,y normalmente me cuesta bastante...) y ademas me gustaria ahorrar dolores de cabeza ya que se por experiencia propia lo que es tener que batallar con tutoriales en ingles y ademas de entender lo que dice ,entender como lo hace.Al grano....
¿Que se necesita?
-La libreria AHViewPager2_02 http://www.basic4ppc.com/android/forum/threads/ahviewpager-library-sliding-panels-now-perfect.14165/#content
para instalarla ,como siempre descomprimir y copiar los archivos .jar y .xml dentro de la carpeta libraries,en mi ordenador por ejemplo esta aqui:
C:\Program Files (x86)\Anywhere Software\Basic4android\Libraries
-La libreria android-support-v4.jar library , ya que esta view esta basada en android 4 y se necesita para que soporte versiones anteriores a la 4
Hay que copiarla tambien en la carpeta libreries.Si no la tienes ,en el enlace anterior explica como conseguirla (El texto en rojo)
¿Como usarla?
-
Esta libreria se basa principalmente en tres elementos:
AHViewPager ,que se podria decir que es el objeto principal que contiene todos los demas.
AHPageContainer ,es basicamente un contenedor de paginas (que pueden ser paneles en los que se carguen layouts).
AHViewPagerTabs ,que es la parte superior del tabhost ,que indica la pagina que se esta viendo actualmente,con el subrayado.Este elemento
es opcional,si no se pone solo tendremos los paneles deslizables.
Hay tambien un objeto AHViewPagerFixedTabs que no he usado ya que se supone que es parecido al tabhost original que no es deslizable.
Paso 1
-Seleccionar la libreria AHViewPager en el proyecto (A la derecha ,abajo,pestaña libs ) y añadir las variables correspondientes en Sub Globals
Code:
Sub GlobalsDim container As AHPageContainerDim pager As AHViewPager'Optionally you can use an AHViewPagerTabs object as a page indicatorDim tabs As AHViewPagerTabsEnd Sub
Paso 2
-Inicializar el AHPageContainer ,crear los paneles y añadirlos al AHPageContainer
en este caso se crean 5 paneles con colores al azar y se añaden al AHPageContainer.En
lo paneles se pueden añadir views o cargar un layout.
Code:
container.InitializeFor i = 1To5Dim pan AsPanel
pan.Initialize("pan")
pan.Color = Colors.RGB(Rnd(0, 150), Rnd(0,150), Rnd(0,150))
container.AddPage(pan,"Pagina" & i) 'Se añade la pagina al AHPageContainerNext
Paso 3
-Cuando ya tengamos el contenido creado,ya se puede inicializar el AHViewPager
pasandole como parametros la variable container(el AHPageContainer) y un nombre
sus eventos:
Code:
pager.Initialize(container, "Pager")
Paso 4
Si queremos prescindir de las tabs superiores,podriamos insertar el objecto en la
Activity :
Code:
Activity.AddView(pager, 0, 0, Activity.Width, Activity.Height)
y ya tendriamos lista la aplicacion,Pero si queremos añadir las tabs,hay que hacerlo

antes de añadir el pager(AHViewPager) a la Activity,es decir saltarnos este
paso e ir al 5

Paso 5

-Inicializar el AHViewPagerTabs (recordemos ,la variable tabs) pasandole como
parametro el pager (AHViewPager) y le indicamos el alto de la barra debajo del titulo
del panel que estmos viendo (5dip por ejemplo) y se añade a la Activity.
Code:
tabs.Initialize(pager)
tabs.LineHeight = 5dip
Activity.AddView(tabs, 0, 0, 100%x, 30dip)
Paso 6
-Una vez el AHViewPager completo ,ya se puede añadir a la Activity,teniendo en cuenta
la altura que le dimos al tab (30dip) para descontarlo:
Code:
Activity.AddView(pager, 0, 30dip, Activity.Width, Activity.Height-30dip)
Ejemplo completo:
Code:
Sub Process_Globals
End SubSub GlobalsDim container As AHPageContainerDim pager As AHViewPager'Optionally you can use an AHViewPagerTabs object as a page indicatorDim tabs As AHViewPagerTabsEnd SubSub Activity_Create(FirstTime AsBoolean)
container.InitializeFor i = 1To5Dim pan AsPanel
pan.Initialize("pan")
pan.Color = Colors.RGB(Rnd(0, 150), Rnd(0,150), Rnd(0,150))
container.AddPage(pan,"Pagina" & i) 'Se añade la pagina al AHPageContainerNext
pager.Initialize(container, "Pager")
tabs.Initialize(pager)
tabs.LineHeight = 5dip
Activity.AddView(tabs, 0, 0,100%x, 30dip)
Activity.AddView(pager, 0, 30dip, Activity.Width, Activity.Height-30dip)End Sub
y listo!!!!
Esta libreria ha sido creada por Corwin42,agradecedselo a el .El ejemplo que pongo esta basado en el ejemplo que viene con la liberia ,obviando algunas cosas para hacerlo mas sencillo.
 
Top