Crear dibujable a partir del diseño

¿Hay alguna forma de generar un objeto dibujable a partir de un diseño?

De hecho, necesito una parte recortada de mi diseño inicial, y mi idea es transformar el diseño en un objeto dibujable y luego recortarlo.

preguntado el 10 de mayo de 11 a las 13:05

Bien, pero ¿qué pasará con el comportamiento de los controles en ese dibujable? Incluso si es texto puro, me temo que se verá feo. En mi opinión, si desea reutilizar ese diseño, es mejor establecer Visibilidad (View.GONE) para los elementos que deberían desaparecer. -

No hay nada de malo en tomar una captura de pantalla de antemano si funciona. Así es como las aplicaciones de iPhone se "cargan" tan rápidamente. -

ver stackoverflow.com/questions/28657088/… para obtener una respuesta completa que tiene una alternativa para la respuesta a continuación que no funcionó para mí. -

1 Respuestas

Una versión simple:

Bitmap snapshot = null;
    Drawable drawable = null;
    yourView.setDrawingCacheEnabled(true);
    yourView.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_LOW); //Quality of the snpashot
    try {
        snapshot = Bitmap.createBitmap(yourView.getDrawingCache(), sizes and stuff); // You can tell how to crop the snapshot and whatever in this method
        drawable = new BitmapDrawable(snapshot)
    } finally {
        yourView.setDrawingCacheEnabled(false);
    }

contestado el 10 de mayo de 11 a las 18:05

Gracias por la respuesta, pero yourView.getDrawingCache () devuelve nulo. - Gratzi

Asegúrese de obtener este mapa de bits después de yourView.setDrawingCacheEnabled (true); Y si obtiene un mapa de bits tan simple como eso (sin copiarlo y demás) y luego establece yourView.setDrawingCacheEnabled (false); se volverá nulo ya que la caché fue deshabilitada. - Alex Orlov

Estoy usando el código anterior exactamente, con algunos valores de dimensión para el nuevo elemento de diseño. - Gratzi

Extraño. Esta trabajando bien para mi. ¿Dónde ha colocado este código? Tenga en cuenta que debe llamarse después de que se haya renderizado la vista, por lo que onCreate () no es la opción correcta. - Alex Orlov

También debería intentar depurar o llamar a createBitmap sin ningún parámetro de tamaño y comprobar si funcionará. - Alex Orlov

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.