Cómo mosaico de un mapa de bits en una lona
Me gustaría crear un aspecto de papel gráfico para el mapa de bits que estoy dibujando a través de un lienzo, y tratando de averiguar la mejor manera de hacer esto.
No puedo pasar un mapa de bits de origen que contenga el fondo de gráfico para el constructor de lienzo, ya que estoy recibiendo el lienzo en un SurfaceView a través de la llamada .lockCanvas ().
- La aplicación se bloquea al escalar el mapa de bits en lienzo
- Android toma la captura de pantalla mediante programación
- Convertir la matriz de bytes de 4 bits en escala de grises a Bitmap Android
- Android - Enmascarar un mapa de bits con otro mapa de bits
- Cómo escalar mapas de bits en View.Canvas en Android?
Algunas soluciones que he probado:
-
He intentado implementar esta solución en Thread.run () de mi SurfaceView, pero el problema que creo es cuando el BitmapDrawable se convierte en un mapa de bits … pierde las propiedades de mosaico.
Canvas = mSurfaceHolder.lockCanvas (null); BitmapDrawable TileMe = new BitmapDrawable (BitmapFactory.decodeResource (getResources (), R.drawable.editor_graph)); TileMe.setTileModeX (Shader.TileMode.REPEAT); TileMe.setTileModeY (Shader.TileMode.REPEAT);
Bitmap b = TileMe.getBitmap (); Canvas.drawBitmap (b, 0, 0, null);
-
Si utilizo el método Canvas.drawBitmap que toma un destino RectF como un parámetro , parece que el mapa de bits se mosaico para rellenar el RectF … pero ¿cómo puedo declarar un RectF de forma fiable que llena todo el área de vista?
- También no funciona el ajuste del fondo de las actividades a la apariencia de papel gráfico deseada, ya que el diseño de mapa de bits / lienzo es opaco y bloquea su visualización.
¿Alguna idea de cómo lograrlo?
- Cómo obtener la altura de la vista dentro del adaptador para crear bitmap de tamaño?
- Android: BitmapDrawable.Draw (lienzo) No parece funcionar
- Visualización de la imagen del perfil FB en vista de imagen circular en la aplicación
- Android: reduce el tamaño del archivo de imagen
- Cambiar el tamaño de la imagen en la notificación de estilo bigpicture
- Android - cómo evitar la memoria sobre la carga mediante mapas de bits?
- Android: Cómo centrar las imágenes de recorte sin escala
- ¿Cómo posiciono mi mapa de bits en el lienzo usando una matriz?
Usted tiene dos soluciones fáciles:
- Utilice un BitmapDrawable, pero en lugar de extraer el Bitmap, simplemente llame a BitmapDrawable.draw (Canvas). No olvide establecer los límites del dibujable para llenar su área de dibujo.
- Crear una pintura con un BitmapShader y dibujar un rectángulo con él (esto es básicamente lo que hace BitmapDrawable).
Estoy seguro de que hay una manera de obtener un efecto de mosaico con un SurfaceView
. Desafortunadamente, parece que no puede utilizar el BitmapDrawable
con un lienzo. Por lo que probablemente tendría que implementar su propio método de mosaico personalizado mediante la creación de su propia serie de Rect
's en el Canvas
y el dibujo de un mapa de bits a escala de cada uno.
Sinceramente, no sería tan difícil. Basta con obtener la anchura / altura de la vista, y crear una matriz de Rect
's sobre la base de estos datos que va a dibujar el Bitmap
de Bitmap
.
Alternativamente, si usted no necesita hacer modificaciones al fondo de mosaico real sobre la marcha, sólo dibujar como un fondo y dibujar el SurfaceView
en la parte superior de la misma. Ese mensaje que enlazó proporcionó múltiples soluciones al mosaico de un BitmapDrawable
que podría implementar.
- Android – Agregar y mostrar elementos a ListView uno a la vez usando un ArrayAdapter
- ¿Hay alguna manera de cambiar el nombre de una aplicación en la tienda de aplicaciones de Google Play?