uso studio propiedades personalizado example descargar android android-layout android-gridview

android - studio - desplazamiento de fondo con el elemento en gridview



propiedades gridview android (3)

¿Cómo implemento el desplazamiento en segundo plano con una vista de cuadrícula? Si suena vago, me refiero a la implementación de una estantería utilizando una vista de cuadrícula donde la imagen del estante está adjunta a un elemento en la vista de cuadrícula.


Lo que hice fue dividir mi imagen de fondo en columnas n gridview y en mi vista de cuadrícula método getView agregar el fondo de vista de acuerdo con la posición en la grilla. Funcionó perfectamente.

Si quieres el código solo pregunta.


Me tomó mucho tiempo resolver esto, así que para todos los que intentan hacer esto, aquí está el código de mi lector de libros electrónicos.

Está basado en Shelves by Romain Guy, por lo que merece el crédito por el código original.

package net.nightwhistler.pageturner.view; import net.nightwhistler.pageturner.R; import net.nightwhistler.pageturner.library.LibraryBook; import net.nightwhistler.pageturner.library.QueryResult; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Rect; import android.util.AttributeSet; import android.view.KeyEvent; import android.widget.GridView; public class BookCaseView extends GridView { private Bitmap background; private int mShelfWidth; private int mShelfHeight; private QueryResult<LibraryBook> result; private LibraryBook selectedBook; public BookCaseView(Context context, AttributeSet attributes) { super(context, attributes); this.setFocusableInTouchMode(true); this.setClickable(false); final Bitmap shelfBackground = BitmapFactory.decodeResource(context.getResources(), R.drawable.shelf_single); setBackground(shelfBackground); this.setFocusable(true); } public void setBackground(Bitmap background) { this.background = background; mShelfWidth = background.getWidth(); mShelfHeight = background.getHeight(); } protected void onClick( int bookIndex ) { LibraryBook book = this.result.getItemAt(bookIndex); this.selectedBook = book; invalidate(); } @Override protected void dispatchDraw(Canvas canvas) { final int count = getChildCount(); final int top = count > 0 ? getChildAt(0).getTop() : 0; final int shelfWidth = mShelfWidth; final int shelfHeight = mShelfHeight; final int width = getWidth(); final int height = getHeight(); final Bitmap background = this.background; for (int x = 0; x < width; x += shelfWidth) { for (int y = top; y < height; y += shelfHeight) { canvas.drawBitmap(background, x, y, null); } //This draws the top pixels of the shelf above the current one Rect source = new Rect(0, mShelfHeight - top, mShelfWidth, mShelfHeight); Rect dest = new Rect(x, 0, x + mShelfWidth, top ); canvas.drawBitmap(background, source, dest, null); } super.dispatchDraw(canvas); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ( keyCode == KeyEvent.KEYCODE_BACK && this.selectedBook != null ) { this.selectedBook = null; invalidate(); return true; } return false; } }


Mi respuesta anterior solo agrega el fondo pero no permite que se desplace con los elementos. lo que quieres es la respuesta de NightWhistler :) Lo siento por malinterpretar la pregunta.