I created a class called "MyTileOverlay" by extending TilesOverlay and continuing this class:
https://code.google.com/p/osmdroid/source/browse/trunk/osmdroid-android/src/main/java/org/osmdroid/views/overlay/TilesOverlay.java?r=1086
Then when setting up mapview, I do this:
this.mTilesOverlay = new MyTileOverlay(mProvider, this.getBaseContext());
As stated in kurtzmarc, I used handleTile () to check if all tiles are loaded or not:
@Override public void handleTile(final Canvas pCanvas, final int pTileSizePx, final MapTile pTile, final int pX, final int pY) { Drawable currentMapTile = mTileProvider.getMapTile(pTile); if (currentMapTile == null) { currentMapTile = getLoadingTile(); Log.d("Tile Null", "Null"); } else { Log.d("Tile Not Null", "Not Null"); } if (currentMapTile != null) { mTileRect.set(pX * pTileSizePx, pY * pTileSizePx, pX * pTileSizePx + pTileSizePx, pY * pTileSizePx + pTileSizePx); onTileReadyToDraw(pCanvas, currentMapTile, mTileRect); } if (DEBUGMODE) { mTileRect.set(pX * pTileSizePx, pY * pTileSizePx, pX * pTileSizePx + pTileSizePx, pY * pTileSizePx + pTileSizePx); mTileRect.offset(-mWorldSize_2, -mWorldSize_2); pCanvas.drawText(pTile.toString(), mTileRect.left + 1, mTileRect.top + mDebugPaint.getTextSize(), mDebugPaint); pCanvas.drawLine(mTileRect.left, mTileRect.top, mTileRect.right, mTileRect.top, mDebugPaint); pCanvas.drawLine(mTileRect.left, mTileRect.top, mTileRect.left, mTileRect.bottom, mDebugPaint); } }
This method ensures that the download procedure is completed or not:
@Override public void finaliseLoop() { Log.d("Loop Finalized", "Finalized"); }
I can also use this method to determine if all tiles have been loaded or not:
public int getLoadingBackgroundColor() { return mLoadingBackgroundColor; }
Hope this helps someone!