Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿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).

  • Creación eficiente de LayoutInflater
  • Inflar diseño de forma programática en otro diseño
  • Inflar fragmentos con el paquete de compatibilidad android
  • ¿Puede explicar alguien inflar método? Mayor comprensión de las vistas de Android
  • Botón de acción flotante y error de inflación de biblioteca de diseño
  • Android + ListFragment con una jerarquía de vista personalizada
  • 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?

  • ¿Cómo crear el diseño de una vista personalizada de forma programática?
  • Cambiar los archivos de diseño en la misma actividad
  • ¿Cómo animar el cambio de texto en TextView?
  • Llenando un círculo gradualmente de abajo a arriba android
  • Inflar diseño de forma programática en otro diseño
  • Búsqueda de la posición de visualización (posición) en la pantalla (pantalla) en android
  • One Solution collect form web for “¿Es posible tomar una captura de pantalla de una vista, sin mostrar la vista?”

    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); } } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.