ventajas vectoriales vectorial usos mapas mapa imagenes imagen graficos formatos entre diferencia desventajas cuadro comparativo caracteristicas android tiles

android - usos - ventajas y desventajas de imagenes vectoriales



Cómo seleccionar un mosaico en particular al hacer clic e inflar un mapa de bits en él en tileview android (1)

Estoy mostrando una imagen grande usando Tileview usando la biblioteca TileView

Ahora quiero mostrar un círculo en un límite recto cuando se hace clic en determinados mosaicos.

¿Cómo conseguir en qué azulejo se pinchó? ¿Y cómo mostrar BitMmap sobre ese mosaico?

public class LargeImageTileViewActivity extends TileViewActivity { TileView tileView; @Override public void onCreate( Bundle savedInstanceState ) { super.onCreate( savedInstanceState ); // multiple references tileView = getTileView(); // by disabling transitions, we won''t see a flicker of background color when moving between tile sets tileView.setTransitionsEnabled( false ); // size of original image at 100% scale tileView.setSize( 2835, 4289 ); // detail levels tileView.addDetailLevel( 1.000f, "tiles/painting/1000/%col%_%row%.jpg"); tileView.addDetailLevel( 0.500f, "tiles/painting/500/%col%_%row%.jpg"); tileView.addDetailLevel( 0.250f, "tiles/painting/250/%col%_%row%.jpg"); tileView.addDetailLevel( 0.125f, "tiles/painting/125/%col%_%row%.jpg"); // set scale to 0, but keep scaleToFit true, so it''ll be as small as possible but still match the container tileView.setScale( 0 ); // let''s use 0-1 positioning... tileView.defineRelativeBounds( 0, 0, 1, 1 ); // frame to center frameTo( 0.5, 0.5 ); tileView.addTileViewEventListener( listener ); } private TileViewEventListenerImplementation listener = new TileViewEventListenerImplementation(){ public void onTap( int x, int y ) { SampleCallout callout = new SampleCallout(LargeImageTileViewActivity.this); tileView.slideToAndCenter(x, y); //Toast.makeText(mContext, "Center " + tempStore.getCenterX() + " " + tempStore.getCenterY(), Toast.LENGTH_SHORT).show(); tileView.addCallout(callout, x, y, -0.5f, -1.0f); callout.transitionIn(); } }; }


Al excavar un poco en la biblioteca, me parece que no podrá obtener el mosaico sin modificar el código (es posible que no necesite obtener el mosaico, vea más en la opción 2), aunque es de código abierto. , para que puedas hacer tus modificaciones localmente y partir desde allí.

Primera opción:

Primera modificación que necesitas:

En https://github.com/moagrius/TileView/blob/master/src/com/qozix/tileview/detail/DetailManager.java

Agregue el siguiente código:

public DetailLevel getCurrentDetailLevel() { return currentDetailLevel; }

En https://github.com/moagrius/TileView/blob/master/src/com/qozix/tileview/TileView.java

public DetailManager getDetailManager() { return detailManager; }

Esto expone el método que necesita en DetailLevel, por ejemplo

public LinkedList<Tile> getIntersections()

La cual devolverá los mosaicos en su puerto de vista actual, cada mosaico sabe que está delimitado por la izquierda / derecha y arriba / abajo, para que pueda recorrer los mosaicos y encontrar el que hizo clic.

Segunda opción (recomendada si es posible):

Ya que conoce los rects para todas sus cosas, simplemente puede agregar HotSpots, en la biblioteca parece que los HotSpots son rects que admiten escuchas de clics.

Puedes agregar un HotSpot como este:

HotSpot hotSpot = new HotSpot(left, top, right, bottom); hotSpot.setHotSpotEventListener(this); tileView.addHotSpot(hotSpot); .... public void onHotSpotTap(HotSpot hotSpot, int x, int y){ Do your gui update using the supplied hotSpot above }

Más información: https://github.com/moagrius/TileView/blob/master/src/com/qozix/tileview/hotspots/HotSpot.java

Añadiendo el circulo

La biblioteca admite marcadores, simplemente puede agregar una vista de imagen con su círculo como el marcador, así

ImageView view = new ImageView (this); view.setImageResource(circleId); tileView.addMarker (view, tile.x, tile.y);