Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo mostrar anuncios de banner de forma intermitente en gridview

Estoy desarrollando una aplicación para Android que tendrá una pantalla similar a la siguiente imagen – Introduzca aquí la descripción de la imagen

Observe por favor el anuncio de la bandera entre las células. Como GridView no soporta este tipo de columnas, estoy en una pérdida en cuanto a qué hacer.

  • Soporte de Android lib v4 o v13
  • Android OkHttp, actualizar símbolo expirado
  • Android - Restringir arrastrar y soltar a un cuadro delimitador
  • Android, ¿cómo puedo eliminar los controles de VideoView?
  • Combinar dos mapas de bits en android
  • Android: ¿Cómo puedo pasar parámetros a OnPreExecute () de AsyncTask?
  • Proporcione cualquier sugerencia que pueda. Gracias por adelantado.

  • Malo rendimiento de SQLite en almacenamiento externo en Android
  • Guardar archivo en el directorio público usando Cordova FileTransfer
  • Archivo de texto adjunto de Android
  • ¿Por qué RecognitionListener dejó de trabajar en JellyBean?
  • Encontrar todos los estilos disponibles definidos por los temas de la plataforma Android
  • Permiso de comprobación de Android para LocationManager
  • 4 Solutions collect form web for “Cómo mostrar anuncios de banner de forma intermitente en gridview”

    Debe crear dos diseños para los elementos en Gridview Adapter. Uno para lo que desea mostrar y otro para adView y alternativamente colocar el diseño mientras se crea la vista.

    Compruebe esto para tener más idea.

    Bueno, creo que puedo darle ejemplos de código … En primer lugar, he añadido AsymmetricGridView .

    compile 'com.felipecsl.asymmetricgridview:library:2.0.1' 

    Utilizo esta guía . Resultó ser un adaptador adicional:

      ListAdapter ia = new PreviewsAdapter(mContext, currentPreviews).setAdsWidth(numRows); gridListView.setRequestedColumnWidth(Utils.dpToPx(mContext, 80)); gridListView.setAllowReordering(true); AsymmetricGridViewAdapter asymmetricAdapter = new AsymmetricGridViewAdapter<>(mContext, gridListView, ia); gridListView.setAdapter(asymmetricAdapter); gridListView.setOnItemClickListener(gridviewOnItemClickListener); 

    Preste atención a numRows . Antes de agregar una vista física no sabemos cuánto tendremos columnas. Y no podemos saber cuántas células (ancho) toma publicidad. Es posible que usted podrá utilizar el método estándar AsymmetricGridView.

    Tuve que usar este terrible código (en él atascado mis constantes.

      Display display = mContext.getWindowManager().getDefaultDisplay(); Point size = new Point(); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2){ display.getSize(size); } else { size.set(display.getWidth(), display.getHeight()); } final int mSize; if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { mSize = Math.min(size.x, size.y); } else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { mSize = Math.max(size.x, size.y) - Math.min(size.x, size.y); } else { mSize = Math.min(size.x, size.y); } int numRows = Math.round((float) mSize / (float) Utils.dpToPx(mContext, 100)); // 80 width cell item + 20 padding 

    Toda la magia del adaptador PreviewsAdapter extiende BaseAdapter

    Determinar dónde hay publicidad. Quiero en el medio

     adsId = currentPreviews.size() / 2; 

    Forjar una serie de entradas. Nuestras entradas nums + ad

     public int getCount() { return currentPreviews.size() + 1; } 

    Ahora devolveremos el objeto. Es nuestros miembros o publicidad.

     public Object getItem(int position) { if(adsId != position) { if(position >= adsId) { position-=1; } return currentPreviews.get(position); } else { return new AdsItem(this.numRows, 1); } } 

    Nuestro objeto debe implementar AsymmetricItem. Publicidad, también. Aquí hay un ejemplo de la publicidad de clase de objeto.

     public class AdsItem implements AsymmetricItem { private final int width; private final int height; public AdsItem(int adsWidth, int adsHeight) { width = adsWidth; height = adsHeight; } @Override public int getColumnSpan() { return width; } @Override public int getRowSpan() { return height; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel parcel, int i) { } } 

    GetRowSpan, getColumnSpan determina el ancho y la altura del objeto Ver en celdas.

    Y aquí está el método de obtener View:

      public View getView(int position, View convertView, ViewGroup parent) { if(adsId != position) { ImageView imageView; if (convertView == null) { imageView = new SquareImageView(mContext); imageView.setLayoutParams(new GridView.LayoutParams(GridView.LayoutParams.MATCH_PARENT, GridView.LayoutParams.MATCH_PARENT)); imageView.setPadding(10, 10, 10, 10); } else { imageView = (SquareImageView) convertView; } AvatarPart ap = (AvatarPart) getItem(position); Bitmap b = imgs.get(ap.getFile()); imageView.setImageBitmap(b); imageView.invalidate(); return imageView; } else { String adId = mContext.getResources().getString(R.string.add_id); AdView mAdView = new AdView(mContext); mAdView.setPadding(0, 15, 0, 15); mAdView.setAdSize(AdSize.BANNER); mAdView.setAdUnitId(adId); AdRequest adRequest = new AdRequest.Builder() .build(); if(mAdView.getAdSize() != null ) mAdView.loadAd(adRequest); return mAdView; } } 

    Pero no estoy seguro acerca de esta línea:

     imageView = (SquareImageView) convertView; 

    No sé si llegar allí AdView . Pero mientras no está roto: D

    Para manejar clics tuvo que escribir otro método.

     public AvatarPart getItemWithoutAds(int position) { if(position == adsId) return null; if(position >= adsId) { position-=1; } return currentPreviews.get(position); } 

    Este no es ciertamente el código más bonito, pero funciona. Resultado: Introduzca aquí la descripción de la imagen

    Implementar un ArrayAdapter personalizado, aquí hay un ejemplo: Desarrollar un adaptador personalizado

    En mi opinión, la mejor manera de hacerlo es usar RecyclerView con GridLayoutManager. Simplemente proporcione SpanSizeLookup para GridLayoutManager que puede determinar el tamaño de cada posición. Por ejemplo, la primera posición necesita ocupar la fila completa

     //Two items in a row int spanCount = 2; GridLayoutManager manager = new GridLayoutManager(getActivity(),spanCount); manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) { return (position == 0 ? spanCount : 1); } }); 

    En su adaptador de proporcionar dos tipos de elementos – elemento habitual y artículo de anuncio

    Es preferible establecer rellenos de elementos a través de ItemDecoration.

    Puedo proporcionar más código si es necesario

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.