Spanish [SOLUCIONADO] Tamaño del Banner Publicitario

mlc

Active Member
Licensed User
Hola a todos,

Este es el código, que pienso utilizar, para decidir que tipo de banner voy a mostrar, dependiendo de si es tablet o teléfono.
Estaría bien, si es posible, que lo probarais y así entre todos pulir el código, a ver si podemos tener un standard para este tema.
Utiliza la libreria Admob 2.00

B4X:
Sub Globals
    Dim AdView1 As AdView
    Dim AD_SIZE As Object
    Dim adWidth As Int
    Dim adHeight As Int
End Sub
B4X:
Sub Activity_Create(FirstTime As Boolean)
    'inicializar el adview
    AdBarInit
End Sub
B4X:
Sub AdBarInit
    'Pulgadas del dispositivo
    Dim ApproximateScreenSize As Double = GetDeviceLayoutValues.ApproximateScreenSize
   
    'Independientemente de si es Portrait o landscape
    Dim Ancho As Int
    If Activity.width < Activity.height Then Ancho = Activity.width Else Ancho = Activity.height
   
    'compruebo si es tablet o teléfono
    If ApproximateScreenSize > 6 Then
        'tablet 7 y 10
        If Ancho < 728 Then
            AD_SIZE = AdView1.SIZE_IAB_BANNER
            adWidth = 468dip
            adHeight = 60dip
        Else
            AD_SIZE = AdView1.SIZE_IAB_LEADERBOARD
            adWidth = 728dip
            adHeight = 90dip
        End If
    Else
        ' telèfono
        AD_SIZE = AdView1.SIZE_BANNER
        adWidth = 320dip
        adHeight = 50dip
    End If

    AdView1.Initialize2("Ad", "ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx", AD_SIZE) 
    Activity.AddView(AdView1, 50%x-(adWidth/2), 0, adWidth, adHeight)
    AdView1.LoadAd
End Sub
Saludos
 
D

Deleted member 30048

Guest
Hola, veo que no usas el SMART_BANNER. Con eso te evitas las complicaciones ya que te lo hace automáticamente, lo malo es que para las tablets siempre usa 90dip de ancho y para una tablet de 7" girada es excesivo, en ese caso no uso el SMART_BANNER sino que establezco uno de 60dip. También me he dado cuenta que para los móviles siempre usas 50dip de ancho, yo personalmente prefiero utilizar 32dip cuando está girado para que ocupe menos. Este es mi algoritmo:

B4X:
Sub Globals
    Dim Publicidad as Adview
End Sub
B4X:
Sub Activity_Create(FirstTime As Boolean)
    Activar_Publicidad
End Sub
B4X:
Sub Activar_Publicidad
        Dim TamanoOcupaPublicidad As Int
        If GetDeviceLayoutValues.ApproximateScreenSize > 6 AND GetDeviceLayoutValues.ApproximateScreenSize < 9 AND Activity.Width > Activity.Height Then 'Es una tablet de 7 pulgadas girada. Smart_banner pone el ancho en 90dip, con esto lo pongo en 60dip
            Publicidad.Initialize2("Ad", "ca-app-pub-xxxxxxxxxxxxxxxxxxxxx", Publicidad.SIZE_IAB_BANNER)
            TamanoOcupaPublicidad = 60dip
        Else 'Moviles y tablets excepto tablet de 7'' girada.
            Publicidad.Initialize2("Ad", "ca-app-pub-xxxxxxxxxxxxxxxxxxxx", Publicidad.SIZE_SMART_BANNER)
            If GetDeviceLayoutValues.ApproximateScreenSize < 6 Then
              If 100%x > 100%y Then TamanoOcupaPublicidad = 32dip Else TamanoOcupaPublicidad = 50dip 'Teléfonos
            Else
               TamanoOcupaPublicidad = 90dip 'Tablets
            End If
        End If
        Activity.AddView(Publicidad, 0dip, 100%y -  TamanoOcupaPublicidad, 100%x,  TamanoOcupaPublicidad)
        Publicidad.LoadAd
End Sub

Un Saludo
 
Last edited by a moderator:
  • Like
Reactions: mlc

mlc

Active Member
Licensed User
Hola cbc551,
Gracias por compartir tu código.

Personalmente me gusta más que el mío, sólo haría un pequeño cambio en los teléfonos.
Tienes razón que en según que teléfonos el de 50dip en horizontal, ocupa demasiado, pero por ejemplo el G S4, el S5 o el note tienen pantallas lo suficientemente grandes como para insertar el de 50dip. Por lo demás perfecto.

Por debajo de un alto de 720, lo dejaría en 32dip y por encima o igual a 720 en 50dip.
Quedaría así:
B4X:
Sub Activar_Publicidad
        Dim TamanoOcupaPublicidad As Int
        If GetDeviceLayoutValues.ApproximateScreenSize > 6 AND GetDeviceLayoutValues.ApproximateScreenSize < 9 AND Activity.Width > Activity.Height Then 'Es una tablet de 7 pulgadas girada. Smart_banner pone el ancho en 90dip, con esto lo pongo en 60dip
            Publicidad.Initialize2("Ad", "ca-app-pub-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", Publicidad.SIZE_IAB_BANNER)
            TamanoOcupaPublicidad = 60dip
        Else 'Moviles y tablets excepto tablet de 7'' girada.
            Publicidad.Initialize2("Ad", "ca-app-pub-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", Publicidad.SIZE_SMART_BANNER)
            If GetDeviceLayoutValues.ApproximateScreenSize < 6 Then
                If 100%x > 100%y Then
                    If 100%y < 720 Then
                          TamanoOcupaPublicidad = 32dip 'Teléfonos horizontal
                    Else
                        TamanoOcupaPublicidad = 50dip 'Teléfonos horizontal
                    End If
                Else
                    TamanoOcupaPublicidad = 50dip 'Teléfonos vertical
                End If
            Else
               TamanoOcupaPublicidad = 90dip 'Tablets
            End If
        End If
        Activity.AddView(Publicidad, 0dip, 100%y -  TamanoOcupaPublicidad, 100%x,  TamanoOcupaPublicidad)
        Publicidad.LoadAd
End Sub
¿Qué te parece?

Saludos
 
Last edited:
D

Deleted member 30048

Guest
Hola de nuevo. No está mal, debería de hacer pruebas a ver que tal queda ya que da la casualidad que tengo un móvil grande y otro pequeño :-D. Por cierto, ya sé que debería preguntarlo en otro post distinto pero ya que estamos hablando de publicidad, ¿sabes o alguien sabe como poner los vídeos publicitarios de admob?

Saludos
 

mlc

Active Member
Licensed User
Pues curiosamente, esta mañana, necesitaba un ID de anuncio intersticial para una app y me encontrado con lo que ves en la imagen adjunta.
No recordaba que estuviera la opción de video, creo que antes sólo había texto e imagen.
 

Attachments

mlc

Active Member
Licensed User
Hola cbc551,

En el post #2, hay un pequeño error en esta linea, deberías cambiar 6dip por 6, ya que estamos hablando de pulgadas.
If GetDeviceLayoutValues.ApproximateScreenSize > 6dip AND GetDeviceLayoutValues.ApproximateScreenSize < 9 AND
If GetDeviceLayoutValues.ApproximateScreenSize > 6 AND GetDeviceLayoutValues.ApproximateScreenSize < 9 AND
Saludos
 
D

Deleted member 30048

Guest
Hostia! Tonterías como esa son las que luego te sacan de tus casillas buscando el error y no lo encuentras. Lo raro es que funcione y no me haya dado error nunca.

Lo cambio.

Gracias!
 
Top