Android – Disegna Bitmap all'interno della canvas

Attualmente ho un gioco di labirinti che disegna un quadrato di 5 x 5 (prende la width dello schermo e lo divide in modo uniforms). Quindi per ognuna di queste caselle usando le coordinate x e y I disegnatore utente, per disegnare uno background colorato.

Il problema che sto avendo è che ora devo disegnare un'image all'interno di questa stessa posizione, sostituendo quindi l'attuale riempimento a colors di background normale.

  • Perché non posso utilizzare il task graded connectedDebugAndroidTest nel mio script di build?
  • creando l'attività di base con il cassetto di navigazione in android
  • Android: Unità di verifica delle applicazioni Android con Robolectric e Mockito
  • Crea un collegamento app nell'interno di Launcher personalizzato in Android
  • Come leggere più codici qr da un'image utilizzando la libreria zxing
  • Calcolo della distanza dalla mia posizione alla posizione di destinazione in android
  • Ecco il codice attualmente utilizzato per disegnareRect (alcuni esempi):

    // these are all the variation of drawRect that I use canvas.drawRect(x, y, (x + totalCellWidth), (y + totalCellHeight), green); canvas.drawRect(x + 1, y, (x + totalCellWidth), (y + totalCellHeight), green); canvas.drawRect(x, y + 1, (x + totalCellWidth), (y + totalCellHeight), green); 

    Avrei anche bisogno di implementare un'image di background per tutte le altre caselle all'interno della mia canvas. Questo background avrà linee semplici 1px nere disegnate sulla parte superiore di esso, codice corrente da disegnare in uno background grigio.

     background = new Paint(); background.setColor(bgColor); canvas.drawRect(0, 0, width, height, background); 

    Puoi chiedere consigli se questo è alquanto ansible. In caso affermativo, qual è il modo migliore per fare questo, cercando di ridurre al minimo l'utilizzo della memory e di avere un'image che si espanderà e ridurrà per riempire lo spazio quadrato del relnet (questo varia in tutte le diverse size dello schermo in quanto divide il totale schermo in modo uniforms).

  • Modo corretto per popolare il listView con oggetti object?
  • Replica il pannello inferiore di Google Maps Swipe Up
  • Rileva se l'applicazione Android è stata installata sul dispositivo utilizzando una pagina web mobile - PHP e JS
  • Integrazione Google+ di Google - ripetuto UserRecoverableAuthException
  • Classe di exception per la stessa class su Android
  • Frammenti suResume dalla pila posteriore
  • 2 Solutions collect form web for “Android – Disegna Bitmap all'interno della canvas”

    Utilizzare il metodo Canvas public void drawBitmap (Bitmap bitmap, Rect src, RectF dst, Paint paint) . Impostare dst sulla dimensione del rettangolo in cui si desidera ridimensionare l'intera image.

    EDIT:

    Ecco una ansible implementazione per disegnare le bitmap in piazze sulla canvas. Suppone che le bitmap siano in un arrays bidimensionale (ad esempio Bitmap bitmapArray[][]; ) e che la canvas è quadrata in modo che il rapporto quadrato bitmap non sia distorto.

     private static final int NUMBER_OF_VERTICAL_SQUARES = 5; private static final int NUMBER_OF_HORIZONTAL_SQUARES = 5; 

      int canvasWidth = canvas.getWidth(); int canvasHeight = canvas.getHeight(); int squareWidth = canvasWidth / NUMBER_OF_HORIZONTAL_SQUARES; int squareHeight = canvasHeight / NUMBER_OF_VERTICAL_SQUARES; Rect destinationRect = new Rect(); int xOffset; int yOffset; // Set the destination rectangle size destinationRect.set(0, 0, squareWidth, squareHeight); for (int horizontalPosition = 0; horizontalPosition < NUMBER_OF_HORIZONTAL_SQUARES; horizontalPosition++){ xOffset = horizontalPosition * squareWidth; for (int verticalPosition = 0; verticalPosition < NUMBER_OF_VERTICAL_SQUARES; verticalPosition++){ yOffset = verticalPosition * squareHeight; // Set the destination rectangle offset for the canvas origin destinationRect.offsetTo(xOffset, yOffset); // Draw the bitmap into the destination rectangle on the canvas canvas.drawBitmap(bitmapArray[horizontalPosition][verticalPosition], null, destinationRect, null); } } 

    Prova il seguente codice:

     Paint paint = new Paint(); paint.setAntiAlias(true); paint.setFilterBitmap(true); paint.setDither(true); canvas.drawBitmap(bitmap, x, y, paint); 

    ==================

    Si potrebbe anche riferirsi a questa risposta .

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.