¿Es posible tomar una captura de pantalla de una vista, sin mostrar la vista?

Pregunta corta:

Supongamos que tengo algún tipo de archivo de diseño y lo hincho (o utilizar los CTOR normales en el código).

En lugar de mostrar la vista inflada, deseo tomar una "captura de pantalla" (un mapa de bits) de cómo se vería con algunas limitaciones (de ancho y altura dados, incluso más grande que la pantalla).

No deseo añadir la vista a ningún lugar en la pantalla, pero sólo la mantengo para este propósito y tal vez agregarla más tarde.

Tal cosa podría ser útil para manipulaciones fáciles de cómo colocar las cosas. Por ejemplo, podría utilizar un diseño que una imagen se pondría dentro de él para que tenga un marco alrededor de él.

¿Es posible tal cosa? ¿Si es así, cómo?

OK, he encontrado una manera posible de hacerlo, basado en este enlace :

 public static Bitmap drawToBitmap(Context context,final int layoutResId, final int width,final int height) { final Bitmap bmp = Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888); final Canvas canvas = new Canvas(bmp); final LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); final View layout = inflater.inflate(layoutResId,null); layout.setDrawingCacheEnabled(true); layout.measure( MeasureSpec.makeMeasureSpec(canvas.getWidth(),MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(canvas.getHeight(),MeasureSpec.EXACTLY)); layout.layout(0,0,layout.getMeasuredWidth(),layout.getMeasuredHeight()); canvas.drawBitmap(layout.getDrawingCache(),0,0,new Paint()); return bmp; } 

Ejemplo de uso:

 public class MainActivity extends ActionBarActivity { @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final ImageView iv = (ImageView)findViewById(R.id.image); final DisplayMetrics metrics = getResources().getDisplayMetrics(); final Bitmap b = drawToBitmap(this,R.layout.test, metrics.widthPixels, metrics.heightPixels); iv.setImageBitmap(b); } } 
  • ¿Cuál es la diferencia entre captura de pantalla y screencap en shell de adb?
  • Cómo tomar una captura de pantalla de Android (Emulator) utilizando esta biblioteca y dónde puedo obtener las capturas de pantalla
  • Android usando el generador de arte de dispositivo para capturas de pantalla
  • Cómo tomar imágenes de emulador con Eclipse?
  • ¿Necesito capturas de pantalla para tablets Android de 7 y 10 pulgadas?
  • Captura de captura de pantalla en el teléfono Android durante la reproducción de vídeo y vista previa de la cámara
  • Tomar captura de pantalla de la pantalla actual del dispositivo
  • Necesito establecer la ruta para guardar las imágenes con una aplicación para Android e IOS con UNITY
  • La captura de pantalla DDMS no funciona
  • GetDrawingCache mientras que el estilo NoTitleBar establecido para la aplicación en Android
  • Captura de pantalla programática en dispositivo móvil
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.